diff --git a/.eslintrc.yaml b/.eslintrc.yaml index ba6334b0346985..1362c9cb29e387 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -97,7 +97,7 @@ rules: key-spacing: [2, {mode: minimum}] keyword-spacing: 2 linebreak-style: [2, unix] - max-len: [2, 80, 2] + max-len: [2, {code: 80, ignoreUrls: true, tabWidth: 2}] new-parens: 2 no-mixed-spaces-and-tabs: 2 no-multiple-empty-lines: [2, {max: 2, maxEOF: 0, maxBOF: 0}] diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 24b66f8b2f8b4d..8b133a64e09d68 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -13,9 +13,7 @@ Contributors guide: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md - [ ] `make -j4 test` (UNIX), or `vcbuild test nosign` (Windows) passes - [ ] tests and/or benchmarks are included - [ ] documentation is changed or added -- [ ] commit message follows [commit guidelines][] +- [ ] commit message follows [commit guidelines](https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#commit-guidelines) ##### Affected core subsystem(s) - -[commit guidelines]: https://github.com/nodejs/node/blob/master/CONTRIBUTING.md#commit-guidelines diff --git a/.gitignore b/.gitignore index 4f129c4581ba8f..f8f99f5f839389 100644 --- a/.gitignore +++ b/.gitignore @@ -6,7 +6,7 @@ !tools/doc/node_modules/**/.* !.editorconfig !.eslintignore -!.eslintrc +!.eslintrc.yaml !.gitattributes !.github !.gitignore diff --git a/CHANGELOG.md b/CHANGELOG.md index ff24baf55faa72..3bf1747aa7b37c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,7 +28,8 @@ release. - 7.8.0
+ 7.9.0
+ 7.8.0
7.7.4
7.7.3
7.7.2
diff --git a/Makefile b/Makefile index 410f643c91bd59..f3b41f6c0bd18e 100644 --- a/Makefile +++ b/Makefile @@ -95,38 +95,38 @@ uninstall: $(PYTHON) tools/install.py $@ '$(DESTDIR)' '$(PREFIX)' clean: - -rm -rf out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) \ + $(RM) -r out/Makefile $(NODE_EXE) $(NODE_G_EXE) out/$(BUILDTYPE)/$(NODE_EXE) \ out/$(BUILDTYPE)/node.exp - @if [ -d out ]; then find out/ -name '*.o' -o -name '*.a' -o -name '*.d' | xargs rm -rf; fi - -rm -rf node_modules - @if [ -d deps/icu ]; then echo deleting deps/icu; rm -rf deps/icu; fi - -rm -f test.tap + @if [ -d out ]; then find out/ -name '*.o' -o -name '*.a' -o -name '*.d' | xargs $(RM) -r; fi + $(RM) -r node_modules + @if [ -d deps/icu ]; then echo deleting deps/icu; $(RM) -r deps/icu; fi + $(RM) test.tap distclean: - -rm -rf out - -rm -f config.gypi icu_config.gypi config_fips.gypi - -rm -f config.mk - -rm -rf $(NODE_EXE) $(NODE_G_EXE) - -rm -rf node_modules - -rm -rf deps/icu - -rm -rf deps/icu4c*.tgz deps/icu4c*.zip deps/icu-tmp - -rm -f $(BINARYTAR).* $(TARBALL).* - -rm -rf deps/v8/testing/gmock + $(RM) -r out + $(RM) config.gypi icu_config.gypi config_fips.gypi + $(RM) config.mk + $(RM) -r $(NODE_EXE) $(NODE_G_EXE) + $(RM) -r node_modules + $(RM) -r deps/icu + $(RM) -r deps/icu4c*.tgz deps/icu4c*.zip deps/icu-tmp + $(RM) $(BINARYTAR).* $(TARBALL).* + $(RM) -r deps/v8/testing/gmock check: test # Remove files generated by running coverage, put the non-instrumented lib back # in place coverage-clean: - if [ -d lib_ ]; then rm -rf lib; mv lib_ lib; fi - -rm -rf node_modules - -rm -rf gcovr testing - -rm -rf out/$(BUILDTYPE)/.coverage - -rm -rf .cov_tmp coverage - -rm -f out/$(BUILDTYPE)/obj.target/node/src/*.gcda - -rm -f out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda - -rm -f out/$(BUILDTYPE)/obj.target/node/src/*.gcno - -rm -f out/$(BUILDTYPE)/obj.target/node/src/tracing*.gcno + if [ -d lib_ ]; then $(RM) -r lib; mv lib_ lib; fi + $(RM) -r node_modules + $(RM) -r gcovr testing + $(RM) -r out/$(BUILDTYPE)/.coverage + $(RM) -r .cov_tmp coverage + $(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcda + $(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda + $(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcno + $(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing*.gcno # Build and test with code coverage reporting. Leave the lib directory # instrumented for any additional runs the user may want to make. @@ -147,16 +147,16 @@ coverage-build: all if [ ! -f gcovr/scripts/gcovr.orig ]; then \ (cd gcovr && patch -N -p1 < \ "$(CURDIR)/testing/coverage/gcovr-patches.diff"); fi - if [ -d lib_ ]; then rm -rf lib; mv lib_ lib; fi + if [ -d lib_ ]; then $(RM) -r lib; mv lib_ lib; fi mv lib lib_ $(NODE) ./node_modules/.bin/nyc instrument lib_/ lib/ $(MAKE) coverage-test: coverage-build - -rm -rf out/$(BUILDTYPE)/.coverage - -rm -rf .cov_tmp - -rm -f out/$(BUILDTYPE)/obj.target/node/src/*.gcda - -rm -f out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda + $(RM) -r out/$(BUILDTYPE)/.coverage + $(RM) -r .cov_tmp + $(RM) out/$(BUILDTYPE)/obj.target/node/src/*.gcda + $(RM) out/$(BUILDTYPE)/obj.target/node/src/tracing/*.gcda -$(MAKE) $(COVTESTS) mv lib lib__ mv lib_ lib @@ -456,7 +456,7 @@ docopen: $(apidocs_html) @$(PYTHON) -mwebbrowser file://$(PWD)/out/doc/api/all.html docclean: - -rm -rf out/doc + $(RM) -r out/doc build-ci: $(PYTHON) ./configure $(CONFIG_FLAGS) @@ -631,8 +631,8 @@ release-only: fi $(PKG): release-only - rm -rf $(PKGDIR) - rm -rf out/deps out/Release + $(RM) -r $(PKGDIR) + $(RM) -r out/deps out/Release $(PYTHON) ./configure \ --dest-cpu=x64 \ --tag=$(TAG) \ @@ -663,24 +663,24 @@ $(TARBALL): release-only $(NODE_EXE) doc mkdir -p $(TARNAME)/doc/api cp doc/node.1 $(TARNAME)/doc/node.1 cp -r out/doc/api/* $(TARNAME)/doc/api/ - rm -rf $(TARNAME)/deps/v8/{test,samples,tools/profviz,tools/run-tests.py} - rm -rf $(TARNAME)/doc/images # too big - rm -rf $(TARNAME)/deps/uv/{docs,samples,test} - rm -rf $(TARNAME)/deps/openssl/openssl/{doc,demos,test} - rm -rf $(TARNAME)/deps/zlib/contrib # too big, unused - rm -rf $(TARNAME)/.{editorconfig,git*,mailmap} - rm -rf $(TARNAME)/tools/{eslint,eslint-rules,osx-pkg.pmdoc,pkgsrc} - rm -rf $(TARNAME)/tools/{osx-*,license-builder.sh,cpplint.py} - rm -rf $(TARNAME)/test*.tap - find $(TARNAME)/ -name ".eslint*" -maxdepth 2 | xargs rm - find $(TARNAME)/ -type l | xargs rm # annoying on windows + $(RM) -r $(TARNAME)/deps/v8/{test,samples,tools/profviz,tools/run-tests.py} + $(RM) -r $(TARNAME)/doc/images # too big + $(RM) -r $(TARNAME)/deps/uv/{docs,samples,test} + $(RM) -r $(TARNAME)/deps/openssl/openssl/{doc,demos,test} + $(RM) -r $(TARNAME)/deps/zlib/contrib # too big, unused + $(RM) -r $(TARNAME)/.{editorconfig,git*,mailmap} + $(RM) -r $(TARNAME)/tools/{eslint,eslint-rules,osx-pkg.pmdoc,pkgsrc} + $(RM) -r $(TARNAME)/tools/{osx-*,license-builder.sh,cpplint.py} + $(RM) -r $(TARNAME)/test*.tap + find $(TARNAME)/ -name ".eslint*" -maxdepth 2 | xargs $(RM) + find $(TARNAME)/ -type l | xargs $(RM) # annoying on windows tar -cf $(TARNAME).tar $(TARNAME) - rm -rf $(TARNAME) + $(RM) -r $(TARNAME) gzip -c -f -9 $(TARNAME).tar > $(TARNAME).tar.gz ifeq ($(XZ), 0) xz -c -f -$(XZ_COMPRESSION) $(TARNAME).tar > $(TARNAME).tar.xz endif - rm $(TARNAME).tar + $(RM) $(TARNAME).tar tar: $(TARBALL) @@ -709,14 +709,14 @@ $(TARBALL)-headers: release-only --release-urlbase=$(RELEASE_URLBASE) \ $(CONFIG_FLAGS) $(BUILD_RELEASE_FLAGS) HEADERS_ONLY=1 $(PYTHON) tools/install.py install '$(TARNAME)' '/' - find $(TARNAME)/ -type l | xargs rm -f + find $(TARNAME)/ -type l | xargs $(RM) tar -cf $(TARNAME)-headers.tar $(TARNAME) - rm -rf $(TARNAME) + $(RM) -r $(TARNAME) gzip -c -f -9 $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.gz ifeq ($(XZ), 0) xz -c -f -$(XZ_COMPRESSION) $(TARNAME)-headers.tar > $(TARNAME)-headers.tar.xz endif - rm $(TARNAME)-headers.tar + $(RM) $(TARNAME)-headers.tar tar-headers: $(TARBALL)-headers @@ -732,8 +732,8 @@ ifeq ($(XZ), 0) endif $(BINARYTAR): release-only - rm -rf $(BINARYNAME) - rm -rf out/deps out/Release + $(RM) -r $(BINARYNAME) + $(RM) -r out/deps out/Release $(PYTHON) ./configure \ --prefix=/ \ --dest-cpu=$(DESTCPU) \ @@ -745,12 +745,12 @@ $(BINARYTAR): release-only cp LICENSE $(BINARYNAME) cp CHANGELOG.md $(BINARYNAME) tar -cf $(BINARYNAME).tar $(BINARYNAME) - rm -rf $(BINARYNAME) + $(RM) -r $(BINARYNAME) gzip -c -f -9 $(BINARYNAME).tar > $(BINARYNAME).tar.gz ifeq ($(XZ), 0) xz -c -f -$(XZ_COMPRESSION) $(BINARYNAME).tar > $(BINARYNAME).tar.xz endif - rm $(BINARYNAME).tar + $(RM) $(BINARYNAME).tar binary: $(BINARYTAR) diff --git a/README.md b/README.md index 2144742ea78cdb..fd1b4a6a98b2fa 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,10 @@ -# Node.js - -[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/nodejs/node?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![CII Best Practices](https://bestpractices.coreinfrastructure.org/projects/29/badge)](https://bestpractices.coreinfrastructure.org/projects/29) +

+ Node.js +

+

+ + +

Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and @@ -16,6 +20,23 @@ policies, and releases are managed under an If you need help using or installing Node.js, please use the [nodejs/help](https://github.com/nodejs/help) issue tracker. + +# Table of Contents + +* [Resources for Newcomers](#resources-for-newcomers) +* [Release Types](#release-types) + * [Download](#download) + * [Current and LTS Releases](#current-and-lts-releases) + * [Nightly Releases](#nightly-releases) + * [API Documentation](#api-documentation) + * [Verifying Binaries](#verifying-binaries) +* [Building Node.js](#building-nodejs) + * [Security](#security) + * [Current Project Team Members](#current-project-team-members) + * [CTC (Core Technical Committee)](#ctc-core-technical-committee) + * [Collaborators](#collaborators) + * [Release Team](#release-team) + ## Resources for Newcomers ### Official Resources @@ -69,6 +90,7 @@ The Node.js project maintains multiple types of releases: Binaries, installers, and source tarballs are available at . +#### Current and LTS Releases **Current** and **LTS** releases are available at , listed under their version strings. The [latest](https://nodejs.org/download/release/latest/) directory is an @@ -76,11 +98,13 @@ alias for the latest Current release. The latest LTS release from an LTS line is available in the form: latest-_codename_. For example: +#### Nightly Releases **Nightly** builds are available at , listed under their version string which includes their date (in UTC time) and the commit SHA at the HEAD of the release. +#### API Documentation **API documentation** is available in each release and nightly directory under _docs_. points to the API documentation of the latest stable version. @@ -205,6 +229,8 @@ more information about the governance of the Node.js project, see **Andras** <andras@kinvey.com> * [AndreasMadsen](https://github.com/AndreasMadsen) - **Andreas Madsen** <amwebdk@gmail.com> (he/him) +* [aqrln](https://github.com/aqrln) - +**Alexey Orlenko** <eaglexrlnk@gmail.com> * [bengl](https://github.com/bengl) - **Bryan English** <bryan@bryanenglish.com> (he/him) * [benjamingr](https://github.com/benjamingr) - @@ -299,6 +325,8 @@ more information about the governance of the Node.js project, see **Prince John Wesley** <princejohnwesley@gmail.com> * [qard](https://github.com/qard) - **Stephen Belanger** <admin@stephenbelanger.com> (he/him) +* [refack](https://github.com/refack) - +**Refael Ackermann** <refack@gmail.com> (he/him) * [richardlau](https://github.com/richardlau) - **Richard Lau** <riclau@uk.ibm.com> * [rlidwka](https://github.com/rlidwka) - diff --git a/benchmark/arrays/var-int.js b/benchmark/arrays/var-int.js index 36b0a908a59a4f..9ebad611661929 100644 --- a/benchmark/arrays/var-int.js +++ b/benchmark/arrays/var-int.js @@ -27,9 +27,13 @@ function main(conf) { bench.start(); var arr = new clazz(n * 1e6); for (var i = 0; i < 10; ++i) { + run(); + } + bench.end(n); + + function run() { for (var j = 0, k = arr.length; j < k; ++j) { arr[j] = (j ^ k) & 127; } } - bench.end(n); } diff --git a/benchmark/arrays/zero-float.js b/benchmark/arrays/zero-float.js index 047e179234f33a..a74cd8ec5bacca 100644 --- a/benchmark/arrays/zero-float.js +++ b/benchmark/arrays/zero-float.js @@ -27,9 +27,13 @@ function main(conf) { bench.start(); var arr = new clazz(n * 1e6); for (var i = 0; i < 10; ++i) { + run(); + } + bench.end(n); + + function run() { for (var j = 0, k = arr.length; j < k; ++j) { arr[j] = 0.0; } } - bench.end(n); } diff --git a/benchmark/arrays/zero-int.js b/benchmark/arrays/zero-int.js index 4e5c97e8af0b9c..7f61aa1a820042 100644 --- a/benchmark/arrays/zero-int.js +++ b/benchmark/arrays/zero-int.js @@ -27,9 +27,13 @@ function main(conf) { bench.start(); var arr = new clazz(n * 1e6); for (var i = 0; i < 10; ++i) { + run(); + } + bench.end(n); + + function run() { for (var j = 0, k = arr.length; j < k; ++j) { arr[j] = 0; } } - bench.end(n); } diff --git a/benchmark/buffers/buffer-base64-decode-wrapped.js b/benchmark/buffers/buffer-base64-decode-wrapped.js new file mode 100644 index 00000000000000..aa070ab55c44de --- /dev/null +++ b/benchmark/buffers/buffer-base64-decode-wrapped.js @@ -0,0 +1,26 @@ +'use strict'; + +const common = require('../common.js'); + +const bench = common.createBenchmark(main, { + n: [32], +}); + +function main(conf) { + const n = +conf.n; + const charsPerLine = 76; + const linesCount = 8 << 16; + const bytesCount = charsPerLine * linesCount / 4 * 3; + + const line = 'abcd'.repeat(charsPerLine / 4) + '\n'; + const data = line.repeat(linesCount); + // eslint-disable-next-line no-unescaped-regexp-dot + data.match(/./); // Flatten the string + const buffer = Buffer.alloc(bytesCount, line, 'base64'); + + bench.start(); + for (var i = 0; i < n; i++) { + buffer.base64Write(data, 0, bytesCount); + } + bench.end(n); +} diff --git a/benchmark/crypto/cipher-stream.js b/benchmark/crypto/cipher-stream.js index 11e2c38c0bd2f2..03780ba130717e 100644 --- a/benchmark/crypto/cipher-stream.js +++ b/benchmark/crypto/cipher-stream.js @@ -40,11 +40,11 @@ function main(conf) { var encoding; switch (conf.type) { case 'asc': - message = new Array(conf.len + 1).join('a'); + message = 'a'.repeat(conf.len); encoding = 'ascii'; break; case 'utf': - message = new Array(conf.len / 2 + 1).join('ü'); + message = 'ü'.repeat(conf.len / 2); encoding = 'utf8'; break; case 'buf': diff --git a/benchmark/crypto/hash-stream-creation.js b/benchmark/crypto/hash-stream-creation.js index e7fcde3aa604f3..3be09785acbd30 100644 --- a/benchmark/crypto/hash-stream-creation.js +++ b/benchmark/crypto/hash-stream-creation.js @@ -25,11 +25,11 @@ function main(conf) { var encoding; switch (conf.type) { case 'asc': - message = new Array(conf.len + 1).join('a'); + message = 'a'.repeat(conf.len); encoding = 'ascii'; break; case 'utf': - message = new Array(conf.len / 2 + 1).join('ü'); + message = 'ü'.repeat(conf.len / 2); encoding = 'utf8'; break; case 'buf': diff --git a/benchmark/crypto/hash-stream-throughput.js b/benchmark/crypto/hash-stream-throughput.js index 732c2b89c74fc1..bf426fc2c91788 100644 --- a/benchmark/crypto/hash-stream-throughput.js +++ b/benchmark/crypto/hash-stream-throughput.js @@ -24,11 +24,11 @@ function main(conf) { var encoding; switch (conf.type) { case 'asc': - message = new Array(conf.len + 1).join('a'); + message = 'a'.repeat(conf.len); encoding = 'ascii'; break; case 'utf': - message = new Array(conf.len / 2 + 1).join('ü'); + message = 'ü'.repeat(conf.len / 2); encoding = 'utf8'; break; case 'buf': diff --git a/benchmark/es/string-repeat.js b/benchmark/es/string-repeat.js new file mode 100644 index 00000000000000..a6b389033ac579 --- /dev/null +++ b/benchmark/es/string-repeat.js @@ -0,0 +1,35 @@ +'use strict'; + +const assert = require('assert'); +const common = require('../common.js'); + +const configs = { + n: [1e3], + mode: ['Array', 'repeat'], + encoding: ['ascii', 'utf8'], + size: [1e1, 1e3, 1e6], +}; + +const bench = common.createBenchmark(main, configs); + +function main(conf) { + const n = +conf.n; + const size = +conf.size; + const character = conf.encoding === 'ascii' ? 'a' : '\ud83d\udc0e'; // '🐎' + + let str; + + if (conf.mode === 'Array') { + bench.start(); + for (let i = 0; i < n; i++) + str = new Array(size + 1).join(character); + bench.end(n); + } else { + bench.start(); + for (let i = 0; i < n; i++) + str = character.repeat(size); + bench.end(n); + } + + assert.strictEqual([...str].length, size); +} diff --git a/benchmark/fs/write-stream-throughput.js b/benchmark/fs/write-stream-throughput.js index 812dc369d7b5b3..3e54c09199409c 100644 --- a/benchmark/fs/write-stream-throughput.js +++ b/benchmark/fs/write-stream-throughput.js @@ -24,11 +24,11 @@ function main(conf) { chunk = Buffer.alloc(size, 'b'); break; case 'asc': - chunk = new Array(size + 1).join('a'); + chunk = 'a'.repeat(size); encoding = 'ascii'; break; case 'utf': - chunk = new Array(Math.ceil(size / 2) + 1).join('ü'); + chunk = 'ü'.repeat(Math.ceil(size / 2)); encoding = 'utf8'; break; default: diff --git a/benchmark/http/client-request-body.js b/benchmark/http/client-request-body.js index f6b5ab19190538..ab7e3877f38ef2 100644 --- a/benchmark/http/client-request-body.js +++ b/benchmark/http/client-request-body.js @@ -23,10 +23,10 @@ function main(conf) { break; case 'utf': encoding = 'utf8'; - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': - chunk = new Array(len + 1).join('a'); + chunk = 'a'.repeat(len); break; } diff --git a/benchmark/http/end-vs-write-end.js b/benchmark/http/end-vs-write-end.js index 62b1a6a0975b48..3c216e766c53e8 100644 --- a/benchmark/http/end-vs-write-end.js +++ b/benchmark/http/end-vs-write-end.js @@ -26,10 +26,10 @@ function main(conf) { chunk = Buffer.alloc(len, 'x'); break; case 'utf': - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': - chunk = new Array(len + 1).join('a'); + chunk = 'a'.repeat(len); break; } diff --git a/benchmark/module/module-loader.js b/benchmark/module/module-loader.js index a175533c7bbc6e..0a8e97aea8eadf 100644 --- a/benchmark/module/module-loader.js +++ b/benchmark/module/module-loader.js @@ -34,6 +34,8 @@ function main(conf) { measureFull(n); else measureDir(n); + + rmrf(tmpDirectory); } function measureFull(n) { diff --git a/benchmark/net/net-c2s-cork.js b/benchmark/net/net-c2s-cork.js index 6af91620252f45..4a119e9c275224 100644 --- a/benchmark/net/net-c2s-cork.js +++ b/benchmark/net/net-c2s-cork.js @@ -27,11 +27,11 @@ function main(conf) { break; case 'utf': encoding = 'utf8'; - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': encoding = 'ascii'; - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/net-c2s.js b/benchmark/net/net-c2s.js index 7e59bc528b681c..fdc5cfc5c77cee 100644 --- a/benchmark/net/net-c2s.js +++ b/benchmark/net/net-c2s.js @@ -27,11 +27,11 @@ function main(conf) { break; case 'utf': encoding = 'utf8'; - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': encoding = 'ascii'; - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/net-pipe.js b/benchmark/net/net-pipe.js index 7d4849c4ef7bbb..d40da7e5497543 100644 --- a/benchmark/net/net-pipe.js +++ b/benchmark/net/net-pipe.js @@ -27,11 +27,11 @@ function main(conf) { break; case 'utf': encoding = 'utf8'; - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': encoding = 'ascii'; - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/net-s2c.js b/benchmark/net/net-s2c.js index a4a5b4ab4987a0..1c104e3417851d 100644 --- a/benchmark/net/net-s2c.js +++ b/benchmark/net/net-s2c.js @@ -27,11 +27,11 @@ function main(conf) { break; case 'utf': encoding = 'utf8'; - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': encoding = 'ascii'; - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/tcp-raw-c2s.js b/benchmark/net/tcp-raw-c2s.js index c33c6d0f2abf85..8c9eff76e92216 100644 --- a/benchmark/net/tcp-raw-c2s.js +++ b/benchmark/net/tcp-raw-c2s.js @@ -83,10 +83,10 @@ function client() { chunk = Buffer.alloc(len, 'x'); break; case 'utf': - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/tcp-raw-pipe.js b/benchmark/net/tcp-raw-pipe.js index b7c6776c9578cd..0501d13f00c7f9 100644 --- a/benchmark/net/tcp-raw-pipe.js +++ b/benchmark/net/tcp-raw-pipe.js @@ -80,10 +80,10 @@ function client() { chunk = Buffer.alloc(len, 'x'); break; case 'utf': - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/net/tcp-raw-s2c.js b/benchmark/net/tcp-raw-s2c.js index a7eeed1921150e..1cb0fb63f443f4 100644 --- a/benchmark/net/tcp-raw-s2c.js +++ b/benchmark/net/tcp-raw-s2c.js @@ -54,10 +54,10 @@ function server() { chunk = Buffer.alloc(len, 'x'); break; case 'utf': - chunk = new Array(len / 2 + 1).join('ü'); + chunk = 'ü'.repeat(len / 2); break; case 'asc': - chunk = new Array(len + 1).join('x'); + chunk = 'x'.repeat(len); break; default: throw new Error('invalid type: ' + type); diff --git a/benchmark/tls/throughput.js b/benchmark/tls/throughput.js index d3b7d0c02237a2..c2b389fe45a7a4 100644 --- a/benchmark/tls/throughput.js +++ b/benchmark/tls/throughput.js @@ -26,11 +26,11 @@ function main(conf) { chunk = Buffer.alloc(size, 'b'); break; case 'asc': - chunk = new Array(size + 1).join('a'); + chunk = 'a'.repeat(size); encoding = 'ascii'; break; case 'utf': - chunk = new Array(size / 2 + 1).join('ü'); + chunk = 'ü'.repeat(size / 2); encoding = 'utf8'; break; default: diff --git a/configure b/configure index 4bae197df3a021..06ccb26e9be2ab 100755 --- a/configure +++ b/configure @@ -977,6 +977,15 @@ def configure_openssl(o): if options.without_ssl: + def without_ssl_error(option): + print('Error: --without-ssl is incompatible with %s' % option) + exit(1) + if options.shared_openssl: + without_ssl_error('--shared-openssl') + if options.openssl_no_asm: + without_ssl_error('--openssl-no-asm') + if options.openssl_fips: + without_ssl_error('--openssl-fips') return configure_library('openssl', o) @@ -1045,15 +1054,15 @@ def configure_intl(o): if nodedownload.candownload(auto_downloads, "icu"): nodedownload.retrievefile(url, targetfile) else: - print(' Re-using existing %s' % targetfile) + print('Re-using existing %s' % targetfile) if os.path.isfile(targetfile): - sys.stdout.write(' Checking file integrity with MD5:\r') + print('Checking file integrity with MD5:\r') gotmd5 = nodedownload.md5sum(targetfile) - print(' MD5: %s %s' % (gotmd5, targetfile)) + print('MD5: %s %s' % (gotmd5, targetfile)) if (md5 == gotmd5): return targetfile else: - print(' Expected: %s *MISMATCH*' % md5) + print('Expected: %s *MISMATCH*' % md5) print('\n ** Corrupted ZIP? Delete %s to retry download.\n' % targetfile) return None icu_config = { @@ -1191,7 +1200,7 @@ def configure_intl(o): os.rename(tmp_icu, icu_full_path) shutil.rmtree(icu_tmp_path) else: - print(' Error: --with-icu-source=%s did not result in an "icu" dir.' % \ + print('Error: --with-icu-source=%s did not result in an "icu" dir.' % \ with_icu_source) shutil.rmtree(icu_tmp_path) sys.exit(1) @@ -1207,8 +1216,8 @@ def configure_intl(o): if localzip: nodedownload.unpack(localzip, icu_parent_path) if not os.path.isdir(icu_full_path): - print(' Cannot build Intl without ICU in %s.' % icu_full_path) - print(' (Fix, or disable with "--with-intl=none" )') + print('Cannot build Intl without ICU in %s.' % icu_full_path) + print('(Fix, or disable with "--with-intl=none" )') sys.exit(1) else: print('* Using ICU in %s' % icu_full_path) @@ -1216,7 +1225,7 @@ def configure_intl(o): # uvernum.h contains it as a #define. uvernum_h = os.path.join(icu_full_path, 'source/common/unicode/uvernum.h') if not os.path.isfile(uvernum_h): - print(' Error: could not load %s - is ICU installed?' % uvernum_h) + print('Error: could not load %s - is ICU installed?' % uvernum_h) sys.exit(1) icu_ver_major = None matchVerExp = r'^\s*#define\s+U_ICU_VERSION_SHORT\s+"([^"]*)".*' @@ -1226,7 +1235,7 @@ def configure_intl(o): if m: icu_ver_major = m.group(1) if not icu_ver_major: - print(' Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h) + print('Could not read U_ICU_VERSION_SHORT version from %s' % uvernum_h) sys.exit(1) icu_endianness = sys.byteorder[0]; o['variables']['icu_ver_major'] = icu_ver_major @@ -1253,8 +1262,8 @@ def configure_intl(o): # this is the icudt*.dat file which node will be using (platform endianness) o['variables']['icu_data_file'] = icu_data_file if not os.path.isfile(icu_data_path): - print(' Error: ICU prebuilt data file %s does not exist.' % icu_data_path) - print(' See the README.md.') + print('Error: ICU prebuilt data file %s does not exist.' % icu_data_path) + print('See the README.md.') # .. and we're not about to build it from .gyp! sys.exit(1) # map from variable name to subdirs diff --git a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc index 75c50eec7d069c..11695063848721 100644 --- a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc +++ b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.cc @@ -134,7 +134,23 @@ void OptimizingCompileDispatcher::FlushOutputQueue(bool restore_function_code) { } } -void OptimizingCompileDispatcher::Flush() { +void OptimizingCompileDispatcher::Flush(BlockingBehavior blocking_behavior) { + if (FLAG_block_concurrent_recompilation) Unblock(); + if (blocking_behavior == BlockingBehavior::kDontBlock) { + base::LockGuard access_input_queue_(&input_queue_mutex_); + while (input_queue_length_ > 0) { + CompilationJob* job = input_queue_[InputQueueIndex(0)]; + DCHECK_NOT_NULL(job); + input_queue_shift_ = InputQueueIndex(1); + input_queue_length_--; + DisposeCompilationJob(job, true); + } + FlushOutputQueue(true); + if (FLAG_trace_concurrent_recompilation) { + PrintF(" ** Flushed concurrent recompilation queues (not blocking).\n"); + } + return; + } base::Release_Store(&mode_, static_cast(FLUSH)); if (FLAG_block_concurrent_recompilation) Unblock(); { diff --git a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h index 8c032ab3202c67..7e081615174236 100644 --- a/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h +++ b/deps/v8/src/compiler-dispatcher/optimizing-compile-dispatcher.h @@ -22,6 +22,8 @@ class SharedFunctionInfo; class OptimizingCompileDispatcher { public: + enum class BlockingBehavior { kBlock, kDontBlock }; + explicit OptimizingCompileDispatcher(Isolate* isolate) : isolate_(isolate), input_queue_capacity_(FLAG_concurrent_recompilation_queue_length), @@ -38,7 +40,7 @@ class OptimizingCompileDispatcher { void Run(); void Stop(); - void Flush(); + void Flush(BlockingBehavior blocking_behavior); void QueueForOptimization(CompilationJob* job); void Unblock(); void InstallOptimizedFunctions(); diff --git a/deps/v8/src/debug/debug.cc b/deps/v8/src/debug/debug.cc index e93dd3566196f4..bf7f4399a258a1 100644 --- a/deps/v8/src/debug/debug.cc +++ b/deps/v8/src/debug/debug.cc @@ -1264,7 +1264,8 @@ bool Debug::PrepareFunctionForBreakPoints(Handle shared) { DCHECK(shared->is_compiled()); if (isolate_->concurrent_recompilation_enabled()) { - isolate_->optimizing_compile_dispatcher()->Flush(); + isolate_->optimizing_compile_dispatcher()->Flush( + OptimizingCompileDispatcher::BlockingBehavior::kBlock); } List > functions; diff --git a/deps/v8/src/heap/heap.cc b/deps/v8/src/heap/heap.cc index d823232ac72614..a849345349115b 100644 --- a/deps/v8/src/heap/heap.cc +++ b/deps/v8/src/heap/heap.cc @@ -862,7 +862,8 @@ void Heap::CollectAllAvailableGarbage(GarbageCollectionReason gc_reason) { if (isolate()->concurrent_recompilation_enabled()) { // The optimizing compiler may be unnecessarily holding on to memory. DisallowHeapAllocation no_recursive_gc; - isolate()->optimizing_compile_dispatcher()->Flush(); + isolate()->optimizing_compile_dispatcher()->Flush( + OptimizingCompileDispatcher::BlockingBehavior::kDontBlock); } isolate()->ClearSerializerData(); set_current_gc_flags(kMakeHeapIterableMask | kReduceMemoryFootprintMask); @@ -1056,7 +1057,8 @@ int Heap::NotifyContextDisposed(bool dependant_context) { } if (isolate()->concurrent_recompilation_enabled()) { // Flush the queued recompilation tasks. - isolate()->optimizing_compile_dispatcher()->Flush(); + isolate()->optimizing_compile_dispatcher()->Flush( + OptimizingCompileDispatcher::BlockingBehavior::kDontBlock); } AgeInlineCaches(); number_of_disposed_maps_ = retained_maps()->Length(); @@ -4457,7 +4459,8 @@ void Heap::CheckMemoryPressure() { if (isolate()->concurrent_recompilation_enabled()) { // The optimizing compiler may be unnecessarily holding on to memory. DisallowHeapAllocation no_recursive_gc; - isolate()->optimizing_compile_dispatcher()->Flush(); + isolate()->optimizing_compile_dispatcher()->Flush( + OptimizingCompileDispatcher::BlockingBehavior::kDontBlock); } } if (memory_pressure_level_.Value() == MemoryPressureLevel::kCritical) { diff --git a/deps/v8/src/objects-printer.cc b/deps/v8/src/objects-printer.cc index 9054371e849c6d..823640385bf514 100644 --- a/deps/v8/src/objects-printer.cc +++ b/deps/v8/src/objects-printer.cc @@ -1520,7 +1520,7 @@ extern void _v8_internal_Print_Code(void* object) { extern void _v8_internal_Print_TypeFeedbackVector(void* object) { if (reinterpret_cast(object)->IsSmi()) { - printf("Not a type feedback vector\n"); + printf("Not a feedback vector\n"); } else { reinterpret_cast(object)->Print(); } diff --git a/deps/v8/tools/gdbinit b/deps/v8/tools/gdbinit index 1eae053f2ce031..4668662a85684f 100644 --- a/deps/v8/tools/gdbinit +++ b/deps/v8/tools/gdbinit @@ -20,13 +20,13 @@ Print a v8 Code object from an internal code address Usage: jco pc end -# Print TypeFeedbackVector +# Print FeedbackVector define jfv -call _v8_internal_Print_TypeFeedbackVector((void*)($arg0)) +call _v8_internal_Print_FeedbackVector((void*)($arg0)) end document jfv -Print a v8 TypeFeedbackVector object -Usage: jtv tagged_ptr +Print a v8 FeedbackVector object +Usage: jfv tagged_ptr end # Print DescriptorArray. diff --git a/deps/v8/tools/lldb_commands.py b/deps/v8/tools/lldb_commands.py new file mode 100644 index 00000000000000..d8946ee485a237 --- /dev/null +++ b/deps/v8/tools/lldb_commands.py @@ -0,0 +1,72 @@ +# Copyright 2017 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +import lldb +import re + +def jst(debugger, *args): + """Print the current JavaScript stack trace""" + target = debugger.GetSelectedTarget() + process = target.GetProcess() + thread = process.GetSelectedThread() + frame = thread.GetSelectedFrame() + frame.EvaluateExpression("_v8_internal_Print_StackTrace();") + print("") + +def jss(debugger, *args): + """Skip the jitted stack on x64 to where we entered JS last""" + target = debugger.GetSelectedTarget() + process = target.GetProcess() + thread = process.GetSelectedThread() + frame = thread.GetSelectedFrame() + js_entry_sp = frame.EvaluateExpression( + "v8::internal::Isolate::Current()->thread_local_top()->js_entry_sp_;") \ + .GetValue() + sizeof_void = frame.EvaluateExpression("sizeof(void*)").GetValue() + rbp = frame.FindRegister("rbp") + rsp = frame.FindRegister("rsp") + pc = frame.FindRegister("pc") + rbp = js_entry_sp + rsp = js_entry_sp + 2 *sizeof_void + pc.value = js_entry_sp + sizeof_void + +def bta(debugger, *args): + """Print stack trace with assertion scopes""" + func_name_re = re.compile("([^(<]+)(?:\(.+\))?") + assert_re = re.compile( + "^v8::internal::Per\w+AssertType::(\w+)_ASSERT, (false|true)>") + target = debugger.GetSelectedTarget() + process = target.GetProcess() + thread = process.GetSelectedThread() + frame = thread.GetSelectedFrame() + for frame in thread: + functionSignature = frame.GetDisplayFunctionName() + if functionSignature is None: + continue + functionName = func_name_re.match(functionSignature) + line = frame.GetLineEntry().GetLine() + sourceFile = frame.GetLineEntry().GetFileSpec().GetFilename() + if line: + sourceFile = sourceFile + ":" + str(line) + + if sourceFile is None: + sourceFile = "" + print("[%-2s] %-60s %-40s" % (frame.GetFrameID(), + functionName.group(1), + sourceFile)) + match = assert_re.match(str(functionSignature)) + if match: + if match.group(3) == "false": + prefix = "Disallow" + color = "\033[91m" + else: + prefix = "Allow" + color = "\033[92m" + print("%s -> %s %s (%s)\033[0m" % ( + color, prefix, match.group(2), match.group(1))) + +def __lldb_init_module (debugger, dict): + debugger.HandleCommand('command script add -f lldb_commands.jst jst') + debugger.HandleCommand('command script add -f lldb_commands.jss jss') + debugger.HandleCommand('command script add -f lldb_commands.bta bta') diff --git a/deps/v8/tools/lldbinit b/deps/v8/tools/lldbinit new file mode 100644 index 00000000000000..b4567a87bcf7ec --- /dev/null +++ b/deps/v8/tools/lldbinit @@ -0,0 +1,26 @@ +# Copyright 2017 the V8 project authors. All rights reserved. +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# Print HeapObjects. +command regex -h 'Print a v8 JavaScript object' job 's/(.+)/expr -- '_v8_internal_Print_Object((void*)(%1))/' + +# Print v8::Local handle value. +command regex -h 'Print content of a v8::Local handle' jlh 's/(.+)/expr -- '_v8_internal_Print_Object(*(v8::internal::Object**)(*%1))/' + +# Print Code objects containing given PC. +command regex -h 'Print a v8 Code object from an internal code address' jco 's/(.+)/expr -- '_v8_internal_Print_Code((void*)(*%1))/' + +# Print FeedbackVector +command regex -h 'Print a v8 FeedbackVector object' jfv 's/(.+)/expr -- '_v8_internal_Print_FeedbackVector((void*)(%1))/' + +# Print DescriptorArray. +command regex -h 'Print a v8 DescriptorArray object' jda 's/(.+)/expr -- '_v8_internal_Print_DescriptorArray((void*)(%1))/' + +# Print LayoutDescriptor. +command regex -h 'Print a v8 LayoutDescriptor object' jld 's/(.+)/expr -- '_v8_internal_Print_LayoutDescriptor((void*)(%1))/' + +# Print TransitionArray. +command regex -h 'Print a v8 TransitionArray object' jta 's/(.+)/expr -- '_v8_internal_Print_TransitionArray((void*)(%1))/' + +command script import ~/lldb_commands.py diff --git a/doc/api/_toc.md b/doc/api/_toc.md index 345e8e393145fd..a0a3b9cc2651af 100644 --- a/doc/api/_toc.md +++ b/doc/api/_toc.md @@ -14,6 +14,7 @@ * [Console](console.html) * [Crypto](crypto.html) * [Debugger](debugger.html) +* [Deprecated APIs](deprecations.html) * [DNS](dns.html) * [Domain](domain.html) * [Errors](errors.html) diff --git a/doc/api/cli.md b/doc/api/cli.md index d5d4c4d6188c36..ab38065dae672e 100644 --- a/doc/api/cli.md +++ b/doc/api/cli.md @@ -94,7 +94,7 @@ Follows `require()`'s module resolution rules. `module` may be either a path to a file, or a node module name. -### `--inspect[=host:port]` +### `--inspect[=[host:]port]` @@ -106,7 +106,7 @@ and profile Node.js instances. The tools attach to Node.js instances via a tcp port and communicate using the [Chrome Debugging Protocol][]. -### `--inspect-brk[=host:port]` +### `--inspect-brk[=[host:]port]` diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index e8a71996c78c0a..533af4f73b182f 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -38,3 +38,79 @@ Type: Runtime `--debug` activates the legacy V8 debugger interface, which has been removed as of V8 5.8. It is replaced by Inspector which is activated with `--inspect` instead. + + +### DEP0063: ServerResponse.prototype.writeHeader() + +Type: Documentation-only + +The `http` module `ServerResponse.prototype.writeHeader()` API has been +deprecated. Please use `ServerResponse.prototype.writeHead()` instead. + +*Note*: The `ServerResponse.prototype.writeHeader()` method was never documented +as an officially supported API. + +[alloc]: buffer.html#buffer_class_method_buffer_alloc_size_fill_encoding +[alloc_unsafe_size]: buffer.html#buffer_class_method_buffer_allocunsafe_size +[`Buffer.allocUnsafeSlow(size)`]: buffer.html#buffer_class_method_buffer_allocunsafeslow_size +[`Buffer.isBuffer()`]: buffer.html#buffer_class_method_buffer_isbuffer_obj +[`Buffer.from(array)`]: buffer.html#buffer_class_method_buffer_from_array +[from_arraybuffer]: buffer.html#buffer_class_method_buffer_from_arraybuffer_byteoffset_length +[`Buffer.from(buffer)`]: buffer.html#buffer_class_method_buffer_from_buffer +[from_string_encoding]: buffer.html#buffer_class_method_buffer_from_string_encoding +[`SlowBuffer`]: buffer.html#buffer_class_slowbuffer +[`child_process`]: child_process.html +[`console.error()`]: console.html#console_console_error_data_args +[`console.log()`]: console.html#console_console_log_data_args +[`crypto.createCredentials()`]: crypto.html#crypto_crypto_createcredentials_details +[`crypto.pbkdf2()`]: crypto.html#crypto_crypto_pbkdf2_password_salt_iterations_keylen_digest_callback +[`domain`]: domain.html +[`Domain.dispose()`]: domain.html#domain_domain_dispose +[`ecdh.setPublicKey()`]: crypto.html#crypto_ecdh_setpublickey_public_key_encoding +[`emitter.listenerCount(eventName)`]: events.html#events_emitter_listenercount_eventname +[`EventEmitter.listenerCount(emitter, eventName)`]: events.html#events_eventemitter_listenercount_emitter_eventname +[`fs.exists(path, callback)`]: fs.html#fs_fs_exists_path_callback +[`fs.stat()`]: fs.html#fs_fs_stat_path_callback +[`fs.access()`]: fs.html#fs_fs_access_path_mode_callback +[`fs.lchmod(path, mode, callback)`]: fs.html#fs_fs_lchmod_path_mode_callback +[`fs.lchmodSync(path, mode)`]: fs.html#fs_fs_lchmodsync_path_mode +[`fs.lchown(path, uid, gid, callback)`]: fs.html#fs_fs_lchown_path_uid_gid_callback +[`fs.lchownSync(path, uid, gid)`]: fs.html#fs_fs_lchownsync_path_uid_gid +[`fs.read()`]: fs.html#fs_fs_read_fd_buffer_offset_length_position_callback +[`fs.readSync()`]: fs.html#fs_fs_readsync_fd_buffer_offset_length_position +[`Server.connections`]: net.html#net_server_connections +[`Server.getConnections()`]: net.html#net_server_getconnections_callback +[`Server.listen({fd: })`]: net.html#net_server_listen_handle_backlog_callback +[`os.networkInterfaces`]: os.html#os_os_networkinterfaces +[`os.tmpdir()`]: os.html#os_os_tmpdir +[`punycode`]: punycode.html +[`require.extensions`]: globals.html#globals_require_extensions +[`tls.TLSSocket`]: tls.html#tls_class_tls_tlssocket +[`tls.CryptoStream`]: tls.html#tls_class_cryptostream +[`tls.SecurePair`]: tls.html#tls_class_securepair +[`tls.SecureContext`]: tls.html#tls_tls_createsecurecontext_options +[`tls.createSecureContext()`]: tls.html#tls_tls_createsecurecontext_options +[`util`]: util.html +[`util.debug()`]: util.html#util_util_debug_string +[`util.error()`]: util.html#util_util_error_strings +[`util.puts()`]: util.html#util_util_puts_strings +[`util.print()`]: util.html#util_util_print_strings +[`util.isArray()`]: util.html#util_util_isarray_object +[`util.isBoolean()`]: util.html#util_util_isboolean_object +[`util.isBuffer()`]: util.html#util_util_isbuffer_object +[`util.isDate()`]: util.html#util_util_isdate_object +[`util.isError()`]: util.html#util_util_iserror_object +[`util.isFunction()`]: util.html#util_util_isfunction_object +[`util.isNull()`]: util.html#util_util_isnull_object +[`util.isNullOrUndefined()`]: util.html#util_util_isnullorundefined_object +[`util.isNumber()`]: util.html#util_util_isnumber_object +[`util.isObject()`]: util.html#util_util_isobject_object +[`util.isPrimitive()`]: util.html#util_util_isprimitive_object +[`util.isRegExp()`]: util.html#util_util_isregexp_object +[`util.isString()`]: util.html#util_util_isstring_object +[`util.isSymbol()`]: util.html#util_util_issymbol_object +[`util.isUndefined()`]: util.html#util_util_isundefined_object +[`util.log()`]: util.html#util_util_log_string +[`util._extend()`]: util.html#util_util_extend_target_source +[`worker.suicide`]: cluster.html#cluster_worker_suicide +[`worker.exitedAfterDisconnect`]: cluster.html#cluster_worker_exitedafterdisconnect diff --git a/doc/api/dns.md b/doc/api/dns.md index 45d494eab3bcf2..329ff0c3ae028a 100644 --- a/doc/api/dns.md +++ b/doc/api/dns.md @@ -323,7 +323,7 @@ Uses the DNS protocol to resolve name server records (`NS` records) for the contain an array of name server records available for `hostname` (e.g. `['ns1.example.com', 'ns2.example.com']`). -## dns.resolvePtr(hostname) +## dns.resolvePtr(hostname, callback) diff --git a/doc/api/fs.md b/doc/api/fs.md index dfe4f55b52b5a6..1b2a3c791532c0 100644 --- a/doc/api/fs.md +++ b/doc/api/fs.md @@ -1415,7 +1415,7 @@ changes: --> * `fd` {integer} -* `buffer` {string|Buffer|Uint8Array} +* `buffer` {Buffer|Uint8Array} * `offset` {integer} * `length` {integer} * `position` {integer} diff --git a/doc/api/http.md b/doc/api/http.md index 88d83382ff070d..f9d3d1e52f99cc 100644 --- a/doc/api/http.md +++ b/doc/api/http.md @@ -130,7 +130,7 @@ To configure any of them, a custom [`http.Agent`][] instance must be created. ```js const http = require('http'); -var keepAliveAgent = new http.Agent({ keepAlive: true }); +const keepAliveAgent = new http.Agent({ keepAlive: true }); options.agent = keepAliveAgent; http.request(options, onResponseCallback); ``` @@ -309,14 +309,14 @@ const net = require('net'); const url = require('url'); // Create an HTTP tunneling proxy -var proxy = http.createServer( (req, res) => { +const proxy = http.createServer( (req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('okay'); }); proxy.on('connect', (req, cltSocket, head) => { // connect to an origin server - var srvUrl = url.parse(`http://${req.url}`); - var srvSocket = net.connect(srvUrl.port, srvUrl.hostname, () => { + const srvUrl = url.parse(`http://${req.url}`); + const srvSocket = net.connect(srvUrl.port, srvUrl.hostname, () => { cltSocket.write('HTTP/1.1 200 Connection Established\r\n' + 'Proxy-agent: Node.js-Proxy\r\n' + '\r\n'); @@ -330,14 +330,14 @@ proxy.on('connect', (req, cltSocket, head) => { proxy.listen(1337, '127.0.0.1', () => { // make a request to a tunneling proxy - var options = { + const options = { port: 1337, hostname: '127.0.0.1', method: 'CONNECT', path: 'www.google.com:80' }; - var req = http.request(options); + const req = http.request(options); req.end(); req.on('connect', (res, socket, head) => { @@ -405,7 +405,7 @@ A client server pair demonstrating how to listen for the `'upgrade'` event. const http = require('http'); // Create an HTTP server -var srv = http.createServer( (req, res) => { +const srv = http.createServer( (req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('okay'); }); @@ -422,7 +422,7 @@ srv.on('upgrade', (req, socket, head) => { srv.listen(1337, '127.0.0.1', () => { // make a request - var options = { + const options = { port: 1337, hostname: '127.0.0.1', headers: { @@ -431,7 +431,7 @@ srv.listen(1337, '127.0.0.1', () => { } }; - var req = http.request(options); + const req = http.request(options); req.end(); req.on('upgrade', (res, socket, upgradeHead) => { @@ -944,7 +944,7 @@ Note that the name is case insensitive. Example: ```js -var contentType = response.getHeader('content-type'); +const contentType = response.getHeader('content-type'); ``` ### response.getHeaderNames() @@ -963,7 +963,7 @@ Example: response.setHeader('Foo', 'bar'); response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); -var headerNames = response.getHeaderNames(); +const headerNames = response.getHeaderNames(); // headerNames === ['foo', 'set-cookie'] ``` @@ -986,7 +986,7 @@ Example: response.setHeader('Foo', 'bar'); response.setHeader('Set-Cookie', ['foo=bar', 'bar=baz']); -var headers = response.getHeaders(); +const headers = response.getHeaders(); // headers === { foo: 'bar', 'set-cookie': ['foo=bar', 'bar=baz'] } ``` @@ -1004,7 +1004,7 @@ outgoing headers. Note that the header name matching is case-insensitive. Example: ```js -var hasContentType = response.hasHeader('content-type'); +const hasContentType = response.hasHeader('content-type'); ``` ### response.headersSent @@ -1077,7 +1077,7 @@ any headers passed to [`response.writeHead()`][], with the headers passed to ```js // returns content-type = text/plain -const server = http.createServer((req,res) => { +const server = http.createServer((req, res) => { res.setHeader('Content-Type', 'text/html'); res.setHeader('X-Foo', 'bar'); res.writeHead(200, {'Content-Type': 'text/plain'}); @@ -1209,7 +1209,7 @@ argument. Example: ```js -var body = 'hello world'; +const body = 'hello world'; response.writeHead(200, { 'Content-Length': Buffer.byteLength(body), 'Content-Type': 'text/plain' }); @@ -1227,7 +1227,7 @@ any headers passed to [`response.writeHead()`][], with the headers passed to ```js // returns content-type = text/plain -const server = http.createServer((req,res) => { +const server = http.createServer((req, res) => { res.setHeader('Content-Type', 'text/html'); res.setHeader('X-Foo', 'bar'); res.writeHead(200, {'Content-Type': 'text/plain'}); @@ -1466,12 +1466,19 @@ can be used. Example: ```txt $ node > require('url').parse('/status?name=ryan') -{ - href: '/status?name=ryan', +Url { + protocol: null, + slashes: null, + auth: null, + host: null, + port: null, + hostname: null, + hash: null, search: '?name=ryan', query: 'name=ryan', - pathname: '/status' -} + pathname: '/status', + path: '/status?name=ryan', + href: '/status?name=ryan' } ``` To extract the parameters from the query string, the @@ -1482,12 +1489,19 @@ Example: ```txt $ node > require('url').parse('/status?name=ryan', true) -{ - href: '/status?name=ryan', +Url { + protocol: null, + slashes: null, + auth: null, + host: null, + port: null, + hostname: null, + hash: null, search: '?name=ryan', - query: {name: 'ryan'}, - pathname: '/status' -} + query: { name: 'ryan' }, + pathname: '/status', + path: '/status?name=ryan', + href: '/status?name=ryan' } ``` ## http.METHODS @@ -1530,6 +1544,7 @@ added: v0.3.6 * `options` {Object | string} Accepts the same `options` as [`http.request()`][], with the `method` always set to `GET`. + Properties that are inherited from the prototype are ignored. * `callback` {Function} * Returns: {http.ClientRequest} @@ -1546,7 +1561,7 @@ JSON Fetching Example: ```js http.get('http://nodejs.org/dist/index.json', (res) => { - const statusCode = res.statusCode; + const { statusCode } = res; const contentType = res.headers['content-type']; let error; @@ -1558,7 +1573,7 @@ http.get('http://nodejs.org/dist/index.json', (res) => { `Expected application/json but received ${contentType}`); } if (error) { - console.log(error.message); + console.error(error.message); // consume response data to free up memory res.resume(); return; @@ -1566,17 +1581,17 @@ http.get('http://nodejs.org/dist/index.json', (res) => { res.setEncoding('utf8'); let rawData = ''; - res.on('data', (chunk) => rawData += chunk); + res.on('data', (chunk) => { rawData += chunk; }); res.on('end', () => { try { - let parsedData = JSON.parse(rawData); + const parsedData = JSON.parse(rawData); console.log(parsedData); } catch (e) { - console.log(e.message); + console.error(e.message); } }); }).on('error', (e) => { - console.log(`Got error: ${e.message}`); + console.error(`Got error: ${e.message}`); }); ``` @@ -1647,11 +1662,11 @@ upload a file with a POST request, then write to the `ClientRequest` object. Example: ```js -var postData = querystring.stringify({ - 'msg' : 'Hello World!' +const postData = querystring.stringify({ + 'msg': 'Hello World!' }); -var options = { +const options = { hostname: 'www.google.com', port: 80, path: '/upload', @@ -1662,7 +1677,7 @@ var options = { } }; -var req = http.request(options, (res) => { +const req = http.request(options, (res) => { console.log(`STATUS: ${res.statusCode}`); console.log(`HEADERS: ${JSON.stringify(res.headers)}`); res.setEncoding('utf8'); @@ -1675,7 +1690,7 @@ var req = http.request(options, (res) => { }); req.on('error', (e) => { - console.log(`problem with request: ${e.message}`); + console.error(`problem with request: ${e.message}`); }); // write data to request body diff --git a/doc/api/https.md b/doc/api/https.md index 7cbb5fd3429a81..59e9fe663c1fb9 100644 --- a/doc/api/https.md +++ b/doc/api/https.md @@ -70,7 +70,8 @@ const https = require('https'); const fs = require('fs'); const options = { - pfx: fs.readFileSync('server.pfx') + pfx: fs.readFileSync('test/fixtures/test_cert.pfx'), + passphrase: 'sample' }; https.createServer(options, (req, res) => { @@ -167,14 +168,14 @@ Example: ```js const https = require('https'); -var options = { +const options = { hostname: 'encrypted.google.com', port: 443, path: '/', method: 'GET' }; -var req = https.request(options, (res) => { +const req = https.request(options, (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); @@ -191,7 +192,7 @@ req.end(); Example using options from [`tls.connect()`][]: ```js -var options = { +const options = { hostname: 'encrypted.google.com', port: 443, path: '/', @@ -201,8 +202,8 @@ var options = { }; options.agent = new https.Agent(options); -var req = https.request(options, (res) => { - ... +const req = https.request(options, (res) => { + // ... }); ``` @@ -211,7 +212,7 @@ Alternatively, opt out of connection pooling by not using an `Agent`. Example: ```js -var options = { +const options = { hostname: 'encrypted.google.com', port: 443, path: '/', @@ -221,8 +222,8 @@ var options = { agent: false }; -var req = https.request(options, (res) => { - ... +const req = https.request(options, (res) => { + // ... }); ``` diff --git a/doc/api/modules.md b/doc/api/modules.md index 397964c2511aed..65f57314ccd9f2 100644 --- a/doc/api/modules.md +++ b/doc/api/modules.md @@ -20,9 +20,9 @@ directory as `foo.js`. Here are the contents of `circle.js`: ```js -const PI = Math.PI; +const { PI } = Math; -exports.area = (r) => PI * r * r; +exports.area = (r) => PI * r ** 2; exports.circumference = (r) => 2 * PI * r; ``` @@ -44,7 +44,7 @@ Below, `bar.js` makes use of the `square` module, which exports a constructor: ```js const square = require('./square.js'); -var mySquare = square(2); +const mySquare = square(2); console.log(`The area of my square is ${mySquare.area()}`); ``` @@ -54,12 +54,12 @@ The `square` module is defined in `square.js`: // assigning to exports will not modify module, must use module.exports module.exports = (width) => { return { - area: () => width * width + area: () => width ** 2 }; -} +}; ``` -The module system is implemented in the `require("module")` module. +The module system is implemented in the `require('module')` module. ## Accessing the main module @@ -142,7 +142,7 @@ To get the exact filename that will be loaded when `require()` is called, use the `require.resolve()` function. Putting together all of the above, here is the high-level algorithm -in pseudocode of what require.resolve does: +in pseudocode of what `require.resolve()` does: ```txt require(X) from module at path Y @@ -565,16 +565,16 @@ To illustrate the behavior, imagine this hypothetical implementation of `require()`, which is quite similar to what is actually done by `require()`: ```js -function require(...) { - var module = { exports: {} }; +function require(/* ... */) { + const module = { exports: {} }; ((module, exports) => { // Your module code here. In this example, define a function. - function some_func() {}; - exports = some_func; + function someFunc() {} + exports = someFunc; // At this point, exports is no longer a shortcut to module.exports, and // this module will still export an empty default object. - module.exports = some_func; - // At this point, the module will now export some_func, instead of the + module.exports = someFunc; + // At this point, the module will now export someFunc, instead of the // default object. })(module, module.exports); return module.exports; diff --git a/doc/api/net.md b/doc/api/net.md index 3465ece47be9c0..462835d6376134 100644 --- a/doc/api/net.md +++ b/doc/api/net.md @@ -793,7 +793,8 @@ Passing `timeout` as an option will call [`socket.setTimeout()`][] after the soc The `connectListener` parameter will be added as a listener for the [`'connect'`][] event once. -Here is an example of a client of the previously described echo server: +Following is an example of a client of the echo server described +in the [`net.createServer()`][] section: ```js const net = require('net'); diff --git a/doc/api/process.md b/doc/api/process.md index 0d0615e2fa7697..e10271060ff5ff 100644 --- a/doc/api/process.md +++ b/doc/api/process.md @@ -1243,9 +1243,12 @@ function maybeSync(arg, cb) { This API is hazardous because in the following case: ```js -maybeSync(true, () => { +const maybeTrue = Math.random() > 0.5; + +maybeSync(maybeTrue, () => { foo(); }); + bar(); ``` diff --git a/doc/api/stream.md b/doc/api/stream.md index 23b8059ed99329..78c87d26caf70f 100644 --- a/doc/api/stream.md +++ b/doc/api/stream.md @@ -281,7 +281,7 @@ has been called, and all data has been flushed to the underlying system. ```js const writer = getWritableStreamSomehow(); for (var i = 0; i < 100; i ++) { - writer.write('hello, #${i}!\n'); + writer.write(`hello, #${i}!\n`); } writer.end('This is the end\n'); writer.on('finish', () => { diff --git a/doc/api/timers.md b/doc/api/timers.md index df48905001e19b..e62e2e57eda813 100644 --- a/doc/api/timers.md +++ b/doc/api/timers.md @@ -75,9 +75,7 @@ added: v0.9.1 * `...args` {any} Optional arguments to pass when the `callback` is called. Schedules the "immediate" execution of the `callback` after I/O events' -callbacks and before timers created using [`setTimeout()`][] and -[`setInterval()`][] are triggered. Returns an `Immediate` for use with -[`clearImmediate()`][]. +callbacks. Returns an `Immediate` for use with [`clearImmediate()`][]. When multiple calls to `setImmediate()` are made, the `callback` functions are queued for execution in the order in which they are created. The entire callback diff --git a/doc/api/url.md b/doc/api/url.md index b58639bf2193d7..aa33b554042ff6 100644 --- a/doc/api/url.md +++ b/doc/api/url.md @@ -16,21 +16,21 @@ When parsed, a URL object is returned containing properties for each of these components. The following details each of the components of a parsed URL. The example -`'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'` is used to +`'http://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash'` is used to illustrate each. ```txt -┌─────────────────────────────────────────────────────────────────────────────┐ -│ href │ -├──────────┬┬───────────┬─────────────────┬───────────────────────────┬───────┤ -│ protocol ││ auth │ host │ path │ hash │ -│ ││ ├──────────┬──────┼──────────┬────────────────┤ │ -│ ││ │ hostname │ port │ pathname │ search │ │ -│ ││ │ │ │ ├─┬──────────────┤ │ -│ ││ │ │ │ │ │ query │ │ -" http: // user:pass @ host.com : 8080 /p/a/t/h ? query=string #hash " -│ ││ │ │ │ │ │ │ │ -└──────────┴┴───────────┴──────────┴──────┴──────────┴─┴──────────────┴───────┘ +┌─────────────────────────────────────────────────────────────────────────────────┐ +│ href │ +├──────────┬┬───────────┬─────────────────────┬───────────────────────────┬───────┤ +│ protocol ││ auth │ host │ path │ hash │ +│ ││ ├──────────────┬──────┼──────────┬────────────────┤ │ +│ ││ │ hostname │ port │ pathname │ search │ │ +│ ││ │ │ │ ├─┬──────────────┤ │ +│ ││ │ │ │ │ │ query │ │ +" http: // user:pass @ sub.host.com : 8080 /p/a/t/h ? query=string #hash " +│ ││ │ │ │ │ │ │ │ +└──────────┴┴───────────┴──────────────┴──────┴──────────┴─┴──────────────┴───────┘ (all spaces in the "" line should be ignored -- they are purely for formatting) ``` @@ -56,21 +56,21 @@ For example: `'#hash'` The `host` property is the full lower-cased host portion of the URL, including the `port` if specified. -For example: `'host.com:8080'` +For example: `'sub.host.com:8080'` ### urlObject.hostname The `hostname` property is the lower-cased host name portion of the `host` component *without* the `port` included. -For example: `'host.com'` +For example: `'sub.host.com'` ### urlObject.href The `href` property is the full URL string that was parsed with both the `protocol` and `host` components converted to lower-case. -For example: `'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'` +For example: `'http://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash'` ### urlObject.path @@ -324,7 +324,7 @@ console.log(myURL.pathname); // /foo `delete myURL.pathname`, etc) has no effect but will still return `true`. A comparison between this API and `url.parse()` is given below. Above the URL -`'http://user:pass@host.com:8080/p/a/t/h?query=string#hash'`, properties of an +`'http://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash'`, properties of an object returned by `url.parse()` are shown. Below it are properties of a WHATWG `URL` object. @@ -332,23 +332,23 @@ object returned by `url.parse()` are shown. Below it are properties of a WHATWG `username` or `password`. ```txt -┌─────────────────────────────────────────────────────────────────────────────────────────┐ -│ href │ -├──────────┬──┬─────────────────────┬─────────────────┬───────────────────────────┬───────┤ -│ protocol │ │ auth │ host │ path │ hash │ -│ │ │ ├──────────┬──────┼──────────┬────────────────┤ │ -│ │ │ │ hostname │ port │ pathname │ search │ │ -│ │ │ │ │ │ ├─┬──────────────┤ │ -│ │ │ │ │ │ │ │ query │ │ -" http: // user : pass @ host.com : 8080 /p/a/t/h ? query=string #hash " -│ │ │ │ │ hostname │ port │ │ │ │ -│ │ │ │ ├──────────┴──────┤ │ │ │ -│ protocol │ │ username │ password │ host │ │ │ │ -├──────────┴──┼──────────┴──────────┼─────────────────┤ │ │ │ -│ origin │ │ origin │ pathname │ search │ hash │ -├─────────────┴─────────────────────┴─────────────────┴──────────┴────────────────┴───────┤ -│ href │ -└─────────────────────────────────────────────────────────────────────────────────────────┘ +┌─────────────────────────────────────────────────────────────────────────────────────────────┐ +│ href │ +├──────────┬──┬─────────────────────┬─────────────────────┬───────────────────────────┬───────┤ +│ protocol │ │ auth │ host │ path │ hash │ +│ │ │ ├──────────────┬──────┼──────────┬────────────────┤ │ +│ │ │ │ hostname │ port │ pathname │ search │ │ +│ │ │ │ │ │ ├─┬──────────────┤ │ +│ │ │ │ │ │ │ │ query │ │ +" http: // user : pass @ sub.host.com : 8080 /p/a/t/h ? query=string #hash " +│ │ │ │ │ hostname │ port │ │ │ │ +│ │ │ │ ├──────────────┴──────┤ │ │ │ +│ protocol │ │ username │ password │ host │ │ │ │ +├──────────┴──┼──────────┴──────────┼─────────────────────┤ │ │ │ +│ origin │ │ origin │ pathname │ search │ hash │ +├─────────────┴─────────────────────┴─────────────────────┴──────────┴────────────────┴───────┤ +│ href │ +└─────────────────────────────────────────────────────────────────────────────────────────────┘ (all spaces in the "" line should be ignored -- they are purely for formatting) ``` diff --git a/doc/api/util.md b/doc/api/util.md index bb1bbd529a4ccb..357811cc0fcdeb 100644 --- a/doc/api/util.md +++ b/doc/api/util.md @@ -103,7 +103,9 @@ Each placeholder token is replaced with the converted value from the corresponding argument. Supported placeholders are: * `%s` - String. -* `%d` - Number (both integer and float). +* `%d` - Number (integer or floating point value). +* `%i` - Integer. +* `%f` - Floating point value. * `%j` - JSON. Replaced with the string `'[Circular]'` if the argument contains circular references. * `%%` - single percent sign (`'%'`). This does not consume an argument. diff --git a/doc/changelogs/CHANGELOG_V7.md b/doc/changelogs/CHANGELOG_V7.md index e9b1ab03ff630d..d725a43c5d7b96 100644 --- a/doc/changelogs/CHANGELOG_V7.md +++ b/doc/changelogs/CHANGELOG_V7.md @@ -6,6 +6,7 @@ +7.9.0
7.8.0
7.7.4
7.7.3
@@ -33,6 +34,69 @@ * [io.js](CHANGELOG_IOJS.md) * [Archive](CHANGELOG_ARCHIVE.md) + +## 2017-04-11, Version 7.9.0 (Current), @italoacasas + +### Notable Changes + +* **util**: console is now closer to what is supported in all major browsers (Roman Reiss) [#10308](https://github.com/nodejs/node/pull/10308) + +### Commits + +* [[`9f73df5910`](https://github.com/nodejs/node/commit/9f73df5910)] - **deps**: cherry-pick 22858cb from V8 upstream (Ali Ijaz Sheikh) [#11998](https://github.com/nodejs/node/pull/11998) +* [[`b997e62692`](https://github.com/nodejs/node/commit/b997e62692)] - **test**: add internal/socket_list tests (DavidCai) [#12109](https://github.com/nodejs/node/pull/12109) +* [[`c11c23b22b`](https://github.com/nodejs/node/commit/c11c23b22b)] - **doc**: make the heading consistent (Sakthipriyan Vairamani (thefourtheye)) [#11569](https://github.com/nodejs/node/pull/11569) +* [[`67d21149a2`](https://github.com/nodejs/node/commit/67d21149a2)] - **crypto**: handle exceptions in hmac/hash.digest (Tobias Nießen) [#12164](https://github.com/nodejs/node/pull/12164) +* [[`3b765f5366`](https://github.com/nodejs/node/commit/3b765f5366)] - **doc**: fix confusing example in process.md (Vse Mozhet Byt) [#12282](https://github.com/nodejs/node/pull/12282) +* [[`37568c093a`](https://github.com/nodejs/node/commit/37568c093a)] - **src**: use std::list for at_exit_functions (Daniel Bevenius) [#12255](https://github.com/nodejs/node/pull/12255) +* [[`2f9e2fcf3e`](https://github.com/nodejs/node/commit/2f9e2fcf3e)] - **doc**: update information on test/known_issues (Jan Krems) [#12262](https://github.com/nodejs/node/pull/12262) +* [[`0f4319a14a`](https://github.com/nodejs/node/commit/0f4319a14a)] - **src**: use std::string for trace enabled_categories (Sam Roberts) [#12242](https://github.com/nodejs/node/pull/12242) +* [[`6826637f11`](https://github.com/nodejs/node/commit/6826637f11)] - **doc**: fix missing argument for dns.resolvePtr() (Uppinder Chugh) [#12256](https://github.com/nodejs/node/pull/12256) +* [[`4a6bb378d4`](https://github.com/nodejs/node/commit/4a6bb378d4)] - **doc**: fix confusing reference in net.md (Vse Mozhet Byt) [#12247](https://github.com/nodejs/node/pull/12247) +* [[`3e8991cc56`](https://github.com/nodejs/node/commit/3e8991cc56)] - **doc**: modernize and fix code examples in modules.md (Vse Mozhet Byt) [#12224](https://github.com/nodejs/node/pull/12224) +* [[`376f5ef1ee`](https://github.com/nodejs/node/commit/376f5ef1ee)] - **doc**: document the performance team (Gibson Fahnestock) [#12213](https://github.com/nodejs/node/pull/12213) +* [[`c0b7c075da`](https://github.com/nodejs/node/commit/c0b7c075da)] - **doc**: add refack to collaborators (Refael Ackermann) [#12277](https://github.com/nodejs/node/pull/12277) +* [[`83f855d505`](https://github.com/nodejs/node/commit/83f855d505)] - **doc**: add aqrln to collaborators (Alexey Orlenko) [#12273](https://github.com/nodejs/node/pull/12273) +* [[`2fb2289177`](https://github.com/nodejs/node/commit/2fb2289177)] - **doc**: add sub domain to host in url (Steven) [#12233](https://github.com/nodejs/node/pull/12233) +* [[`ac200a6122`](https://github.com/nodejs/node/commit/ac200a6122)] - **test**: add a second argument to assert.throws() (dave-k) [#12139](https://github.com/nodejs/node/pull/12139) +* [[`3cdd04b1c0`](https://github.com/nodejs/node/commit/3cdd04b1c0)] - **test**: skip irrelevant test on Windows (Rich Trott) [#12261](https://github.com/nodejs/node/pull/12261) +* [[`d4d6986551`](https://github.com/nodejs/node/commit/d4d6986551)] - **build**: fix path voodoo in icu-generic.gyp (Refael Ackermann) [#11217](https://github.com/nodejs/node/pull/11217) +* [[`a735c16d52`](https://github.com/nodejs/node/commit/a735c16d52)] - **deps**: backport ec1ffe3 from upstream V8 (Daniel Bevenius) [#12061](https://github.com/nodejs/node/pull/12061) +* [[`d641164d09`](https://github.com/nodejs/node/commit/d641164d09)] - **doc**: update pull request template URL layout (Rich Trott) [#12216](https://github.com/nodejs/node/pull/12216) +* [[`6feea08587`](https://github.com/nodejs/node/commit/6feea08587)] - **buffer**: preallocate array with buffer length (alejandro) [#11733](https://github.com/nodejs/node/pull/11733) +* [[`a703bdecc4`](https://github.com/nodejs/node/commit/a703bdecc4)] - **build**: add checks for openssl configure options (Daniel Bevenius) [#12175](https://github.com/nodejs/node/pull/12175) +* [[`b495b6acdf`](https://github.com/nodejs/node/commit/b495b6acdf)] - **build**: make configure print statements consistent (Daniel Bevenius) [#12176](https://github.com/nodejs/node/pull/12176) +* [[`f60b4553f3`](https://github.com/nodejs/node/commit/f60b4553f3)] - **doc**: modernize and fix code examples in https.md (Vse Mozhet Byt) [#12171](https://github.com/nodejs/node/pull/12171) +* [[`74d0266694`](https://github.com/nodejs/node/commit/74d0266694)] - **doc**: fix string interpolation in Stream 'finish' (Vinay Hiremath) [#12221](https://github.com/nodejs/node/pull/12221) +* [[`4b54520a4a`](https://github.com/nodejs/node/commit/4b54520a4a)] - **test**: refactor mkdtemp test and added async (Luca Maraschi) [#12080](https://github.com/nodejs/node/pull/12080) +* [[`8caf6fd58a`](https://github.com/nodejs/node/commit/8caf6fd58a)] - **test**: add Unicode characters regression test (Alexey Orlenko) [#11423](https://github.com/nodejs/node/pull/11423) +* [[`961c89cc61`](https://github.com/nodejs/node/commit/961c89cc61)] - **doc**: add table of contents to README.md (Jason Marsh) [#11635](https://github.com/nodejs/node/pull/11635) +* [[`a11ed6a0b3`](https://github.com/nodejs/node/commit/a11ed6a0b3)] - **test**: more robust check for location of `node.exe` (Refael Ackermann) [#12120](https://github.com/nodejs/node/pull/12120) +* [[`6083e7aa7b`](https://github.com/nodejs/node/commit/6083e7aa7b)] - **benchmark**: avoid TurboFan deopt in arrays bench (Michaël Zasso) [#11894](https://github.com/nodejs/node/pull/11894) +* [[`cf1117bc13`](https://github.com/nodejs/node/commit/cf1117bc13)] - **doc**: fix the timing of setImmediate's execution (Daiki Arai) [#12034](https://github.com/nodejs/node/pull/12034) +* [[`806c4f3c0c`](https://github.com/nodejs/node/commit/806c4f3c0c)] - **doc**: fix fs.read arg type (Daiki Arai) [#12034](https://github.com/nodejs/node/pull/12034) +* [[`c814c7e9ea`](https://github.com/nodejs/node/commit/c814c7e9ea)] - **events**: do not keep arrays with a single listener (Luigi Pinca) [#12043](https://github.com/nodejs/node/pull/12043) +* [[`36617fd5b8`](https://github.com/nodejs/node/commit/36617fd5b8)] - **doc**: add notes to http.get options (Raphael Okon) [#12124](https://github.com/nodejs/node/pull/12124) +* [[`9e6b0a4604`](https://github.com/nodejs/node/commit/9e6b0a4604)] - **test**: performance, remove Popen(shell=True) on Win (Refael Ackermann) [#12138](https://github.com/nodejs/node/pull/12138) +* [[`805ebef8b1`](https://github.com/nodejs/node/commit/805ebef8b1)] - **buffer**: optimize decoding wrapped base64 data (Alexey Orlenko) [#12146](https://github.com/nodejs/node/pull/12146) +* [[`fb34d9c210`](https://github.com/nodejs/node/commit/fb34d9c210)] - **test**: increase querystring coverage (DavidCai) [#12163](https://github.com/nodejs/node/pull/12163) +* [[`d6e9cf7c22`](https://github.com/nodejs/node/commit/d6e9cf7c22)] - **doc**: fix and update examples in http.md (Vse Mozhet Byt) [#12169](https://github.com/nodejs/node/pull/12169) +* [[`f057cc3d84`](https://github.com/nodejs/node/commit/f057cc3d84)] - **benchmark**: replace \[\].join() with ''.repeat() (Vse Mozhet Byt) [#12170](https://github.com/nodejs/node/pull/12170) +* [[`b15dc95848`](https://github.com/nodejs/node/commit/b15dc95848)] - **test**: fix flaky test-child-process-exec-timeout (Santiago Gimeno) [#12159](https://github.com/nodejs/node/pull/12159) +* [[`72a27b3eb5`](https://github.com/nodejs/node/commit/72a27b3eb5)] - **build**: use $(RM) in Makefile for consistency (Gibson Fahnestock) [#12157](https://github.com/nodejs/node/pull/12157) +* [[`3af9101d20`](https://github.com/nodejs/node/commit/3af9101d20)] - **doc, inspector**: note that the host is optional (Gibson Fahnestock) [#12149](https://github.com/nodejs/node/pull/12149) +* [[`b52b3f6710`](https://github.com/nodejs/node/commit/b52b3f6710)] - **test**: reduce buffer size in buffer-creation test (Sakthipriyan Vairamani (thefourtheye)) [#11177](https://github.com/nodejs/node/pull/11177) +* [[`b5283f9d4b`](https://github.com/nodejs/node/commit/b5283f9d4b)] - **doc**: add logo to README (Roman Reiss) [#12148](https://github.com/nodejs/node/pull/12148) +* [[`305f822a36`](https://github.com/nodejs/node/commit/305f822a36)] - **net**: rename internal functions for readability (Joyee Cheung) [#11796](https://github.com/nodejs/node/pull/11796) +* [[`2f88de1ce3`](https://github.com/nodejs/node/commit/2f88de1ce3)] - **vm**: use SetterCallback to set func declarations (AnnaMag) [#12051](https://github.com/nodejs/node/pull/12051) +* [[`ffbcfdfe32`](https://github.com/nodejs/node/commit/ffbcfdfe32)] - **src**: fix base64 decoding (Nikolai Vavilov) [#11995](https://github.com/nodejs/node/pull/11995) +* [[`8823861d9d`](https://github.com/nodejs/node/commit/8823861d9d)] - **tools**: update dotfile whitelist in .gitignore (Michaël Zasso) [#12116](https://github.com/nodejs/node/pull/12116) +* [[`87ca9a6ffe`](https://github.com/nodejs/node/commit/87ca9a6ffe)] - **test**: fix flaky child-process-exec-kill-throws (Rich Trott) [#12111](https://github.com/nodejs/node/pull/12111) +* [[`fdf76d5aa0`](https://github.com/nodejs/node/commit/fdf76d5aa0)] - **tools**: add missing #include "unicode/putil.h" (Steven R. Loomis) [#12078](https://github.com/nodejs/node/pull/12078) +* [[`6130d547a0`](https://github.com/nodejs/node/commit/6130d547a0)] - **deps**: backport 8dde6ac from upstream V8 (Daniel Bevenius) [#12060](https://github.com/nodejs/node/pull/12060) +* [[`1ee38eb874`](https://github.com/nodejs/node/commit/1ee38eb874)] - **(SEMVER-MINOR)** **util**: add %i and %f formatting specifiers (Roman Reiss) [#10308](https://github.com/nodejs/node/pull/10308) +* [[`5ac719d0d2`](https://github.com/nodejs/node/commit/5ac719d0d2)] - **doc**: add deprecations page to docs toc (Michaël Zasso) [#12268](https://github.com/nodejs/node/pull/12268) + ## 2017-03-28, Version 7.8.0 (Current), @MylesBorins @@ -40,7 +104,7 @@ * **buffer**: - do not segfault on out-of-range index (Timothy Gu) [#11927](https://github.com/nodejs/node/pull/11927) -* **crypto**: +* **crypto**: - Fix memory leak if certificate is revoked (Tom Atkinson) [#12089](https://github.com/nodejs/node/pull/12089) * **deps**: * upgrade npm to 4.2.0 (Kat Marchán) [#11389](https://github.com/nodejs/node/pull/11389) diff --git a/doc/node.1 b/doc/node.1 index 5f79a0c809a3a4..6792349787d31c 100644 --- a/doc/node.1 +++ b/doc/node.1 @@ -93,14 +93,14 @@ Preload the specified module at startup. Follows `require()`'s module resolution rules. \fImodule\fR may be either a path to a file, or a node module name. .TP -.BR \-\-inspect \fI[=host:port]\fR +.BR \-\-inspect \fI[=[host:]port]\fR Activate inspector on host:port. Default is 127.0.0.1:9229. V8 Inspector integration allows attaching Chrome DevTools and IDEs to Node.js instances for debugging and profiling. It uses the Chrome Debugging Protocol. .TP -.BR \-\-inspect-brk \fI[=host:port]\fR +.BR \-\-inspect-brk \fI[=[host:]port]\fR Activate inspector on host:port and break at start of user script. .TP diff --git a/doc/onboarding-extras.md b/doc/onboarding-extras.md index 4f507d64add5a3..b616d6d2b6d05c 100644 --- a/doc/onboarding-extras.md +++ b/doc/onboarding-extras.md @@ -27,6 +27,7 @@ | `test/*` | @nodejs/testing | | `tools/eslint`, `.eslintrc` | @not-an-aardvark, @silverwind, @trott | | async_hooks | @nodejs/diagnostics | +| performance | @nodejs/performance | | upgrading V8 | @nodejs/v8, @nodejs/post-mortem | | upgrading npm | @fishrock123, @MylesBorins | | upgrading c-ares | @jbergstroem | diff --git a/doc/releases.md b/doc/releases.md index 0e00248182ddb7..6433eeeacb14b4 100644 --- a/doc/releases.md +++ b/doc/releases.md @@ -188,13 +188,13 @@ Perform some smoke-testing. We have [citgm](https://github.com/nodejs/citgm) for If there is a reason to produce a test release for the purpose of having others try out installers or specifics of builds, produce a nightly build using **[iojs+release](https://ci-release.nodejs.org/job/iojs+release/)** and wait for it to drop in . Follow the directions and enter a proper length commit SHA, enter a date string, and select "nightly" for "disttype". -This is particularly recommended if there has been recent work relating to the OS X or Windows installers as they are not tested in any way by CI. +This is particularly recommended if there has been recent work relating to the macOS or Windows installers as they are not tested in any way by CI. ### 8. Produce Release Builds Use **[iojs+release](https://ci-release.nodejs.org/job/iojs+release/)** to produce release artifacts. Enter the commit that you want to build from and select "release" for "disttype". -Artifacts from each slave are uploaded to Jenkins and are available if further testing is required. Use this opportunity particularly to test OS X and Windows installers if there are any concerns. Click through to the individual slaves for a run to find the artifacts. +Artifacts from each slave are uploaded to Jenkins and are available if further testing is required. Use this opportunity particularly to test macOS and Windows installers if there are any concerns. Click through to the individual slaves for a run to find the artifacts. All release slaves should achieve "SUCCESS" (and be green, not red). A release with failures should not be promoted as there are likely problems to be investigated. @@ -204,7 +204,7 @@ If you have an error on Windows and need to start again, be aware that you'll ge ARMv7 takes the longest to compile. Unfortunately ccache isn't as effective on release builds, I think it's because of the additional macro settings that go in to a release build that nullify previous builds. Also most of the release build machines are separate to the test build machines so they don't get any benefit from ongoing compiles between releases. You can expect 1.5 hours for the ARMv7 builder to complete and you should normally wait for this to finish. It is possible to rush a release out if you want and add additional builds later but we normally provide ARMv7 from initial promotion. -You do not have to wait for the ARMv6 / Raspberry PI builds if they take longer than the others. It is only necessary to have the main Linux (x64 and x86), OS X .pkg and .tar.gz, Windows (x64 and x86) .msi and .exe, source, headers and docs (both produced currently by an OS X slave). **If you promote builds _before_ ARM builds have finished, you must repeat the promotion step for the ARM builds when they are ready**. +You do not have to wait for the ARMv6 / Raspberry PI builds if they take longer than the others. It is only necessary to have the main Linux (x64 and x86), macOS .pkg and .tar.gz, Windows (x64 and x86) .msi and .exe, source, headers and docs (both produced currently by an macOS slave). **If you promote builds _before_ ARM builds have finished, you must repeat the promotion step for the ARM builds when they are ready**. ### 9. Test the Build diff --git a/lib/_http_server.js b/lib/_http_server.js index 1d1d7ba7c6912b..46d0dbcee20fdb 100644 --- a/lib/_http_server.js +++ b/lib/_http_server.js @@ -236,11 +236,9 @@ function Server(requestListener) { this.on('request', requestListener); } - /* eslint-disable max-len */ // Similar option to this. Too lazy to write my own docs. // http://www.squid-cache.org/Doc/config/half_closed_clients/ // http://wiki.squid-cache.org/SquidFaq/InnerWorkings#What_is_a_half-closed_filedescriptor.3F - /* eslint-enable max-len */ this.httpAllowHalfOpen = false; this.on('connection', connectionListener); diff --git a/lib/buffer.js b/lib/buffer.js index ca73549eba4d00..f15de7d8accc4f 100644 --- a/lib/buffer.js +++ b/lib/buffer.js @@ -799,8 +799,8 @@ Buffer.prototype.write = function(string, offset, length, encoding) { Buffer.prototype.toJSON = function() { - if (this.length) { - const data = []; + if (this.length > 0) { + const data = new Array(this.length); for (var i = 0; i < this.length; ++i) data[i] = this[i]; return { type: 'Buffer', data }; diff --git a/lib/crypto.js b/lib/crypto.js index 9180ce70dce12e..1d8e294bd7bfe6 100644 --- a/lib/crypto.js +++ b/lib/crypto.js @@ -78,7 +78,8 @@ Hash.prototype.update = function update(data, encoding) { Hash.prototype.digest = function digest(outputEncoding) { outputEncoding = outputEncoding || exports.DEFAULT_ENCODING; - return this._handle.digest(outputEncoding); + // Explicit conversion for backward compatibility. + return this._handle.digest(`${outputEncoding}`); }; diff --git a/lib/events.js b/lib/events.js index ab167bb2fbd44b..968b95c9b34059 100644 --- a/lib/events.js +++ b/lib/events.js @@ -344,7 +344,7 @@ EventEmitter.prototype.removeListener = } else if (typeof list !== 'function') { position = -1; - for (i = list.length; i-- > 0;) { + for (i = list.length - 1; i >= 0; i--) { if (list[i] === listener || list[i].listener === listener) { originalListener = list[i].listener; position = i; @@ -356,7 +356,6 @@ EventEmitter.prototype.removeListener = return this; if (list.length === 1) { - list[0] = undefined; if (--this._eventsCount === 0) { this._events = new EventHandlers(); return this; @@ -365,8 +364,12 @@ EventEmitter.prototype.removeListener = } } else if (position === 0) { list.shift(); + if (list.length === 1) + events[type] = list[0]; } else { spliceOne(list, position); + if (list.length === 1) + events[type] = list[0]; } if (events.removeListener) @@ -378,7 +381,7 @@ EventEmitter.prototype.removeListener = EventEmitter.prototype.removeAllListeners = function removeAllListeners(type) { - var listeners, events; + var listeners, events, i; events = this._events; if (!events) @@ -401,7 +404,8 @@ EventEmitter.prototype.removeAllListeners = // emit removeListener for all listeners on all events if (arguments.length === 0) { var keys = Object.keys(events); - for (var i = 0, key; i < keys.length; ++i) { + var key; + for (i = 0; i < keys.length; ++i) { key = keys[i]; if (key === 'removeListener') continue; this.removeAllListeners(key); @@ -418,9 +422,9 @@ EventEmitter.prototype.removeAllListeners = this.removeListener(type, listeners); } else if (listeners) { // LIFO order - do { - this.removeListener(type, listeners[listeners.length - 1]); - } while (listeners[0]); + for (i = listeners.length - 1; i >= 0; i--) { + this.removeListener(type, listeners[i]); + } } return this; diff --git a/lib/internal/test/unicode.js b/lib/internal/test/unicode.js new file mode 100644 index 00000000000000..1445276d9ae891 --- /dev/null +++ b/lib/internal/test/unicode.js @@ -0,0 +1,6 @@ +'use strict'; + +// This module exists entirely for regression testing purposes. +// See `test/parallel/test-internal-unicode.js`. + +module.exports = '✓'; diff --git a/lib/net.js b/lib/net.js index 2b5e5baeb28812..4c1d205158f68f 100644 --- a/lib/net.js +++ b/lib/net.js @@ -321,10 +321,11 @@ Socket.prototype.read = function(n) { }; +// FIXME(joyeecheung): this method is neither documented nor tested Socket.prototype.listen = function() { debug('socket.listen'); this.on('connection', arguments[0]); - listen(this, null, null, null); + listenInCluster(this, null, null, null); }; @@ -1156,13 +1157,7 @@ util.inherits(Server, EventEmitter); function toNumber(x) { return (x = Number(x)) >= 0 ? x : false; } -function _listen(handle, backlog) { - // Use a backlog of 512 entries. We pass 511 to the listen() call because - // the kernel does: backlogsize = roundup_pow_of_two(backlogsize + 1); - // which will thus give us a backlog of 512 entries. - return handle.listen(backlog || 511); -} - +// Returns handle if it can be created, or error code if it can't function createServerHandle(address, port, addressType, fd) { var err = 0; // assign handle in listen, and clean up if bind or listen fails @@ -1219,19 +1214,19 @@ function createServerHandle(address, port, addressType, fd) { return handle; } - -Server.prototype._listen2 = function(address, port, addressType, backlog, fd) { - debug('listen2', address, port, addressType, backlog, fd); +function setupListenHandle(address, port, addressType, backlog, fd) { + debug('setupListenHandle', address, port, addressType, backlog, fd); // If there is not yet a handle, we need to create one and bind. // In the case of a server sent via IPC, we don't need to do this. if (this._handle) { - debug('_listen2: have a handle already'); + debug('setupListenHandle: have a handle already'); } else { - debug('_listen2: create a handle'); + debug('setupListenHandle: create a handle'); var rval = null; + // Try to bind to the unspecified IPv6 address, see if IPv6 is available if (!address && typeof fd !== 'number') { rval = createServerHandle('::', port, 6, fd); @@ -1259,7 +1254,10 @@ Server.prototype._listen2 = function(address, port, addressType, backlog, fd) { this._handle.onconnection = onconnection; this._handle.owner = this; - var err = _listen(this._handle, backlog); + // Use a backlog of 512 entries. We pass 511 to the listen() call because + // the kernel does: backlogsize = roundup_pow_of_two(backlogsize + 1); + // which will thus give us a backlog of 512 entries. + var err = this._handle.listen(backlog || 511); if (err) { var ex = exceptionWithHostPort(err, 'listen', address, port); @@ -1277,8 +1275,9 @@ Server.prototype._listen2 = function(address, port, addressType, backlog, fd) { this.unref(); process.nextTick(emitListeningNT, this); -}; +} +Server.prototype._listen2 = setupListenHandle; // legacy alias function emitErrorNT(self, err) { self.emit('error', err); @@ -1292,25 +1291,32 @@ function emitListeningNT(self) { } -function listen(self, address, port, addressType, backlog, fd, exclusive) { +function listenInCluster(server, address, port, addressType, + backlog, fd, exclusive) { exclusive = !!exclusive; if (!cluster) cluster = require('cluster'); if (cluster.isMaster || exclusive) { - self._listen2(address, port, addressType, backlog, fd); + // Will create a new handle + // _listen2 sets up the listened handle, it is still named like this + // to avoid breaking code that wraps this method + server._listen2(address, port, addressType, backlog, fd); return; } - cluster._getServer(self, { + const serverQuery = { address: address, port: port, addressType: addressType, fd: fd, flags: 0 - }, cb); + }; + + // Get the master's server handle, and listen on it + cluster._getServer(server, serverQuery, listenOnMasterHandle); - function cb(err, handle) { + function listenOnMasterHandle(err, handle) { // EADDRINUSE may not be reported until we call listen(). To complicate // matters, a failed bind() followed by listen() will implicitly bind to // a random port. Ergo, check that the socket is bound to the expected @@ -1328,11 +1334,14 @@ function listen(self, address, port, addressType, backlog, fd, exclusive) { if (err) { var ex = exceptionWithHostPort(err, 'bind', address, port); - return self.emit('error', ex); + return server.emit('error', ex); } - self._handle = handle; - self._listen2(address, port, addressType, backlog, fd); + // Reuse master's server handle + server._handle = handle; + // _listen2 sets up the listened handle, it is still named like this + // to avoid breaking code that wraps this method + server._listen2(address, port, addressType, backlog, fd); } } @@ -1359,12 +1368,12 @@ Server.prototype.listen = function() { // (handle[, backlog][, cb]) where handle is an object with a handle if (options instanceof TCP) { this._handle = options; - listen(this, null, -1, -1, backlogFromArgs); + listenInCluster(this, null, -1, -1, backlogFromArgs); return this; } // (handle[, backlog][, cb]) where handle is an object with a fd if (typeof options.fd === 'number' && options.fd >= 0) { - listen(this, null, null, null, backlogFromArgs, options.fd); + listenInCluster(this, null, null, null, backlogFromArgs, options.fd); return this; } @@ -1389,8 +1398,9 @@ Server.prototype.listen = function() { lookupAndListen(this, options.port | 0, options.host, backlog, options.exclusive); } else { // Undefined host, listens on unspecified address - listen(this, null, options.port | 0, 4, // addressType will be ignored - backlog, undefined, options.exclusive); + // Default addressType 4 will be used to search for master server + listenInCluster(this, null, options.port | 0, 4, + backlog, undefined, options.exclusive); } return this; } @@ -1400,7 +1410,8 @@ Server.prototype.listen = function() { if (options.path && isPipeName(options.path)) { const pipeName = this._pipeName = options.path; const backlog = options.backlog || backlogFromArgs; - listen(this, pipeName, -1, -1, backlog, undefined, options.exclusive); + listenInCluster(this, pipeName, -1, -1, + backlog, undefined, options.exclusive); return this; } @@ -1408,12 +1419,14 @@ Server.prototype.listen = function() { }; function lookupAndListen(self, port, address, backlog, exclusive) { - require('dns').lookup(address, function doListening(err, ip, addressType) { + const dns = require('dns'); + dns.lookup(address, function doListen(err, ip, addressType) { if (err) { self.emit('error', err); } else { addressType = ip ? addressType : 4; - listen(self, ip, port, addressType, backlog, undefined, exclusive); + listenInCluster(self, ip, port, addressType, + backlog, undefined, exclusive); } }); } diff --git a/lib/util.js b/lib/util.js index 3378109b6126ed..ce99ecfae6d2cf 100644 --- a/lib/util.js +++ b/lib/util.js @@ -89,6 +89,22 @@ exports.format = function(f) { str += Number(arguments[a++]); lastPos = i = i + 2; continue; + case 105: // 'i' + if (a >= argLen) + break; + if (lastPos < i) + str += f.slice(lastPos, i); + str += parseInt(arguments[a++]); + lastPos = i = i + 2; + continue; + case 102: // 'f' + if (a >= argLen) + break; + if (lastPos < i) + str += f.slice(lastPos, i); + str += parseFloat(arguments[a++]); + lastPos = i = i + 2; + continue; case 106: // 'j' if (a >= argLen) break; diff --git a/node.gyp b/node.gyp index c12fb4c0cf79f4..935b0e7195d3ba 100644 --- a/node.gyp +++ b/node.gyp @@ -98,6 +98,7 @@ 'lib/internal/readline.js', 'lib/internal/repl.js', 'lib/internal/socket_list.js', + 'lib/internal/test/unicode.js', 'lib/internal/url.js', 'lib/internal/util.js', 'lib/internal/v8_prof_polyfill.js', diff --git a/src/base64.h b/src/base64.h index 64c4e330c0db84..2e0f8e3858209e 100644 --- a/src/base64.h +++ b/src/base64.h @@ -52,36 +52,33 @@ extern const int8_t unbase64_table[256]; template -size_t base64_decode_slow(char* dst, size_t dstlen, - const TypeName* src, size_t srclen) { +bool base64_decode_group_slow(char* const dst, const size_t dstlen, + const TypeName* const src, const size_t srclen, + size_t* const i, size_t* const k) { uint8_t hi; uint8_t lo; - size_t i = 0; - size_t k = 0; - for (;;) { #define V(expr) \ - while (i < srclen) { \ - const uint8_t c = src[i]; \ - lo = unbase64(c); \ - i += 1; \ - if (lo < 64) \ - break; /* Legal character. */ \ - if (c == '=') \ - return k; \ - } \ - expr; \ - if (i >= srclen) \ - return k; \ - if (k >= dstlen) \ - return k; \ - hi = lo; - V(/* Nothing. */); - V(dst[k++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4)); - V(dst[k++] = ((hi & 0x0F) << 4) | ((lo & 0x3C) >> 2)); - V(dst[k++] = ((hi & 0x03) << 6) | ((lo & 0x3F) >> 0)); + for (;;) { \ + const uint8_t c = src[*i]; \ + lo = unbase64(c); \ + *i += 1; \ + if (lo < 64) \ + break; /* Legal character. */ \ + if (c == '=' || *i >= srclen) \ + return false; /* Stop decoding. */ \ + } \ + expr; \ + if (*i >= srclen) \ + return false; \ + if (*k >= dstlen) \ + return false; \ + hi = lo; + V(/* Nothing. */); + V(dst[(*k)++] = ((hi & 0x3F) << 2) | ((lo & 0x30) >> 4)); + V(dst[(*k)++] = ((hi & 0x0F) << 4) | ((lo & 0x3C) >> 2)); + V(dst[(*k)++] = ((hi & 0x03) << 6) | ((lo & 0x3F) >> 0)); #undef V - } - UNREACHABLE(); + return true; // Continue decoding. } @@ -90,8 +87,8 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen, const TypeName* const src, const size_t srclen, const size_t decoded_size) { const size_t available = dstlen < decoded_size ? dstlen : decoded_size; - const size_t max_i = srclen / 4 * 4; const size_t max_k = available / 3 * 3; + size_t max_i = srclen / 4 * 4; size_t i = 0; size_t k = 0; while (i < max_i && k < max_k) { @@ -102,16 +99,20 @@ size_t base64_decode_fast(char* const dst, const size_t dstlen, unbase64(src[i + 3]); // If MSB is set, input contains whitespace or is not valid base64. if (v & 0x80808080) { - break; + const size_t old_i = i; + if (!base64_decode_group_slow(dst, dstlen, src, srclen, &i, &k)) + return k; + max_i = old_i + (srclen - i) / 4 * 4; // Align max_i again. + } else { + dst[k + 0] = ((v >> 22) & 0xFC) | ((v >> 20) & 0x03); + dst[k + 1] = ((v >> 12) & 0xF0) | ((v >> 10) & 0x0F); + dst[k + 2] = ((v >> 2) & 0xC0) | ((v >> 0) & 0x3F); + i += 4; + k += 3; } - dst[k + 0] = ((v >> 22) & 0xFC) | ((v >> 20) & 0x03); - dst[k + 1] = ((v >> 12) & 0xF0) | ((v >> 10) & 0x0F); - dst[k + 2] = ((v >> 2) & 0xC0) | ((v >> 0) & 0x3F); - i += 4; - k += 3; } if (i < srclen && k < dstlen) { - return k + base64_decode_slow(dst + k, dstlen - k, src + i, srclen - i); + base64_decode_group_slow(dst, dstlen, src, srclen, &i, &k); } return k; } diff --git a/src/node.cc b/src/node.cc index 002ebd50500d13..3190d371f5ad04 100644 --- a/src/node.cc +++ b/src/node.cc @@ -63,6 +63,7 @@ #include #include +#include #if defined(NODE_HAVE_I18N_SUPPORT) #include @@ -153,7 +154,7 @@ static node_module* modlist_builtin; static node_module* modlist_linked; static node_module* modlist_addon; static bool trace_enabled = false; -static const char* trace_enabled_categories = nullptr; +static std::string trace_enabled_categories; // NOLINT(runtime/string) #if defined(NODE_HAVE_I18N_SUPPORT) // Path to ICU data (for i18n / Intl) @@ -1442,6 +1443,8 @@ enum encoding ParseEncoding(const char* encoding, enum encoding ParseEncoding(Isolate* isolate, Local encoding_v, enum encoding default_encoding) { + CHECK(!encoding_v.IsEmpty()); + if (!encoding_v->IsString()) return default_encoding; @@ -3481,9 +3484,10 @@ static void PrintHelp() { " -r, --require module to preload (option can be " "repeated)\n" #if HAVE_INSPECTOR - " --inspect[=host:port] activate inspector on host:port\n" + " --inspect[=[host:]port] activate inspector on host:port\n" " (default: 127.0.0.1:9229)\n" - " --inspect-brk[=host:port] activate inspector on host:port\n" + " --inspect-brk[=[host:]port]\n" + " activate inspector on host:port\n" " and break at start of user script\n" #endif " --no-deprecation silence deprecation warnings\n" @@ -4289,34 +4293,24 @@ void Init(int* argc, struct AtExitCallback { - AtExitCallback* next_; void (*cb_)(void* arg); void* arg_; }; -static AtExitCallback* at_exit_functions_; +static std::list at_exit_functions; // TODO(bnoordhuis) Turn into per-context event. void RunAtExit(Environment* env) { - AtExitCallback* p = at_exit_functions_; - at_exit_functions_ = nullptr; - - while (p) { - AtExitCallback* q = p->next_; - p->cb_(p->arg_); - delete p; - p = q; + for (AtExitCallback at_exit : at_exit_functions) { + at_exit.cb_(at_exit.arg_); } + at_exit_functions.clear(); } void AtExit(void (*cb)(void* arg), void* arg) { - AtExitCallback* p = new AtExitCallback; - p->cb_ = cb; - p->arg_ = arg; - p->next_ = at_exit_functions_; - at_exit_functions_ = p; + at_exit_functions.push_back(AtExitCallback{cb, arg}); } diff --git a/src/node_contextify.cc b/src/node_contextify.cc index 456c273b2b6d9b..3a0d4d3a1fd642 100644 --- a/src/node_contextify.cc +++ b/src/node_contextify.cc @@ -411,7 +411,17 @@ class ContextifyContext { // false for vmResult.x = 5 where vmResult = vm.runInContext(); bool is_contextual_store = ctx->global_proxy() != args.This(); - if (!is_declared && args.ShouldThrowOnError() && is_contextual_store) + // Indicator to not return before setting (undeclared) function declarations + // on the sandbox in strict mode, i.e. args.ShouldThrowOnError() = true. + // True for 'function f() {}', 'this.f = function() {}', + // 'var f = function()'. + // In effect only for 'function f() {}' because + // var f = function(), is_declared = true + // this.f = function() {}, is_contextual_store = false. + bool is_function = value->IsFunction(); + + if (!is_declared && args.ShouldThrowOnError() && is_contextual_store && + !is_function) return; ctx->sandbox()->Set(property, value); diff --git a/src/node_crypto.cc b/src/node_crypto.cc index a463a4667a63be..33732778af29ef 100644 --- a/src/node_crypto.cc +++ b/src/node_crypto.cc @@ -3769,9 +3769,8 @@ void Hmac::HmacDigest(const FunctionCallbackInfo& args) { enum encoding encoding = BUFFER; if (args.Length() >= 1) { - encoding = ParseEncoding(env->isolate(), - args[0]->ToString(env->isolate()), - BUFFER); + CHECK(args[0]->IsString()); + encoding = ParseEncoding(env->isolate(), args[0], BUFFER); } unsigned char* md_value = nullptr; @@ -3893,9 +3892,8 @@ void Hash::HashDigest(const FunctionCallbackInfo& args) { enum encoding encoding = BUFFER; if (args.Length() >= 1) { - encoding = ParseEncoding(env->isolate(), - args[0]->ToString(env->isolate()), - BUFFER); + CHECK(args[0]->IsString()); + encoding = ParseEncoding(env->isolate(), args[0], BUFFER); } unsigned char md_value[EVP_MAX_MD_SIZE]; @@ -4118,10 +4116,8 @@ void Sign::SignFinal(const FunctionCallbackInfo& args) { unsigned int len = args.Length(); enum encoding encoding = BUFFER; - if (len >= 2 && args[1]->IsString()) { - encoding = ParseEncoding(env->isolate(), - args[1]->ToString(env->isolate()), - BUFFER); + if (len >= 2) { + encoding = ParseEncoding(env->isolate(), args[1], BUFFER); } node::Utf8Value passphrase(env->isolate(), args[2]); @@ -4334,9 +4330,7 @@ void Verify::VerifyFinal(const FunctionCallbackInfo& args) { enum encoding encoding = UTF8; if (args.Length() >= 3) { - encoding = ParseEncoding(env->isolate(), - args[2]->ToString(env->isolate()), - UTF8); + encoding = ParseEncoding(env->isolate(), args[2], UTF8); } ssize_t hlen = StringBytes::Size(env->isolate(), args[1], encoding); diff --git a/src/node_version.h b/src/node_version.h index f8a63a76fed259..8c97d759b72295 100644 --- a/src/node_version.h +++ b/src/node_version.h @@ -2,10 +2,10 @@ #define SRC_NODE_VERSION_H_ #define NODE_MAJOR_VERSION 7 -#define NODE_MINOR_VERSION 8 -#define NODE_PATCH_VERSION 1 +#define NODE_MINOR_VERSION 9 +#define NODE_PATCH_VERSION 0 -#define NODE_VERSION_IS_RELEASE 0 +#define NODE_VERSION_IS_RELEASE 1 #ifndef NODE_STRINGIFY #define NODE_STRINGIFY(n) NODE_STRINGIFY_HELPER(n) diff --git a/src/tracing/agent.cc b/src/tracing/agent.cc index ceab09e5a2789c..669bae130c7f94 100644 --- a/src/tracing/agent.cc +++ b/src/tracing/agent.cc @@ -10,10 +10,11 @@ namespace node { namespace tracing { using v8::platform::tracing::TraceConfig; +using std::string; Agent::Agent() {} -void Agent::Start(v8::Platform* platform, const char* enabled_categories) { +void Agent::Start(v8::Platform* platform, const string& enabled_categories) { platform_ = platform; int err = uv_loop_init(&tracing_loop_); @@ -26,7 +27,7 @@ void Agent::Start(v8::Platform* platform, const char* enabled_categories) { tracing_controller_ = new TracingController(); TraceConfig* trace_config = new TraceConfig(); - if (enabled_categories) { + if (!enabled_categories.empty()) { std::stringstream category_list(enabled_categories); while (category_list.good()) { std::string category; diff --git a/src/tracing/agent.h b/src/tracing/agent.h index f6cb5af97f4bbc..2174d5b8965c2a 100644 --- a/src/tracing/agent.h +++ b/src/tracing/agent.h @@ -12,7 +12,7 @@ namespace tracing { class Agent { public: explicit Agent(); - void Start(v8::Platform* platform, const char* enabled_categories); + void Start(v8::Platform* platform, const std::string& enabled_categories); void Stop(); private: diff --git a/test/README.md b/test/README.md index ae549420624ccc..b40b15ad030c89 100644 --- a/test/README.md +++ b/test/README.md @@ -90,8 +90,12 @@ On how to run tests in this direcotry, see known_issues - No - Tests reproducing known issues within the system. + Yes + + Tests reproducing known issues within the system. All tests inside of + this directory are expected to fail consistently. If a test doesn't fail + on certain platforms, those should be skipped via `known_issues.status`. + message diff --git a/test/addons/make-callback-recurse/test.js b/test/addons/make-callback-recurse/test.js index 46b1327d7dedac..895769bc33029a 100644 --- a/test/addons/make-callback-recurse/test.js +++ b/test/addons/make-callback-recurse/test.js @@ -15,7 +15,7 @@ assert.throws(function() { makeCallback({}, function() { throw new Error('hi from domain error'); }); -}); +}, /^Error: hi from domain error$/); // Check the execution order of the nextTickQueue and MicrotaskQueue in diff --git a/test/fixtures/url-setter-tests.json b/test/fixtures/url-setter-tests.js similarity index 73% rename from test/fixtures/url-setter-tests.json rename to test/fixtures/url-setter-tests.js index d0138204b3fe6c..9b39d0bed67bfc 100644 --- a/test/fixtures/url-setter-tests.json +++ b/test/fixtures/url-setter-tests.js @@ -1,6 +1,12 @@ +'use strict'; + +/* WPT Refs: + https://github.com/w3c/web-platform-tests/blob/e48dd15/url/setters_tests.json + License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html +*/ +module.exports = { "comment": [ - "License: http://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html", "## Tests for setters of https://url.spec.whatwg.org/#urlutils-members", "", "This file contains a JSON object.", @@ -40,6 +46,14 @@ "protocol": "b:" } }, + { + "href": "javascript:alert(1)", + "new_value": "defuse", + "expected": { + "href": "defuse:alert(1)", + "protocol": "defuse:" + } + }, { "comment": "Upper-case ASCII is lower-cased", "href": "a://example.net", @@ -103,11 +117,11 @@ } }, { - "comment": "Can’t switch from special scheme to non-special", - "href": "http://example.net", - "new_value": "b", + "comment": "Can’t switch from URL containing username/password/port to file", + "href": "http://test@example.net", + "new_value": "file", "expected": { - "href": "http://example.net/", + "href": "http://test@example.net/", "protocol": "http:" } }, @@ -152,6 +166,15 @@ "protocol": "file:" } }, + { + "comment": "Can’t switch from special scheme to non-special", + "href": "http://example.net", + "new_value": "b", + "expected": { + "href": "http://example.net/", + "protocol": "http:" + } + }, { "href": "file://hi/path", "new_value": "s", @@ -265,6 +288,14 @@ "username": "" } }, + { + "href": "javascript:alert(1)", + "new_value": "wario", + "expected": { + "href": "javascript:alert(1)", + "username": "" + } + }, { "href": "http://example.net", "new_value": "me", @@ -314,7 +345,31 @@ "href": "http://%c3%89t%C3%A9@example.net/", "username": "%c3%89t%C3%A9" } - } + }, + { + "href": "sc:///", + "new_value": "x", + "expected": { + "href": "sc:///", + "username": "" + } + }, + { + "href": "javascript://x/", + "new_value": "wario", + "expected": { + "href": "javascript://wario@x/", + "username": "wario" + } + }, + // { + // "href": "file://test/", + // "new_value": "test", + // "expected": { + // "href": "file://test/", + // "username": "" + // } + // } ], "password": [ { @@ -393,9 +448,134 @@ "href": "http://:%c3%89t%C3%A9@example.net/", "password": "%c3%89t%C3%A9" } - } + }, + { + "href": "sc:///", + "new_value": "x", + "expected": { + "href": "sc:///", + "password": "" + } + }, + { + "href": "javascript://x/", + "new_value": "bowser", + "expected": { + "href": "javascript://:bowser@x/", + "password": "bowser" + } + }, + // { + // "href": "file://test/", + // "new_value": "test", + // "expected": { + // "href": "file://test/", + // "password": "" + // } + // } ], "host": [ + { + "comment": "Non-special scheme", + "href": "sc://x/", + "new_value": "\u0000", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, + // { + // "href": "sc://x/", + // "new_value": "\u0009", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "\u000A", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "\u000D", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + { + "href": "sc://x/", + "new_value": " ", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, + // { + // "href": "sc://x/", + // "new_value": "#", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "/", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "?", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + { + "href": "sc://x/", + "new_value": "@", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, + // { + // "href": "sc://x/", + // "new_value": "ß", + // "expected": { + // "href": "sc://%C3%9F/", + // "host": "%C3%9F", + // "hostname": "%C3%9F" + // } + // }, + { + "comment": "IDNA Nontransitional_Processing", + "href": "https://x/", + "new_value": "ß", + "expected": { + "href": "https://xn--zca/", + "host": "xn--zca", + "hostname": "xn--zca" + } + }, { "comment": "Cannot-be-a-base means no host", "href": "mailto:me@example.net", @@ -617,7 +797,7 @@ } }, { - "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain", + "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts", "href": "view-source+http://example.net/path", "new_value": "example.com\\stuff", "expected": { @@ -681,9 +861,187 @@ "hostname": "example.com", "port": "" } - } + }, + { + "comment": "Broken IPv6", + "href": "http://example.net/", + "new_value": "[google.com]", + "expected": { + "href": "http://example.net/", + "host": "example.net", + "hostname": "example.net" + } + }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.3.4x]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.3.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "file://y/", + // "new_value": "x:123", + // "expected": { + // "href": "file://y/", + // "host": "y", + // "hostname": "y", + // "port": "" + // } + // }, + // { + // "href": "file://y/", + // "new_value": "loc%41lhost", + // "expected": { + // "href": "file:///", + // "host": "", + // "hostname": "", + // "port": "" + // } + // }, + // { + // "href": "file://hi/x", + // "new_value": "", + // "expected": { + // "href": "file:///x", + // "host": "", + // "hostname": "", + // "port": "" + // } + // }, + // { + // "href": "sc://test@test/", + // "new_value": "", + // "expected": { + // "href": "sc://test@test/", + // "host": "test", + // "hostname": "test", + // "username": "test" + // } + // }, + // { + // "href": "sc://test:12/", + // "new_value": "", + // "expected": { + // "href": "sc://test:12/", + // "host": "test:12", + // "hostname": "test", + // "port": "12" + // } + // } ], "hostname": [ + { + "comment": "Non-special scheme", + "href": "sc://x/", + "new_value": "\u0000", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, + // { + // "href": "sc://x/", + // "new_value": "\u0009", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "\u000A", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "\u000D", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + { + "href": "sc://x/", + "new_value": " ", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, + // { + // "href": "sc://x/", + // "new_value": "#", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "/", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + // { + // "href": "sc://x/", + // "new_value": "?", + // "expected": { + // "href": "sc:///", + // "host": "", + // "hostname": "" + // } + // }, + { + "href": "sc://x/", + "new_value": "@", + "expected": { + "href": "sc://x/", + "host": "x", + "hostname": "x" + } + }, { "comment": "Cannot-be-a-base means no host", "href": "mailto:me@example.net", @@ -828,7 +1186,7 @@ } }, { - "comment": "\\ is not a delimiter for non-special schemes, and it’s invalid in a domain", + "comment": "\\ is not a delimiter for non-special schemes, but still forbidden in hosts", "href": "view-source+http://example.net/path", "new_value": "example.com\\stuff", "expected": { @@ -837,7 +1195,103 @@ "hostname": "example.net", "port": "" } - } + }, + { + "comment": "Broken IPv6", + "href": "http://example.net/", + "new_value": "[google.com]", + "expected": { + "href": "http://example.net/", + "host": "example.net", + "hostname": "example.net" + } + }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.3.4x]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.3.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.2.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "http://example.net/", + // "new_value": "[::1.]", + // "expected": { + // "href": "http://example.net/", + // "host": "example.net", + // "hostname": "example.net" + // } + // }, + // { + // "href": "file://y/", + // "new_value": "x:123", + // "expected": { + // "href": "file://y/", + // "host": "y", + // "hostname": "y", + // "port": "" + // } + // }, + // { + // "href": "file://y/", + // "new_value": "loc%41lhost", + // "expected": { + // "href": "file:///", + // "host": "", + // "hostname": "", + // "port": "" + // } + // }, + // { + // "href": "file://hi/x", + // "new_value": "", + // "expected": { + // "href": "file:///x", + // "host": "", + // "hostname": "", + // "port": "" + // } + // }, + // { + // "href": "sc://test@test/", + // "new_value": "", + // "expected": { + // "href": "sc://test@test/", + // "host": "test", + // "hostname": "test", + // "username": "test" + // } + // }, + // { + // "href": "sc://test:12/", + // "new_value": "", + // "expected": { + // "href": "sc://test:12/", + // "host": "test:12", + // "hostname": "test", + // "port": "12" + // } + // } ], "port": [ { @@ -992,6 +1446,65 @@ "hostname": "example.net", "port": "8080" } + }, + { + "comment": "Port numbers are 16 bit integers, overflowing is an error", + "href": "non-special://example.net:8080/path", + "new_value": "65536", + "expected": { + "href": "non-special://example.net:8080/path", + "host": "example.net:8080", + "hostname": "example.net", + "port": "8080" + } + }, + { + "href": "file://test/", + "new_value": "12", + "expected": { + "href": "file://test/", + "port": "" + } + }, + { + "href": "file://localhost/", + "new_value": "12", + "expected": { + "href": "file:///", + "port": "" + } + }, + { + "href": "non-base:value", + "new_value": "12", + "expected": { + "href": "non-base:value", + "port": "" + } + }, + { + "href": "sc:///", + "new_value": "12", + "expected": { + "href": "sc:///", + "port": "" + } + }, + { + "href": "sc://x/", + "new_value": "12", + "expected": { + "href": "sc://x:12/", + "port": "12" + } + }, + { + "href": "javascript://x/", + "new_value": "12", + "expected": { + "href": "javascript://x:12/", + "port": "12" + } } ], "pathname": [ @@ -1224,6 +1737,14 @@ "href": "http://example.net/#%c3%89t%C3%A9", "hash": "#%c3%89t%C3%A9" } - } + }, + // { + // "href": "javascript:alert(1)", + // "new_value": "castle", + // "expected": { + // "href": "javascript:alert(1)#castle", + // "hash": "#castle" + // } + // } ] } diff --git a/test/known_issues/known_issues.status b/test/known_issues/known_issues.status index 12e4b10d06d578..46c8ed32741c7d 100644 --- a/test/known_issues/known_issues.status +++ b/test/known_issues/known_issues.status @@ -8,6 +8,7 @@ prefix known_issues [$system==win32] test-stdout-buffer-flush-on-exit: SKIP +test-cluster-disconnect-handles: SKIP [$system==linux] diff --git a/test/parallel/parallel.status b/test/parallel/parallel.status index e01e1428955ca7..4703fdd05e2dae 100644 --- a/test/parallel/parallel.status +++ b/test/parallel/parallel.status @@ -7,9 +7,6 @@ prefix parallel [true] # This section applies to all platforms [$system==win32] -# See https://github.com/nodejs/node/issues/12053, this test may be exposing a -# genuine bug with kill() on Windows. -test-child-process-exec-kill-throws : PASS,FLAKY [$system==linux] diff --git a/test/parallel/test-buffer-alloc.js b/test/parallel/test-buffer-alloc.js index e9dfd9d895bb77..42d0dd6f4a0ef2 100644 --- a/test/parallel/test-buffer-alloc.js +++ b/test/parallel/test-buffer-alloc.js @@ -462,6 +462,10 @@ assert.strictEqual( // Regression test for https://github.com/nodejs/node/issues/3496. assert.strictEqual(Buffer.from('=bad'.repeat(1e4), 'base64').length, 0); +// Regression test for https://github.com/nodejs/node/issues/11987. +assert.deepStrictEqual(Buffer.from('w0 ', 'base64'), + Buffer.from('w0', 'base64')); + { // Creating buffers larger than pool size. const l = Buffer.poolSize + 5; diff --git a/test/parallel/test-child-process-exec-kill-throws.js b/test/parallel/test-child-process-exec-kill-throws.js index d9473222a4551a..d5bc5305847107 100644 --- a/test/parallel/test-child-process-exec-kill-throws.js +++ b/test/parallel/test-child-process-exec-kill-throws.js @@ -3,12 +3,13 @@ const common = require('../common'); const assert = require('assert'); const cp = require('child_process'); -const internalCp = require('internal/child_process'); if (process.argv[2] === 'child') { - // Keep the process alive and printing to stdout. - setInterval(() => { console.log('foo'); }, 1); + // Since maxBuffer is 0, this should trigger an error. + console.log('foo'); } else { + const internalCp = require('internal/child_process'); + // Monkey patch ChildProcess#kill() to kill the process and then throw. const kill = internalCp.ChildProcess.prototype.kill; @@ -21,7 +22,7 @@ if (process.argv[2] === 'child') { const options = { maxBuffer: 0 }; const child = cp.exec(cmd, options, common.mustCall((err, stdout, stderr) => { // Verify that if ChildProcess#kill() throws, the error is reported. - assert(/^Error: mock error$/.test(err)); + assert.strictEqual(err.message, 'mock error', err); assert.strictEqual(stdout, ''); assert.strictEqual(stderr, ''); assert.strictEqual(child.killed, true); diff --git a/test/parallel/test-child-process-exec-timeout.js b/test/parallel/test-child-process-exec-timeout.js index b28fdf6581a9f4..63534d8cbc3e01 100644 --- a/test/parallel/test-child-process-exec-timeout.js +++ b/test/parallel/test-child-process-exec-timeout.js @@ -18,7 +18,13 @@ const cmd = `${process.execPath} ${__filename} child`; cp.exec(cmd, { timeout: 1 }, common.mustCall((err, stdout, stderr) => { assert.strictEqual(err.killed, true); assert.strictEqual(err.code, null); - assert.strictEqual(err.signal, 'SIGTERM'); + // At least starting with Darwin Kernel Version 16.4.0, sending a SIGTERM to a + // process that is still starting up kills it with SIGKILL instead of SIGTERM. + // See: https://github.com/libuv/libuv/issues/1226 + if (common.isOSX) + assert.ok(err.signal === 'SIGTERM' || err.signal === 'SIGKILL'); + else + assert.strictEqual(err.signal, 'SIGTERM'); assert.strictEqual(err.cmd, cmd); assert.strictEqual(stdout.trim(), ''); assert.strictEqual(stderr.trim(), ''); diff --git a/test/parallel/test-event-emitter-remove-listeners.js b/test/parallel/test-event-emitter-remove-listeners.js index dfdae52d1cf21d..727523eabdb29a 100644 --- a/test/parallel/test-event-emitter-remove-listeners.js +++ b/test/parallel/test-event-emitter-remove-listeners.js @@ -136,3 +136,20 @@ assert.throws(() => { const e = ee.removeListener('foo', listener); assert.strictEqual(e, ee); } + +{ + const ee = new EventEmitter(); + + ee.on('foo', listener1); + ee.on('foo', listener2); + assert.deepStrictEqual(ee.listeners('foo'), [listener1, listener2]); + + ee.removeListener('foo', listener1); + assert.strictEqual(ee._events.foo, listener2); + + ee.on('foo', listener1); + assert.deepStrictEqual(ee.listeners('foo'), [listener2, listener1]); + + ee.removeListener('foo', listener1); + assert.strictEqual(ee._events.foo, listener2); +} diff --git a/test/parallel/test-fs-mkdtemp-prefix-check.js b/test/parallel/test-fs-mkdtemp-prefix-check.js new file mode 100644 index 00000000000000..786d0fe7bae169 --- /dev/null +++ b/test/parallel/test-fs-mkdtemp-prefix-check.js @@ -0,0 +1,25 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const fs = require('fs'); + +const expectedError = /^TypeError: filename prefix is required$/; +const prefixValues = [undefined, null, 0, true, false, 1, '']; + +function fail(value) { + assert.throws( + () => fs.mkdtempSync(value, {}), + expectedError + ); +} + +function failAsync(value) { + assert.throws( + () => fs.mkdtemp(value, common.mustNotCall()), expectedError + ); +} + +prefixValues.forEach((prefixValue) => { + fail(prefixValue); + failAsync(prefixValue); +}); diff --git a/test/parallel/test-internal-socket-list-receive.js b/test/parallel/test-internal-socket-list-receive.js new file mode 100644 index 00000000000000..db781cb505c981 --- /dev/null +++ b/test/parallel/test-internal-socket-list-receive.js @@ -0,0 +1,67 @@ +// Flags: --expose-internals +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const EventEmitter = require('events'); +const SocketListReceive = require('internal/socket_list').SocketListReceive; + +const key = 'test-key'; + +// Verify that the message won't be sent when slave is not connected. +{ + const slave = Object.assign(new EventEmitter(), { + connected: false, + send: common.mustNotCall() + }); + + const list = new SocketListReceive(slave, key); + list.slave.emit('internalMessage', { key, cmd: 'NODE_SOCKET_NOTIFY_CLOSE' }); +} + +// Verify that a "NODE_SOCKET_ALL_CLOSED" message will be sent. +{ + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: common.mustCall((msg) => { + assert.strictEqual(msg.cmd, 'NODE_SOCKET_ALL_CLOSED'); + assert.strictEqual(msg.key, key); + }) + }); + + const list = new SocketListReceive(slave, key); + list.slave.emit('internalMessage', { key, cmd: 'NODE_SOCKET_NOTIFY_CLOSE' }); +} + +// Verify that a "NODE_SOCKET_COUNT" message will be sent. +{ + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: common.mustCall((msg) => { + assert.strictEqual(msg.cmd, 'NODE_SOCKET_COUNT'); + assert.strictEqual(msg.key, key); + assert.strictEqual(msg.count, 0); + }) + }); + + const list = new SocketListReceive(slave, key); + list.slave.emit('internalMessage', { key, cmd: 'NODE_SOCKET_GET_COUNT' }); +} + +// Verify that the connections count is added and an "empty" event +// will be emitted when all sockets in obj were closed. +{ + const slave = new EventEmitter(); + const obj = { socket: new EventEmitter() }; + + const list = new SocketListReceive(slave, key); + assert.strictEqual(list.connections, 0); + + list.add(obj); + assert.strictEqual(list.connections, 1); + + list.on('empty', common.mustCall((self) => assert.strictEqual(self, list))); + + obj.socket.emit('close'); + assert.strictEqual(list.connections, 0); +} diff --git a/test/parallel/test-internal-socket-list-send.js b/test/parallel/test-internal-socket-list-send.js new file mode 100644 index 00000000000000..391ecc234076d5 --- /dev/null +++ b/test/parallel/test-internal-socket-list-send.js @@ -0,0 +1,114 @@ +// Flags: --expose-internals +'use strict'; + +const common = require('../common'); +const assert = require('assert'); +const EventEmitter = require('events'); +const SocketListSend = require('internal/socket_list').SocketListSend; + +const key = 'test-key'; + +// Verify that an error will be received in callback when slave is not +// connected. +{ + const slave = Object.assign(new EventEmitter(), { connected: false }); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + + const list = new SocketListSend(slave, 'test'); + + list._request('msg', 'cmd', common.mustCall((err) => { + assert.strictEqual(err.message, 'Slave closed before reply'); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + })); +} + +// Verify that the given message will be received in callback. +{ + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: function(msg) { + process.nextTick(() => + this.emit('internalMessage', { key, cmd: 'cmd' }) + ); + } + }); + + const list = new SocketListSend(slave, key); + + list._request('msg', 'cmd', common.mustCall((err, msg) => { + assert.strictEqual(err, null); + assert.strictEqual(msg.cmd, 'cmd'); + assert.strictEqual(msg.key, key); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + assert.strictEqual(slave.listenerCount('disconnect'), 0); + })); +} + +// Verify that an error will be received in callback when slave was +// disconnected. +{ + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: function(msg) { process.nextTick(() => this.emit('disconnect')); } + }); + + const list = new SocketListSend(slave, key); + + list._request('msg', 'cmd', common.mustCall((err) => { + assert.strictEqual(err.message, 'Slave closed before reply'); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + })); +} + +// Verify that a "NODE_SOCKET_ALL_CLOSED" message will be received +// in callback. +{ + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: function(msg) { + assert.strictEqual(msg.cmd, 'NODE_SOCKET_NOTIFY_CLOSE'); + assert.strictEqual(msg.key, key); + process.nextTick(() => + this.emit('internalMessage', { key, cmd: 'NODE_SOCKET_ALL_CLOSED' }) + ); + } + }); + + const list = new SocketListSend(slave, key); + + list.close(common.mustCall((err, msg) => { + assert.strictEqual(err, null); + assert.strictEqual(msg.cmd, 'NODE_SOCKET_ALL_CLOSED'); + assert.strictEqual(msg.key, key); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + assert.strictEqual(slave.listenerCount('disconnect'), 0); + })); +} + +// Verify that the count of connections will be received in callback. +{ + const count = 1; + const slave = Object.assign(new EventEmitter(), { + connected: true, + send: function(msg) { + assert.strictEqual(msg.cmd, 'NODE_SOCKET_GET_COUNT'); + assert.strictEqual(msg.key, key); + process.nextTick(() => + this.emit('internalMessage', { + key, + count, + cmd: 'NODE_SOCKET_COUNT' + }) + ); + } + }); + + const list = new SocketListSend(slave, key); + + list.getConnections(common.mustCall((err, msg) => { + assert.strictEqual(err, null); + assert.strictEqual(msg, count); + assert.strictEqual(slave.listenerCount('internalMessage'), 0); + assert.strictEqual(slave.listenerCount('disconnect'), 0); + })); +} diff --git a/test/parallel/test-internal-unicode.js b/test/parallel/test-internal-unicode.js new file mode 100644 index 00000000000000..0a36309c09f651 --- /dev/null +++ b/test/parallel/test-internal-unicode.js @@ -0,0 +1,12 @@ +'use strict'; +require('../common'); + +// Flags: --expose-internals +// +// This test ensures that UTF-8 characters can be used in core JavaScript +// libraries built into Node's binary. + +const assert = require('assert'); +const character = require('internal/test/unicode'); + +assert.strictEqual(character, '✓'); diff --git a/test/parallel/test-mkdtemp-sync-prefix-check.js b/test/parallel/test-mkdtemp-sync-prefix-check.js deleted file mode 100644 index 825f622f069b5e..00000000000000 --- a/test/parallel/test-mkdtemp-sync-prefix-check.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; -require('../common'); -const assert = require('assert'); -const fs = require('fs'); - -const assertValues = [undefined, null, 0, true, false, 1]; - -assertValues.forEach((assertValue) => { - assert.throws( - () => fs.mkdtempSync(assertValue, {}), - /^TypeError: filename prefix is required$/ - ); -}); diff --git a/test/parallel/test-process-env.js b/test/parallel/test-process-env.js index 5ea0a4a57efc68..cc173e2e3147e0 100644 --- a/test/parallel/test-process-env.js +++ b/test/parallel/test-process-env.js @@ -49,7 +49,6 @@ if (process.argv[2] === 'you-are-the-child') { delete process.env.NON_EXISTING_VARIABLE; assert.strictEqual(true, delete process.env.NON_EXISTING_VARIABLE); -/* eslint-disable max-len */ /* For the moment we are not going to support setting the timezone via the * environment variables. The problem is that various V8 platform backends * deal with timezone in different ways. The windows platform backend caches @@ -66,7 +65,6 @@ date = new Date('Fri, 10 Sep 1982 03:15:00 GMT'); assert.strictEqual(3, date.getUTCHours()); assert.strictEqual(5, date.getHours()); */ -/* eslint-enable max-len */ // Environment variables should be case-insensitive on Windows, and // case-sensitive on other platforms. diff --git a/test/parallel/test-querystring-escape.js b/test/parallel/test-querystring-escape.js index 17073a66bda35a..c62f19a0ae858f 100644 --- a/test/parallel/test-querystring-escape.js +++ b/test/parallel/test-querystring-escape.js @@ -9,6 +9,11 @@ assert.deepStrictEqual(qs.escape('test'), 'test'); assert.deepStrictEqual(qs.escape({}), '%5Bobject%20Object%5D'); assert.deepStrictEqual(qs.escape([5, 10]), '5%2C10'); assert.deepStrictEqual(qs.escape('Ŋōđĕ'), '%C5%8A%C5%8D%C4%91%C4%95'); +assert.deepStrictEqual(qs.escape('testŊōđĕ'), 'test%C5%8A%C5%8D%C4%91%C4%95'); +assert.deepStrictEqual(qs.escape(`${String.fromCharCode(0xD800 + 1)}test`), + '%F0%90%91%B4est'); +assert.throws(() => qs.escape(String.fromCharCode(0xD800 + 1)), + /^URIError: URI malformed$/); // using toString for objects assert.strictEqual( @@ -17,9 +22,11 @@ assert.strictEqual( ); // toString is not callable, must throw an error -assert.throws(() => qs.escape({toString: 5})); +assert.throws(() => qs.escape({toString: 5}), + /^TypeError: Cannot convert object to primitive value$/); // should use valueOf instead of non-callable toString assert.strictEqual(qs.escape({toString: 5, valueOf: () => 'test'}), 'test'); -assert.throws(() => qs.escape(Symbol('test'))); +assert.throws(() => qs.escape(Symbol('test')), + /^TypeError: Cannot convert a Symbol value to a string$/); diff --git a/test/parallel/test-querystring.js b/test/parallel/test-querystring.js index 2c8e756efda0de..d8d1fbfbcf927e 100644 --- a/test/parallel/test-querystring.js +++ b/test/parallel/test-querystring.js @@ -308,6 +308,8 @@ function demoDecode(str) { } check(qs.parse('a=a&b=b&c=c', null, null, { decodeURIComponent: demoDecode }), { aa: 'aa', bb: 'bb', cc: 'cc' }); +check(qs.parse('a=a&b=b&c=c', null, '==', { decodeURIComponent: (str) => str }), + { 'a=a': '', 'b=b': '', 'c=c': '' }); // Test QueryString.unescape function errDecode(str) { diff --git a/test/parallel/test-regress-GH-9819.js b/test/parallel/test-regress-GH-9819.js new file mode 100644 index 00000000000000..f043bc3b2848e7 --- /dev/null +++ b/test/parallel/test-regress-GH-9819.js @@ -0,0 +1,24 @@ +'use strict'; +const common = require('../common'); +const assert = require('assert'); +const execFile = require('child_process').execFile; + +if (!common.hasCrypto) { + common.skip('missing crypto'); + return; +} + +const setup = 'const enc = { toString: () => { throw new Error("xyz"); } };'; + +const scripts = [ + 'crypto.createHash("sha256").digest(enc)', + 'crypto.createHmac("sha256", "msg").digest(enc)' +]; + +scripts.forEach((script) => { + const node = process.execPath; + const code = setup + ';' + script; + execFile(node, [ '-e', code ], common.mustCall((err, stdout, stderr) => { + assert(stderr.includes('Error: xyz'), 'digest crashes'); + })); +}); diff --git a/test/parallel/test-util-format.js b/test/parallel/test-util-format.js index 71265e4b6a37f8..5e326dd516896c 100644 --- a/test/parallel/test-util-format.js +++ b/test/parallel/test-util-format.js @@ -27,21 +27,51 @@ assert.throws(function() { util.format('%d', symbol); }, TypeError); +// Number format specifier +assert.strictEqual(util.format('%d'), '%d'); assert.strictEqual(util.format('%d', 42.0), '42'); assert.strictEqual(util.format('%d', 42), '42'); -assert.strictEqual(util.format('%s', 42), '42'); -assert.strictEqual(util.format('%j', 42), '42'); - -assert.strictEqual(util.format('%d', '42.0'), '42'); assert.strictEqual(util.format('%d', '42'), '42'); -assert.strictEqual(util.format('%s', '42'), '42'); -assert.strictEqual(util.format('%j', '42'), '"42"'); +assert.strictEqual(util.format('%d', '42.0'), '42'); +assert.strictEqual(util.format('%d', 1.5), '1.5'); +assert.strictEqual(util.format('%d', -0.5), '-0.5'); +assert.strictEqual(util.format('%d', ''), '0'); -assert.strictEqual(util.format('%%s%s', 'foo'), '%sfoo'); +// Integer format specifier +assert.strictEqual(util.format('%i'), '%i'); +assert.strictEqual(util.format('%i', 42.0), '42'); +assert.strictEqual(util.format('%i', 42), '42'); +assert.strictEqual(util.format('%i', '42'), '42'); +assert.strictEqual(util.format('%i', '42.0'), '42'); +assert.strictEqual(util.format('%i', 1.5), '1'); +assert.strictEqual(util.format('%i', -0.5), '0'); +assert.strictEqual(util.format('%i', ''), 'NaN'); + +// Float format specifier +assert.strictEqual(util.format('%f'), '%f'); +assert.strictEqual(util.format('%f', 42.0), '42'); +assert.strictEqual(util.format('%f', 42), '42'); +assert.strictEqual(util.format('%f', '42'), '42'); +assert.strictEqual(util.format('%f', '42.0'), '42'); +assert.strictEqual(util.format('%f', 1.5), '1.5'); +assert.strictEqual(util.format('%f', -0.5), '-0.5'); +assert.strictEqual(util.format('%f', Math.PI), '3.141592653589793'); +assert.strictEqual(util.format('%f', ''), 'NaN'); +// String format specifier assert.strictEqual(util.format('%s'), '%s'); assert.strictEqual(util.format('%s', undefined), 'undefined'); assert.strictEqual(util.format('%s', 'foo'), 'foo'); +assert.strictEqual(util.format('%s', 42), '42'); +assert.strictEqual(util.format('%s', '42'), '42'); + +// JSON format specifier +assert.strictEqual(util.format('%j'), '%j'); +assert.strictEqual(util.format('%j', 42), '42'); +assert.strictEqual(util.format('%j', '42'), '"42"'); + +// Various format specifiers +assert.strictEqual(util.format('%%s%s', 'foo'), '%sfoo'); assert.strictEqual(util.format('%s:%s'), '%s:%s'); assert.strictEqual(util.format('%s:%s', undefined), 'undefined:%s'); assert.strictEqual(util.format('%s:%s', 'foo'), 'foo:%s'); @@ -50,11 +80,9 @@ assert.strictEqual(util.format('%s:%s', 'foo', 'bar', 'baz'), 'foo:bar baz'); assert.strictEqual(util.format('%%%s%%', 'hi'), '%hi%'); assert.strictEqual(util.format('%%%s%%%%', 'hi'), '%hi%%'); assert.strictEqual(util.format('%sbc%%def', 'a'), 'abc%def'); - assert.strictEqual(util.format('%d:%d', 12, 30), '12:30'); assert.strictEqual(util.format('%d:%d', 12), '12:%d'); assert.strictEqual(util.format('%d:%d'), '%d:%d'); - assert.strictEqual(util.format('o: %j, a: %j', {}, []), 'o: {}, a: []'); assert.strictEqual(util.format('o: %j, a: %j', {}), 'o: {}, a: %j'); assert.strictEqual(util.format('o: %j, a: %j'), 'o: %j, a: %j'); diff --git a/test/parallel/test-whatwg-url-setters.js b/test/parallel/test-whatwg-url-setters.js index 409ed1bd00d36c..63ebba84918945 100644 --- a/test/parallel/test-whatwg-url-setters.js +++ b/test/parallel/test-whatwg-url-setters.js @@ -12,7 +12,7 @@ if (!common.hasIntl) { } const request = { - response: require(path.join(common.fixturesDir, 'url-setter-tests.json')) + response: require(path.join(common.fixturesDir, 'url-setter-tests')) }; /* eslint-disable */ diff --git a/test/sequential/test-buffer-creation-regression.js b/test/sequential/test-buffer-creation-regression.js index b5c8450e036cc8..8137e4830a9cb0 100644 --- a/test/sequential/test-buffer-creation-regression.js +++ b/test/sequential/test-buffer-creation-regression.js @@ -20,9 +20,9 @@ const acceptableOOMErrors = [ 'Invalid array buffer length' ]; -const size = 8589934592; /* 1 << 33 */ -const offset = 4294967296; /* 1 << 32 */ const length = 1000; +const offset = 4294967296; /* 1 << 32 */ +const size = offset + length; let arrayBuffer; try { diff --git a/tools/eslint/CHANGELOG.md b/tools/eslint/CHANGELOG.md new file mode 100644 index 00000000000000..4f4b3bbdb3fbbc --- /dev/null +++ b/tools/eslint/CHANGELOG.md @@ -0,0 +1,3939 @@ +v3.19.0 - March 31, 2017 + +* e09132f Fix: no-extra-parens false positive with exports and object literals (#8359) (Teddy Katz) +* 91baed4 Update: allow custom messages in no-restricted-syntax (fixes #8298) (#8357) (Vitor Balocco) +* 35c93e6 Fix: prevent space-before-function-paren from checking type annotations (#8349) (Teddy Katz) +* 3342e9f Fix: don't modify operator precedence in operator-assignment autofixer (#8358) (Teddy Katz) +* f88375f Docs: clarify that no-unsafe-negation is in eslint:recommended (#8371) (Teddy Katz) +* 02f0d27 Docs: Add soda0289 to Development Team (#8367) (Kai Cataldo) +* 155424c Fix: ignore empty path in patterns (fixes #8362) (#8364) (alberto) +* 27616a8 Fix: prefer-const false positive with object spread (fixes #8187) (#8297) (Vitor Balocco) +* 8569a90 Docs: add note about git's linebreak handling to linebreak-style docs (#8361) (Teddy Katz) +* 5878593 Chore: fix invalid syntax in no-param-reassign test (#8360) (Teddy Katz) +* 1b1046b Fix: don't classify plugins that throw errors as "missing" (fixes #6874) (#8323) (Teddy Katz) +* 29f4ba5 Fix: no-useless-computed-key invalid autofix for getters and setters (#8335) (Teddy Katz) +* 0541eaf Fix: no-implicit-coercion invalid autofix with consecutive identifiers (#8340) (Teddy Katz) +* 41b9786 Fix: no-extra-parens false positive with objects following arrows (#8339) (Teddy Katz) +* 3146167 Fix: `eslint.verify` should not mutate config argument (fixes #8329) (#8334) (alberto) +* 927de90 Fix: dot-notation autofix produces invalid syntax for integer properties (#8332) (Teddy Katz) +* a9d1bea Fix: comma-style autofix produces errors on parenthesized elements (#8331) (Teddy Katz) +* d52173f Fix: don't generate invalid options in config-rule (#8326) (Teddy Katz) +* 6eda3b5 Fix: no-extra-parens invalid autofix in for-of statements (#8337) (Teddy Katz) +* 6c819d8 Fix: dot-notation autofix produces errors on parenthesized computed keys (#8330) (Teddy Katz) +* 2d883d7 Fix: object-shorthand autofix produces errors on parenthesized functions (#8328) (Teddy Katz) +* cd9b774 Fix: quotes false positive with backtick option in method names (#8327) (Teddy Katz) +* d064ba2 Fix: no-else-return false positive for ifs in single-statement position (#8338) (Teddy Katz) +* 6a718ba Chore: enable max-statements-per-line on ESLint codebase (#8321) (Teddy Katz) +* 614b62e Chore: update sinon calls to deprecated API. (#8310) (alberto) +* 0491572 Chore: use precalculated counts in codeframe formatter (#8296) (Vitor Balocco) +* 8733e6a Chore: Fix incorrect error location properties in tests (#8307) (alberto) +* c4ffb49 Chore: Fix typos in test option assertions (#8305) (Teddy Katz) +* 79a97cb Upgrade: devDependencies (#8303) (alberto) +* e4da200 Upgrade: Mocha to 3.2.0 (#8299) (Ilya Volodin) +* 2f144ca Fix: operator-assignment autofix errors with parentheses (fixes #8293) (#8294) (Teddy Katz) +* 7521cd5 Chore: update token logic in rules to use ast-utils (#8288) (Teddy Katz) +* 9b509ce Chore: refactor space-before-function-paren rule (#8284) (Teddy Katz) +* ddc6350 Fix: no-param-reassign false positive on destructuring (fixes #8279) (#8281) (Teddy Katz) +* f8176b3 Chore: improve test coverage for node-event-generator (#8287) (Teddy Katz) +* 602e9c2 Docs: fix incorrect selector examples (#8278) (Teddy Katz) + +v3.18.0 - March 17, 2017 + +* 85f74ca Fix: broken code path of direct nested loops (fixes #8248) (#8274) (Toru Nagashima) +* a61c359 Fix: Ignore hidden folders when resolving globs (fixes #8259) (#8270) (Ian VanSchooten) +* 6f05546 Chore: convert StubModuleResolver in config tests to ES6 class (#8265) (Teddy Katz) +* 0c0fc31 Fix: false positive of no-extra-parens about spread and sequense (#8275) (Toru Nagashima) +* e104973 Docs: remove self-reference in no-restricted-syntax docs (#8277) (Vitor Balocco) +* 23eca51 Update: Add allowTaggedTemplates to no-unused-expressions (fixes #7632) (#8253) (Kevin Partington) +* f9ede3f Upgrade: doctrine to 2.0.0 (#8269) (alberto) +* 1b678a6 New: allow rules to listen for AST selectors (fixes #5407) (#7833) (Teddy Katz) +* 63ca0c5 Chore: use precalculated counts in stylish formatter (#8251) (alberto) +* 47c3171 Fix: typo in console.error (#8258) (Jan Peer Stöcklmair) +* e74ed6d Chore: convert Traverser to ES6 class (refs #7849) (#8232) (Teddy Katz) +* 13eead9 Fix: sort-vars crash on mixed destructuring declarations (#8245) (Teddy Katz) +* 133f489 Fix: func-name-matching crash on destructuring assignment to functions (#8247) (Teddy Katz) +* a34b9c4 Fix: func-name-matching crash on non-string literal computed keys (#8246) (Teddy Katz) +* 7276e6d Docs: remove unneeded semicolons in arrow-parens.md (#8249) (Dmitry Gershun) +* 8c40a25 concat-stream known to be vulnerable prior 1.5.2 (#8228) (Samuel) +* 149c055 Upgrade: mock-fs to v4.2.0 (fixes #8194) (#8243) (Teddy Katz) +* a83bff9 Build: remove unneeded json config in demo (fixes #8237) (#8242) (alberto) +* df12137 Docs: fix typos (#8235) (Gyandeep Singh) +* b5e9788 Chore: rename no-extra-parens methods (#8225) (Vitor Balocco) +* 7f8afe6 Update: no-extra-parens overlooked spread and superClass (fixes #8175) (#8209) (Toru Nagashima) +* ce6ff56 Docs: set recommended true for no-global-assign (fixes #8215) (#8218) (BinYi LIU) +* 5b5c236 Fix: wrong comment when module not found in config (fixes #8192) (#8196) (alberto) + +v3.17.1 - March 6, 2017 + +* f8c8e6e Build: change mock-fs path without SSH (fixes #8207) (#8208) (Toru Nagashima) +* f713f11 Fix: nonblock-statement-body-position multiline error (fixes #8202) (#8203) (Teddy Katz) +* 41e3d9c Fix: `operator-assignment` with parenthesized expression (fixes #8190) (#8197) (alberto) +* 5e3bca7 Chore: add eslint-plugin-eslint-plugin (#8198) (Teddy Katz) +* 580da36 Chore: add missing `output` property to tests (#8195) (alberto) + +v3.17.0 - March 3, 2017 + +* 4fdf6d7 Update: deprecate `applyDefaultPatterns` in `line-comment-position` (#8183) (alberto) +* 25e5817 Fix: Don't autofix `+ +a` to `++a` in space-unary-ops (#8176) (Alan Pierce) +* a6ce8f9 Build: Sort rules before dumping them to doc files (#8154) (Danny Andrews) +* 0af9057 Chore: Upgrade to a patched version of mock-fs (fixes #8177) (#8188) (Teddy Katz) +* bf4d8cf Update: ignore eslint comments in lines-arount-comment (fixes #4345) (#8155) (alberto) +* dad20ad New: add SourceCode#getLocFromIndex and #getIndexFromLoc (fixes #8073) (#8158) (Teddy Katz) +* 18a519f Update: let RuleTester cases assert that no autofix occurs (fixes #8157) (#8163) (Teddy Katz) +* a30eb8d Docs: improve documentation for RuleTester cases (#8162) (Teddy Katz) +* a78ec9f Chore: upgrade `coveralls` to ^2.11.16 (#8161) (alberto) +* d02bd11 Fix: padded-blocks autofix problems with comments (#8149) (alberto) +* 9994889 Docs: Add missing space to `create` in `no-use-before-define` (#8166) (Justin Anastos) +* 4d542ba Docs: Remove unneeded statement about autofix (#8164) (alberto) +* 20daea5 New: no-compare-neg-zero rule (#8091) (薛定谔的猫) +* 4d35a81 Fix: Add a utility to avoid autofix conflicts (fixes #7928, fixes #8026) (#8067) (Alan Pierce) +* 287e882 New: nonblock-statement-body-position rule (fixes #6067) (#8108) (Teddy Katz) +* 7f1f4e5 Chore: remove unneeded devDeps `linefix` and `gh-got` (#8160) (alberto) +* ca1694b Update: ignore negative ranges in fixes (#8133) (alberto) +* 163d751 Docs: `lines-around-comment` doesn't disallow empty lines (#8151) (alberto) +* 1c84922 Chore: upgrade eslint-plugin-node (#8156) (alberto) +* 1ee5c27 Fix: Make RuleTester handle empty-string cases gracefully (fixes #8142) (#8143) (Teddy Katz) +* 044bc10 Docs: Add details about "--fix" option for "sort-imports" rule (#8077) (Olivier Audard) +* 3fec54a Add option to ignore property in no-param-reassign (#8087) (Christian Bundy) +* 4e52cfc Fix: Improve keyword-spacing typescript support (fixes #8110) (#8111) (Reyad Attiyat) +* 7ff42e8 New: Allow regexes in RuleTester (fixes #7837) (#8115) (Daniel Lo Nigro) +* cbd7ded Build: display rules’ meta data in their docs (fixes #5774) (#8127) (Wilson Kurniawan) +* da8e8af Update: include function name in report message if possible (fixes #7260) (#8058) (Dieter Luypaert) +* 8f91e32 Fix: `ignoreRestSiblings` option didn't cover arguments (fixes #8119) (#8120) (Toru Nagashima) + +v3.16.1 - February 22, 2017 + +* ff8a80c Fix: duplicated autofix output for inverted fix ranges (fixes #8116) (#8117) (Teddy Katz) +* a421897 Docs: fix typo in arrow-parens.md (#8132) (Will Chen) +* 22d7fbf Chore: fix invalid redeclared variables in tests (#8130) (Teddy Katz) +* 8d95598 Chore: fix output assertion typos in rule tests (#8129) (Teddy Katz) +* 9fa2559 Docs: Add missing quotes in key-spacing rule (#8121) (Glenn Reyes) +* f3a6ced Build: package.json update for eslint-config-eslint release (ESLint Jenkins) + +v3.16.0 - February 20, 2017 + +* d89d0b4 Update: fix quotes false negative for string literals as template tags (#8107) (Teddy Katz) +* 21be366 Chore: Ensuring eslint:recommended rules are sorted. (#8106) (Kevin Partington) +* 360dbe4 Update: Improve error message when extend config missing (fixes #6115) (#8100) (alberto) +* f62a724 Chore: use updated token iterator methods (#8103) (Kai Cataldo) +* daf6f26 Fix: check output in RuleTester when errors is a number (fixes #7640) (#8097) (alberto) +* cfb65c5 Update: make no-lone-blocks report blocks in switch cases (fixes #8047) (#8062) (Teddy Katz) +* 290fb1f Update: Add includeComments to getTokenByRangeStart (fixes #8068) (#8069) (Kai Cataldo) +* ff066dc Chore: Incorrect source code test text (#8096) (Jack Ford) +* 14d146d Docs: Clarify --ext only works with directories (fixes #7939) (#8095) (alberto) +* 013a454 Docs: Add TSC meeting quorum requirement (#8086) (Kevin Partington) +* 7516303 Fix: `sourceCode.getTokenAfter` shouldn't skip tokens after comments (#8055) (Toru Nagashima) +* c53e034 Fix: unicode-bom fixer insert BOM in appropriate location (fixes #8083) (#8084) (pantosha) +* 55ac302 Chore: fix the timing to define rules for tests (#8082) (Toru Nagashima) +* c7e64f3 Upgrade: mock-fs (#8070) (Toru Nagashima) +* acc3301 Update: handle uncommon linebreaks consistently in rules (fixes #7949) (#8049) (Teddy Katz) +* 591b74a Chore: enable operator-linebreak on ESLint codebase (#8064) (Teddy Katz) +* 6445d2a Docs: Add documentation for /* exported */ (fixes #7998) (#8065) (Lee Yi Min) +* fcc38db Chore: simplify and improve performance for autofix (#8035) (Toru Nagashima) +* b04fde7 Chore: improve performance of SourceCode constructor (#8054) (Teddy Katz) +* 90fd555 Update: improve null detection in eqeqeq for ES6 regexes (fixes #8020) (#8042) (Teddy Katz) +* 16248e2 Fix: no-extra-boolean-cast incorrect Boolean() autofixing (fixes #7977) (#8037) (Jonathan Wilsson) +* 834f45d Update: rewrite TokenStore (fixes #7810) (#7936) (Toru Nagashima) +* 329dcdc Chore: unify checks for statement list parents (#8048) (Teddy Katz) +* c596690 Docs: Clarify generator-star-spacing config example (fixes #8027) (#8034) (Hòa Trần) +* a11d4a6 Docs: fix a typo in shareable configs documentation (#8036) (Dan Homola) +* 1e3d4c6 Update: add fixer for no-unused-labels (#7841) (Teddy Katz) +* f47fb98 Update: ensure semi-spacing checks import/export declarations (#8033) (Teddy Katz) +* e228d56 Update: no-undefined handles properties/classes/modules (fixes #7964) (#7966) (Kevin Partington) +* 7bc92d9 Chore: fix invalid test cases (#8030) (Toru Nagashima) + +v3.15.0 - February 3, 2017 + +* f2a3580 Fix: `no-extra-parens` incorrect precedence (fixes #7978) (#7999) (alberto) +* d6b6ba1 Fix: no-var should fix ForStatement.init (#7993) (Toru Nagashima) +* 99d386d Upgrade: Espree v3.4.0 (#8019) (Kai Cataldo) +* 42390fd Docs: update README.md for team (#8016) (Toru Nagashima) +* d7ffd88 Chore: enable template-tag-spacing on ESLint codebase (#8005) (Teddy Katz) +* f2be7e3 Docs: Fix typo in object-curly-newline.md (#8002) (Danny Andrews) +* df2351a Docs: Fix misleading section in brace-style documentation (#7996) (Teddy Katz) +* 5ae6e00 Chore: avoid unnecessary feature detection for Symbol (#7992) (Teddy Katz) +* 5d57c57 Chore: fix no-else-return lint error (refs #7986) (#7994) (Vitor Balocco) +* 62fb054 Chore: enable no-else-return on ESLint codebase (#7986) (Teddy Katz) +* c59a0ba Update: add ignoreRestSiblings option to no-unused-vars (#7968) (Zack Argyle) +* 5cdfa99 Chore: enable no-unneeded-ternary on ESLint codebase (#7987) (Teddy Katz) +* fbd7c13 Update: ensure operator-assignment handles exponentiation operators (#7970) (Teddy Katz) +* c5066ce Update: add "variables" option to no-use-before-define (fixes #7111) (#7948) (Teddy Katz) +* 09546a4 New: `template-tag-spacing` rule (fixes #7631) (#7913) (Jonathan Wilsson) + +v3.14.1 - January 25, 2017 + +* 791f32b Fix: brace-style false positive for keyword method names (fixes #7974) (#7980) (Teddy Katz) +* d7a0add Docs: Add ESLint tutorial embed to getting started (#7971) (Jamis Charles) +* 72d41f0 Fix: no-var autofix syntax error in single-line statements (fixes #7961) (#7962) (Teddy Katz) +* b9e5b68 Fix: indent rule crash on sparse array with object (fixes #7959) (#7960) (Gyandeep Singh) +* a7bd66a Chore: Adding assign/redeclare tests to no-undefined (refs #7964) (#7965) (Kevin Partington) +* 8bcbf5d Docs: typo in prefer-promise-reject-errors (#7958) (Patrick McElhaney) + +v3.14.0 - January 20, 2017 + +* 506324a Fix: `no-var` does not fix if causes ReferenceError (fixes #7950) (#7953) (Toru Nagashima) +* 05e7432 New: no-chained-assignments rule (fixes #6424) (#7904) (Stewart Rand) +* 243e47d Update: Add fixer for no-else-return (fixes #7863) (#7864) (Xander Dumaine) +* f091d95 New: `prefer-promise-reject-errors` rule (fixes #7685) (#7689) (Teddy Katz) +* ca01e00 Fix: recognize all line terminators in func-call-spacing (fixes #7923) (#7924) (Francesco Trotta) +* a664e8a Update: add ignoreJSX option to no-extra-parens (Fixes #7444) (#7926) (Robert Rossmann) +* 8ac3518 Fix: no-useless-computed-key false positive with `__proto__` (#7934) (Teddy Katz) +* c835e19 Docs: remove reference to deleted rule (#7942) (Alejandro Oviedo) +* 3c1e63b Docs: Improve examples for no-case-declarations (fixes #6716) (#7920) (Kevin Rangel) +* 7e04b33 Fix: Ignore inline plugin rule config in autoconfig (fixes #7860) (#7919) (Ian VanSchooten) +* 6448ba0 Fix: add parentheses in no-extra-boolean-cast autofixer (fixes #7912) (#7914) (Szymon Przybylski) +* b3f2094 Fix: brace-style crash with lone block statements (fixes #7908) (#7909) (Teddy Katz) +* 5eb2e88 Docs: Correct typos in configuring.md (#7916) (Gabriel Delépine) +* bd5e219 Update: ensure brace-style validates class bodies (fixes #7608) (#7871) (Teddy Katz) +* 427543a Fix: catastrophic backtracking in astUtils linebreak regex (fixes #7893) (#7898) (Teddy Katz) +* 995554c Fix: Correct typos in no-alert.md and lib/ast-utils.js (#7905) (Stewart Rand) +* d6150e3 Chore: Enable comma-dangle on ESLint codebase (fixes #7725) (#7906) (Teddy Katz) +* 075ec25 Chore: update to use ES6 classes (refs #7849) (#7891) (Claire Dranginis) +* 55f0cb6 Update: refactor brace-style and fix inconsistencies (fixes #7869) (#7870) (Teddy Katz) + +v3.13.1 - January 9, 2017 + +* 3fc4e3f Fix: prefer-destructuring reporting compound assignments (fixes #7881) (#7882) (Teddy Katz) +* f90462e Fix: no-extra-label autofix should not remove labels used elsewhere (#7885) (Teddy Katz) + +v3.13.0 - January 6, 2017 + +* cd4c025 Update: add fixer for no-extra-label (#7840) (Teddy Katz) +* aa75c92 Fix: Ensure prefer-const fixes destructuring assignments (fixes #7852) (#7859) (Teddy Katz) +* 4008022 Chore: Refactor to use ES6 Classes (Part 3)(refs #7849) (#7865) (Gyandeep Singh) +* c9ba40a Update: add fixer for `no-unneeded-ternary` (#7540) (Teddy Katz) +* dd56d87 Update: add object-shorthand option for arrow functions (fixes #7564) (#7746) (Teddy Katz) +* fbafdc0 Docs: `padded-blocks` `never` case (fixes #7868) (#7878) (alberto) +* ca1f841 Fix: no-useless-return stack overflow on loops after throw (fixes #7855) (#7856) (Teddy Katz) +* d80d994 Update: add fixer for object-property-newline (fixes #7740) (#7808) (Teddy Katz) +* bf3ea3a Fix: capitalized-comments: Ignore consec. comments if first is invalid (#7835) (Kevin Partington) +* 616611a Chore: Refactor to use ES6 Classes (Part 2)(refs #7849) (#7847) (Gyandeep Singh) +* 856084b Chore: Refactor to use ES6 Classes (Part 1)(refs #7849) (#7846) (Gyandeep Singh) +* bf45893 Docs: Clarify that we only support Stage 4 proposals (#7845) (Kevin Partington) +* 0fc24f7 Fix: adapt new-paren rule so it handles TypeScript (fixes #7817) (#7820) (Philipp A) +* df0b06b Fix: no-multiple-empty-lines perf issue on large files (fixes #7803) (#7843) (Teddy Katz) +* 18fa521 Chore: use ast-utils helper functions in no-multiple-empty-lines (#7842) (Teddy Katz) +* 7122205 Docs: Array destructuring example for no-unused-vars (fixes #7838) (#7839) (Remco Haszing) +* e21b36b Chore: add integration tests for cache files (refs #7748) (#7794) (Teddy Katz) +* 2322733 Fix: Throw error if ruletester is missing required test scenarios (#7388) (Teddy Katz) +* 1beecec Update: add fixer for `operator-linebreak` (#7702) (Teddy Katz) +* c5c3b21 Fix: no-implied-eval false positive on 'setTimeoutFoo' (fixes #7821) (#7836) (Teddy Katz) +* 00dd96c Chore: enable array-bracket-spacing on ESLint codebase (#7830) (Teddy Katz) +* ebcae1f Update: no-return-await with with complex `return` argument (fixes #7594) (#7595) (Dalton Santos) +* fd4cd3b Fix: Disable no-var autofixer in some incorrect cases in loops (#7811) (Alan Pierce) +* 1f25834 Docs: update outdated info in Architecture page (#7816) (Teddy Katz) +* f20b9e9 Fix: Relax no-useless-escape's handling of ']' in regexes (fixes #7789) (#7793) (Teddy Katz) +* 3004c1e Fix: consistent-return shouldn't report class constructors (fixes #7790) (#7797) (Teddy Katz) +* b938f1f Docs: Add an example for the spread operator to prefer-spread.md (#7802) (#7804) (butlermd) +* b8ce2dc Docs: Remove .html extensions from links in developer-guide (#7805) (Kevin Partington) +* aafebb2 Docs: Wrap placeholder sample in {% raw %} (#7798) (Daniel Lo Nigro) +* bb6b73b Chore: replace unnecessary function callbacks with arrow functions (#7795) (Teddy Katz) +* 428fbdf Fix: func-call-spacing "never" doesn't fix w/ line breaks (fixes #7787) (#7788) (Kevin Partington) +* 6e61070 Fix: `semi` false positive before regex/template literals (fixes #7782) (#7783) (Teddy Katz) +* ff0c050 Fix: remove internal property from config generation (fixes #7758) (#7761) (alberto) +* 27424cb New: `prefer-destructuring` rule (fixes #6053) (#7741) (Alex LaFroscia) +* bb648ce Docs: fix unclear example for no-useless-escape (#7781) (Teddy Katz) +* 8c3a962 Fix: syntax errors from object-shorthand autofix (fixes #7744) (#7745) (Teddy Katz) +* 8b296a2 Docs: fix in semi.md: correct instead of incorrect (#7779) (German Prostakov) +* 3493241 Upgrade: strip-json-comments ~v2.0.1 (Janus Troelsen) +* 75b7ba4 Chore: enable object-curly-spacing on ESLint codebase (refs #7725) (#7770) (Teddy Katz) +* 7d1dc7e Update: Make default-case comment case-insensitive (fixes #7673) (#7742) (Robert Rossmann) +* f1bf5ec Chore: convert remaining old-style context.report() calls to the new API (#7763) (Teddy Katz) + +v3.12.2 - December 14, 2016 + +* dec3ec6 Fix: indent bug with AssignmentExpressions (fixes #7747) (#7750) (Teddy Katz) +* 5344751 Build: Don't create blogpost links from rule names within other words (#7754) (Teddy Katz) +* 639b798 Docs: Use `Object.prototype` in examples (#7755) (Alex Reardon) + +v3.12.1 - December 12, 2016 + +* 0ad4d33 Fix: `indent` regression with function calls (fixes #7732, fixes #7733) (#7734) (Teddy Katz) +* ab246dd Docs: Rules restricting globals/properties/syntax are linked together (#7743) (Kevin Partington) +* df2f115 Docs: Add eslint-config-mdcs to JSCS Migration Guide (#7737) (Joshua Koo) +* 4b77333 Build: avoid creating broken rule links in the changelog (#7731) (Teddy Katz) + +v3.12.0 - December 9, 2016 + +* e569225 Update: fix false positive/negative of yoda rule (fixes #7676) (#7695) (Toru Nagashima) +* e95a230 Fix: indent "first" option false positive on nested arrays (fixes #7727) (#7728) (Teddy Katz) +* 81f9e7d Fix: Allow duplicated let declarations in `prefer-const` (fixes #7712) (#7717) (Teddy Katz) +* 1d0d61d New: Add no-await-in-loop rule (#7563) (Nat Mote) +* 2cdfb4e New: Additional APIs (fixes #6256) (#7669) (Ilya Volodin) +* 4278c42 Update: make no-obj-calls report errors for Reflect (fixes #7700) (#7710) (Tomas Echeverri Valencia) +* 4742d82 Docs: clarify the default behavior of `operator-linebreak` (fixes #7459) (#7726) (Teddy Katz) +* a8489e2 Chore: Avoid parserOptions boilerplate in tests for ES6 rules (#7724) (Teddy Katz) +* b921d1f Update: add `indent` options for array and object literals (fixes #7473) (#7681) (Teddy Katz) +* 7079c89 Update: Add airbnb-base to init styleguides (fixes #6986) (#7699) (alberto) +* 63bb3f8 Docs: improve the documentation for the autofix API (#7716) (Teddy Katz) +* f8786fb Update: add fixer for `capitalized-comments` (#7701) (Teddy Katz) +* abfd24f Fix: don't validate schemas for disabled rules (fixes #7690) (#7692) (Teddy Katz) +* 2ac07d8 Upgrade: Update globals dependency to 9.14.0 (#7683) (Aleksandr Oleynikov) +* 90a5d29 Docs: Remove incorrect info about issue requirements from PR guide (#7691) (Teddy Katz) +* f80c278 Docs: Add sails-hook-lint to integrations list (#7679) (Anthony M) +* e96da3f Docs: link first instance of `package.json` (#7684) (Kent C. Dodds) +* bf20e20 Build: include links to rule pages in release blogpost (#7671) (Teddy Katz) +* b30116c Docs: Fix code-blocks in spaced-comment docs (#7524) (Michał Gołębiowski) +* 0a2a7fd Fix: Allow \u2028 and \u2029 as string escapes in no-useless-escape (#7672) (Teddy Katz) +* 76c33a9 Docs: Change Sails.js integration to active npm package (#7675) (Anthony M) + +v3.11.1 - November 28, 2016 + +* be739d0 Fix: capitalized-comments fatal error fixed (fixes #7663) (#7664) (Rich Trott) +* cc4cedc Docs: Fix a typo in array-bracket-spacing documentation (#7667) (Alex Guerrero) +* f8adadc Docs: fix a typo in capitalized-comments documentation (#7666) (Teddy Katz) + +v3.11.0 - November 25, 2016 + +* ad56694 New: capitalized-comments rule (fixes #6055) (#7415) (Kevin Partington) +* 7185567 Update: add fixer for `operator-assignment` (#7517) (Teddy Katz) +* faf5f56 Update: fix false negative of `quotes` with \n in template (fixes #7646) (#7647) (Teddy Katz) +* 474e444 Update: add fixer for `sort-imports` (#7535) (Teddy Katz) +* f9b70b3 Docs: Enable example highlighting in rules examples (ref #6444) (#7644) (Alex Guerrero) +* d50f6c1 Fix: incorrect location for `no-useless-escape` errors (fixes #7643) (#7645) (Teddy Katz) +* 54a993c Docs: Fix a typo in the require-yield.md (#7652) (Vse Mozhet Byt) +* eadd808 Chore: Fix prefer-arrow-callback lint errors (#7651) (Kevin Partington) +* 89bd8de New: `require-await` rule (fixes #6820) (#7435) (Toru Nagashima) +* b7432bd Chore: Ensure JS files are checked out with LF (#7624) (Kevin Partington) +* 32a3547 Docs: Add absent quotes in rules documentation (#7625) (Denis Sikuler) +* 5c9a4ad Fix: Prevent `quotes` from fixing templates to directives (fixes #7610) (#7617) (Teddy Katz) +* d90ca46 Upgrade: Update markdownlint dependency to 0.3.1 (fixes #7589) (#7592) (David Anson) +* 07124d1 Docs: add missing quote mark (+=" → "+=") (#7613) (Sean Juarez) +* 8998043 Docs: fix wording in docs for no-extra-parens config (Michael Ficarra) + +v3.10.2 - November 15, 2016 + +* 0643bfe Fix: correctly handle commented code in `indent` autofixer (fixes #7604) (#7606) (Teddy Katz) +* bd0514c Fix: syntax error after `key-spacing` autofix with comment (fixes #7603) (#7607) (Teddy Katz) +* f56c1ef Fix: `indent` crash on parenthesized global return values (fixes #7573) (#7596) (Teddy Katz) +* 100c6e1 Docs: Fix example for curly "multi-or-nest" option (#7597) (Will Chen) +* 6abb534 Docs: Update code of conduct link (#7599) (Nicholas C. Zakas) +* 8302cdb Docs: Update no-tabs to match existing standards & improve readbility (#7590) (Matt Stow) + +v3.10.1 - November 14, 2016 + +* 8a0e92a Fix: handle try/catch correctly in `no-return-await` (fixes #7581) (#7582) (Teddy Katz) +* c4dd015 Fix: no-useless-return stack overflow on unreachable loops (fixes #7583) (#7584) (Teddy Katz) + +v3.10.0 - November 11, 2016 + +* 7ee039b Update: Add comma-style options for calls, fns, imports (fixes #7470) (Max Englander) +* 670e060 Chore: make the `object-shorthand` tests more readable (#7580) (Teddy Katz) +* c3f4809 Update: Allow `func-names` to recognize inferred ES6 names (fixes #7235) (#7244) (Logan Smyth) +* b8d6e48 Fix: syntax errors created by `object-shorthand` autofix (fixes #7574) (#7575) (Teddy Katz) +* 1b3b65c Chore: ensure that files in tests/conf are linted (#7579) (Teddy Katz) +* 2bd1dd7 Update: avoid creating extra whitespace in `arrow-body-style` fixer (#7504) (Teddy Katz) +* 66fe9ff New: `no-return-await` rule. (fixes #7537) (#7547) (Jordan Harband) +* 759525e Chore: Use process.exitCode instead of process.exit() in bin/eslint.js (#7569) (Teddy Katz) +* 0d60db7 Fix: Curly rule doesn't account for leading comment (fixes #7538) (#7539) (Will Chen) +* 5003b1c Update: fix in/instanceof handling with `space-infix-ops` (fixes #7525) (#7552) (Teddy Katz) +* 3e6131e Docs: explain config option merging (#7499) (Danny Andrews) +* 1766524 Update: "Error type should be" assertion in rule-tester (fixes 6106) (#7550) (Frans Jaspers) +* 44eb274 Docs: Missing semicolon report was missing a comma (#7553) (James) +* 6dbda15 Docs: Document the optional defaults argument for RuleTester (#7548) (Teddy Katz) +* e117b80 Docs: typo fix (#7546) (oprogramador) +* 25e5613 Chore: Remove incorrect test from indent.js. (#7531) (Scott Stern) +* c0f4937 Fix: `arrow-parens` supports type annotations (fixes #7406) (#7436) (Toru Nagashima) +* a838b8e Docs: `func-name-matching`: update with “always”/“never” option (#7536) (Jordan Harband) +* 3c379ff Update: `no-restricted-{imports,modules}`: add “patterns” (fixes #6963) (#7433) (Jordan Harband) +* f5764ee Docs: Update example of results returned from `executeOnFiles` (#7362) (Simen Bekkhus) +* 4613ba0 Fix: Add support for escape char in JSX. (#7461) (Scott Stern) +* ea0970d Fix: `curly` false positive with no-semicolon style (#7509) (Teddy Katz) +* af1fde1 Update: fix `brace-style` false negative on multiline node (fixes #7493) (#7496) (Teddy Katz) +* 3798aea Update: max-statements to report function name (refs #7260) (#7399) (Nicholas C. Zakas) +* 0c215fa Update: Add `ArrowFunctionExpression` support to `require-jsdoc` rule (#7518) (Gyandeep Singh) +* 578c373 Build: handle deprecated rules with no 'replacedBy' (refs #7471) (#7494) (Vitor Balocco) +* a7f3976 Docs: Specify min ESLint version for new rule format (#7501) (cowchimp) +* 8a3e717 Update: Fix `lines-around-directive` semicolon handling (fixes #7450) (#7483) (Teddy Katz) +* e58cead Update: add a fixer for certain statically-verifiable `eqeqeq` cases (#7389) (Teddy Katz) +* 0dea0ac Chore: Add Node 7 to travis ci build (#7506) (Gyandeep Singh) +* 36338f0 Update: add fixer for `no-extra-boolean-cast` (#7387) (Teddy Katz) +* 183def6 Chore: enable `prefer-arrow-callback` on ESLint codebase (fixes #6407) (#7503) (Teddy Katz) +* 4f1fa67 Docs: Update copyright (#7497) (Nicholas C. Zakas) + +v3.9.1 - October 31, 2016 + +* 2012258 Fix: incorrect `indent` check for array property access (fixes #7484) (#7485) (Teddy Katz) +* 8a71d4a Fix: `no-useless-return` false positive on conditionals (fixes #7477) (#7482) (Teddy Katz) +* 56a662b Fix: allow escaped backreferences in `no-useless-escape` (fixes #7472) (#7474) (Teddy Katz) +* fffdf13 Build: Fix prefer-reflect rule to not crash site gen build (#7471) (Ilya Volodin) +* 8ba68a3 Docs: Update broken link (#7490) (Devinsuit) +* 65231d8 Docs: add the "fixable" icon for `no-useless-return` (#7480) (Teddy Katz) + +v3.9.0 - October 28, 2016 + +* d933516 New: `no-useless-return` rule (fixes #7309) (#7441) (Toru Nagashima) +* 5e7af30 Update: Add `CallExpression` option for `indent` (fixes #5946) (#7189) (Teddy Katz) +* b200086 Fix: Support type annotations in array-bracket-spacing (#7445) (Jimmy Jia) +* 5ed8b9b Update: Deprecate prefer-reflect (fixes #7226) (#7464) (Kai Cataldo) +* 92ad43b Chore: Update deprecated rules in conf/eslint.json (#7467) (Kai Cataldo) +* e46666b New: Codeframe formatter (fixes #5860) (#7437) (Vitor Balocco) +* fe0d903 Upgrade: Shelljs to ^0.7.5 (fixes #7316) (#7465) (Gyandeep Singh) +* 1d5146f Update: fix wrong indentation about `catch`,`finally` (#7371) (Toru Nagashima) +* 77e3a34 Chore: Pin mock-fs dev dependency (#7466) (Gyandeep Singh) +* c675d7d Update: Fix `no-useless-escape` false negative in regexes (fixes #7424) (#7425) (Teddy Katz) +* ee3bcea Update: add fixer for `newline-after-var` (fixes #5959) (#7375) (Teddy Katz) +* 6e9ff08 Fix: indent.js to support multiline array statements. (#7237) (Scott Stern) +* f8153ad Build: Ensure absolute links in docs retain .md extensions (fixes #7419) (#7438) (Teddy Katz) +* 16367a8 Fix: Return statement spacing. Fix for indent rule. (fixes #7164) (#7197) (Imad Elyafi) +* 3813988 Update: fix false negative of `no-extra-parens` (fixes #7122) (#7432) (Toru Nagashima) +* 23062e2 Docs: Fix typo in no-unexpected-multiline (fixes #7442) (#7447) (Denis Sikuler) +* d257428 Update: `func-name-matching`: add “always”/“never” option (fixes #7391) (#7428) (Jordan Harband) +* c710584 Fix: support for MemberExpression with function body. (#7400) (Scott Stern) +* 2c8ed2d Build: ensure that all files are linted on bash (fixes #7426) (#7427) (Teddy Katz) +* 18ff70f Chore: Enable `no-useless-escape` (#7403) (Vitor Balocco) +* 8dfd802 Fix: avoid `camelcase` false positive with NewExpressions (fixes #7363) (#7409) (Teddy Katz) +* e8159b4 Docs: Fix typo and explain static func calls for class-methods-use-this (#7421) (Scott O'Hara) +* 85d7e24 Docs: add additional examples for MemberExpressions in Indent rule. (#7408) (Scott Stern) +* 2aa1107 Docs: Include note on fatal: true in the node.js api section (#7376) (Simen Bekkhus) +* e064a25 Update: add fixer for `arrow-body-style` (#7240) (Teddy Katz) +* e0fe727 Update: add fixer for `brace-style` (fixes #7074) (#7347) (Teddy Katz) +* cbbe420 New: Support enhanced parsers (fixes #6974) (#6975) (Nicholas C. Zakas) +* 644d25b Update: Add an ignoreRegExpLiterals option to max-len (fixes #3229) (#7346) (Wilfred Hughes) +* 6875576 Docs: Remove broken links to jslinterrors.com (fixes #7368) (#7369) (Dannii Willis) + +v3.8.1 - October 17, 2016 + +* 681c78a Fix: `comma-dangle` was confused by type annotations (fixes #7370) (#7372) (Toru Nagashima) +* 7525042 Fix: Allow useless escapes in tagged template literals (fixes #7383) (#7384) (Teddy Katz) +* 9106964 Docs: Fix broken link for stylish formatter (#7386) (Vitor Balocco) +* 49d3c1b Docs: Document the deprecated meta property (#7367) (Randy Coulman) +* 19d2996 Docs: Relax permission for merging PRs (refs eslint/tsc-meetings#20) (#7360) (Brandon Mills) + +v3.8.0 - October 14, 2016 + +* ee60acf Chore: add integration tests for autofixing (fixes #5909) (#7349) (Teddy Katz) +* c8796e9 Update: `comma-dangle` supports trailing function commas (refs #7101) (#7181) (Toru Nagashima) +* c4abaf0 Update: `space-before-function-paren` supports async/await (refs #7101) (#7180) (Toru Nagashima) +* d0d3b28 Fix: id-length rule incorrectly firing on member access (fixes #6475) (#7365) (Burak Yiğit Kaya) +* 2729d94 Fix: Don't report setter params in class bodies as unused (fixes #7351) (#7352) (Teddy Katz) +* 0b85004 Chore: Enable prefer-template (fixes #6407) (#7357) (Kai Cataldo) +* ca1947b Chore: Update pull request template (refs eslint/tsc-meetings#20) (#7359) (Brandon Mills) +* d840afe Docs: remove broken link from no-loop-func doc (#7342) (Michael McDermott) +* 5266793 Update: no-useless-escape checks template literals (fixes #7331) (#7332) (Kai Cataldo) +* b08fb91 Update: add source property to LintResult object (fixes #7098) (#7304) (Vitor Balocco) +* 0db4164 Chore: run prefer-template autofixer on test files (refs #6407) (#7354) (Kai Cataldo) +* c1470b5 Update: Make the `prefer-template` fixer unescape quotes (fixes #7330) (#7334) (Teddy Katz) +* 5d08c33 Fix: Handle parentheses correctly in `yoda` fixer (fixes #7326) (#7327) (Teddy Katz) +* cd72bba New: `func-name-matching` rule (fixes #6065) (#7063) (Annie Zhang) +* 55b5146 Fix: `RuleTester` didn't support `mocha --watch` (#7287) (Toru Nagashima) +* f8387c1 Update: add fixer for `prefer-spread` (#7283) (Teddy Katz) +* 52da71e Fix: Don't require commas after rest properties (fixes #7297) (#7298) (Teddy Katz) +* 3b11d3f Chore: refactor `no-multiple-empty-lines` (#7314) (Teddy Katz) +* 16d495d Docs: Updating CLI overview with latest changes (#7335) (Kevin Partington) +* 52dfce5 Update: add fixer for `one-var-declaration-per-line` (#7295) (Teddy Katz) +* 0e994ae Update: Improve the error messages for `no-unused-vars` (fixes #7282) (#7315) (Teddy Katz) +* 93214aa Chore: Convert non-lib/test files to template literals (refs #6407) (#7329) (Kai Cataldo) +* 72f394d Update: Fix false negative of `no-multiple-empty-lines` (fixes #7312) (#7313) (Teddy Katz) +* 756bc5a Update: Use characters instead of code units for `max-len` (#7299) (Teddy Katz) +* c9a7ec5 Fix: Improving optionator configuration for --print-config (#7206) (Kevin Partington) +* 51bfade Fix: avoid `object-shorthand` crash with spread properties (fixes #7305) (#7306) (Teddy Katz) +* a12d1a9 Update: add fixer for `no-lonely-if` (#7202) (Teddy Katz) +* 1418384 Fix: Don't require semicolons before `++`/`--` (#7252) (Adrian Heine né Lang) +* 2ffe516 Update: add fixer for `curly` (#7105) (Teddy Katz) +* ac3504d Update: add functionPrototypeMethods to wrap-iife (fixes #7212) (#7284) (Eli White) +* 5e16fb4 Update: add fixer for `no-extra-bind` (#7236) (Teddy Katz) + +v3.7.1 - October 3, 2016 + +* 3dcae13 Fix: Use the correct location for `comma-dangle` errors (fixes #7291) (#7292) (Teddy Katz) +* cb7ba6d Fix: no-implicit-coercion should not fix ~. (fixes #7272) (#7289) (Eli White) +* ce590e2 Chore: Add additional tests for bin/eslint.js (#7290) (Teddy Katz) +* 8ec82ee Docs: change links of templates to raw data (#7288) (Toru Nagashima) + +v3.7.0 - September 30, 2016 + +* 2fee8ad Fix: object-shorthand's consistent-as-needed option (issue #7214) (#7215) (Naomi Jacobs) +* c05a19c Update: add fixer for `prefer-numeric-literals` (#7205) (Teddy Katz) +* 2f171f3 Update: add fixer for `no-undef-init` (#7210) (Teddy Katz) +* 876d747 Docs: Steps for adding new committers/TSCers (#7221) (Nicholas C. Zakas) +* dffb4fa Fix: `no-unused-vars` false positive (fixes #7250) (#7258) (Toru Nagashima) +* 4448cec Docs: Adding missing ES8 reference to configuring (#7271) (Kevin Partington) +* 332d213 Update: Ensure `indent` handles nested functions correctly (fixes #7249) (#7265) (Teddy Katz) +* c36d842 Update: add fixer for `no-useless-computed-key` (#7207) (Teddy Katz) +* 18376cf Update: add fixer for `lines-around-directive` (#7217) (Teddy Katz) +* f8e8fab Update: add fixer for `wrap-iife` (#7196) (Teddy Katz) +* 558b444 Docs: Add @not-an-aardvark to development team (#7279) (Ilya Volodin) +* cd1dc57 Update: Add a fixer for `dot-location` (#7186) (Teddy Katz) +* 89787b2 Update: for `yoda`, add a fixer (#7199) (Teddy Katz) +* 742ae67 Fix: avoid indent and no-mixed-spaces-and-tabs conflicts (fixes #7248) (#7266) (Teddy Katz) +* 85b8714 Fix: Use error templates even when reading from stdin (fixes #7213) (#7223) (Teddy Katz) +* 66adac1 Docs: correction in prefer-reflect docs (fixes #7069) (#7150) (Scott Stern) +* e3f95de Update: Fix `no-extra-parens` false negative (fixes #7229) (#7231) (Teddy Katz) +* 2909c19 Docs: Fix typo in object-shorthand docs (#7267) (Brian Donovan) +* 7bb800d Chore: add internal rule to enforce meta.docs conventions (fixes #6954) (#7155) (Vitor Balocco) +* 722c68c Docs: add code fences to the issue template (#7254) (Teddy Katz) + +v3.6.1 - September 26, 2016 + +* b467436 Upgrade: Upgrade Espree to 3.3.1 (#7253) (Ilya Volodin) +* 299a563 Build: Do not strip .md extension from absolute URLs (#7222) (Kai Cataldo) +* 27042d2 Chore: removed unused code related to scopeMap (#7218) (Yang Su) +* d154204 Chore: Lint bin/eslint.js (#7243) (Kevin Partington) +* 87625fa Docs: Improve eol-last examples in docs (#7227) (Chainarong Tangsurakit) +* de8eaa4 Docs: `class-methods-use-this`: fix option name (#7224) (Jordan Harband) +* 2355f8d Docs: Add Brunch plugin to integrations (#7225) (Aleksey Shvayka) +* a5817ae Docs: Default option from `operator-linebreak` is `after`and not always (#7228) (Konstantin Pschera) + +v3.6.0 - September 23, 2016 + +* 1b05d9c Update: add fixer for `strict` (fixes #6668) (#7198) (Teddy Katz) +* 0a36138 Docs: Update ecmaVersion instructions (#7195) (Nicholas C. Zakas) +* aaa3779 Update: Allow `space-unary-ops` to handle await expressions (#7174) (Teddy Katz) +* 91bf477 Update: add fixer for `prefer-template` (fixes #6978) (#7165) (Teddy Katz) +* 745343f Update: `no-extra-parens` supports async/await (refs #7101) (#7178) (Toru Nagashima) +* 8e1fee1 Fix: Handle number literals correctly in `no-whitespace-before-property` (#7185) (Teddy Katz) +* 462a3f7 Update: `keyword-spacing` supports async/await (refs #7101) (#7179) (Toru Nagashima) +* 709a734 Update: Allow template string in `valid-typeof` comparison (fixes #7166) (#7168) (Teddy Katz) +* f71937a Fix: Don't report async/generator callbacks in `array-callback-return` (#7172) (Teddy Katz) +* 461b015 Fix: Handle async functions correctly in `prefer-arrow-callback` fixer (#7173) (Teddy Katz) +* 7ea3e4b Fix: Handle await expressions correctly in `no-unused-expressions` (#7175) (Teddy Katz) +* 16bb802 Update: Ensure `arrow-parens` handles async arrow functions correctly (#7176) (Teddy Katz) +* 2d10657 Chore: add tests for `generator-star-spacing` and async (refs #7101) (#7182) (Toru Nagashima) +* c118d21 Update: Let `no-restricted-properties` check destructuring (fixes #7147) (#7151) (Teddy Katz) +* 9e0b068 Fix: valid-jsdoc does not throw on FieldType without value (fixes #7184) (#7187) (Kai Cataldo) +* 4b5d9b7 Docs: Update process for evaluating proposals (fixes #7156) (#7183) (Kai Cataldo) +* 95c777a Update: Make `no-restricted-properties` more flexible (fixes #7137) (#7139) (Teddy Katz) +* 0fdf23c Update: fix `quotes` rule's false negative (fixes #7084) (#7141) (Toru Nagashima) +* f2a789d Update: fix `no-unused-vars` false negative (fixes #7124) (#7143) (Toru Nagashima) +* 6148d85 Fix: Report columns for `eol-last` correctly (fixes #7136) (#7149) (kdex) +* e016384 Update: add fixer for quote-props (fixes #6996) (#7095) (Teddy Katz) +* 35f7be9 Upgrade: espree to 3.2.0, remove tests with SyntaxErrors (fixes #7169) (#7170) (Teddy Katz) +* 28ddcf8 Fix: `max-len`: `ignoreTemplateLiterals`: handle 3+ lines (fixes #7125) (#7138) (Jordan Harband) +* 660e091 Docs: Update rule descriptions (fixes #5912) (#7152) (Kenneth Williams) +* 8b3fc32 Update: Make `indent` report lines with mixed spaces/tabs (fixes #4274) (#7076) (Teddy Katz) +* b39ac2c Update: add fixer for `no-regex-spaces` (#7113) (Teddy Katz) +* cc80467 Docs: Update PR templates for formatting (#7128) (Nicholas C. Zakas) +* 76acbb5 Fix: include LogicalExpression in indent length calc (fixes #6731) (#7087) (Alec) +* a876673 Update: no-implicit-coercion checks TemplateLiterals (fixes #7062) (#7121) (Kai Cataldo) +* 8db4f0c Chore: Enable `typeof` check for `no-undef` rule in eslint-config-eslint (#7103) (Teddy Katz) +* 7e8316f Docs: Update release process (#7127) (Nicholas C. Zakas) +* 22edd8a Update: `class-methods-use-this`: `exceptMethods` option (fixes #7085) (#7120) (Jordan Harband) +* afd132a Fix: line-comment-position "above" string option now works (fixes #7100) (#7102) (Kevin Partington) +* 1738b2e Chore: fix name of internal-no-invalid-meta test file (#7142) (Vitor Balocco) +* ac0bb62 Docs: Fixes examples for allowTemplateLiterals (fixes #7115) (#7135) (Zoe Ingram) +* bcfa3e5 Update: Add `always`/`never` option to `eol-last` (fixes #6938) (#6952) (kdex) +* 0ca26d9 Docs: Distinguish examples for space-before-blocks (#7132) (Timo Tijhof) +* 9a2aefb Chore: Don't require an issue reference in check-commit npm script (#7104) (Teddy Katz) +* c85fd84 Fix: max-statements-per-line rule to force minimum to be 1 (fixes #7051) (#7092) (Scott Stern) +* e462e47 Docs: updates category of no-restricted-properties (fixes #7112) (#7118) (Alec) +* 6ae660b Fix: Don't report comparisons of two typeof expressions (fixes #7078) (#7082) (Teddy Katz) +* 710f205 Docs: Fix typos in Issues section of Maintainer's Guide (#7114) (Kai Cataldo) +* 546a3ca Docs: Clarify that linter does not process configuration (fixes #7108) (#7110) (Kevin Partington) +* 0d50943 Docs: Elaborate on `guard-for-in` best practice (fixes #7071) (#7094) (Dallon Feldner) +* 58e6d76 Docs: Fix examples for no-restricted-properties (#7099) (not-an-aardvark) +* 6cfe519 Docs: Corrected typo in line-comment-position rule doc (#7097) (Alex Mercier) +* f02e52a Docs: Add fixable note to no-implicit-coercion docs (#7096) (Brandon Mills) + +v3.5.0 - September 9, 2016 + +* 08fa538 Update: fix false negative of `arrow-spacing` (fixes #7079) (#7080) (Toru Nagashima) +* cec65e3 Update: add fixer for no-floating-decimal (fixes #7070) (#7081) (not-an-aardvark) +* 2a3f699 Fix: Column number for no-multiple-empty-lines (fixes #7086) (#7088) (Ian VanSchooten) +* 6947299 Docs: Add info about closing accepted issues to docs (fixes #6979) (#7089) (Kai Cataldo) +* d30157a Docs: Add link to awesome-eslint in integrations page (#7090) (Vitor Balocco) +* 457be1b Docs: Update so issues are not required (fixes #7015) (#7072) (Nicholas C. Zakas) +* d9513b7 Fix: Allow linting of .hidden files/folders (fixes #4828) (#6844) (Ian VanSchooten) +* 6d97c18 New: `max-len`: `ignoreStrings`+`ignoreTemplateLiterals` (fixes #5805) (#7049) (Jordan Harband) +* 538d258 Update: make no-implicit-coercion support autofixing. (fixes #7056) (#7061) (Eli White) +* 883316d Update: add fixer for prefer-arrow-callback (fixes #7002) (#7004) (not-an-aardvark) +* 7502eed Update: auto-fix for `comma-style` (fixes #6941) (#6957) (Gyandeep Singh) +* 645dda5 Update: add fixer for dot-notation (fixes #7014) (#7054) (not-an-aardvark) +* 2657846 Fix: `no-console` ignores user-defined console (fixes #7010) (#7058) (Toru Nagashima) +* 656bb6e Update: add fixer for newline-before-return (fixes #5958) (#7050) (Vitor Balocco) +* 1f995c3 Fix: no-implicit-coercion string concat false positive (fixes #7057) (#7060) (Kai Cataldo) +* 6718749 Docs: Clarify that `es6` env also sets `ecmaVersion` to 6 (#7067) (Jérémie Astori) +* e118728 Update: add fixer for wrap-regex (fixes #7013) (#7048) (not-an-aardvark) +* f4fcd1e Update: add more `indent` options for functions (fixes #6052) (#7043) (not-an-aardvark) +* 657eee5 Update: add fixer for new-parens (fixes #6994) (#7047) (not-an-aardvark) +* ff19aa9 Update: improve `max-statements-per-line` message (fixes #6287) (#7044) (Jordan Harband) +* 3960617 New: `prefer-numeric-literals` rule (fixes #6068) (#7029) (Annie Zhang) +* fa760f9 Chore: no-regex-spaces uses internal rule message format (fixes #7052) (#7053) (Kevin Partington) +* 22c7e09 Update: no-magic-numbers false negative on reassigned vars (fixes #4616) (#7028) (not-an-aardvark) +* be29599 Update: Throw error if whitespace found in plugin name (fixes #6854) (#6960) (Jesse Ostrander) +* 4063a79 Fix: Rule message placeholders can be inside braces (fixes #6988) (#7041) (Kevin Partington) +* 52e8d9c Docs: Clean up sort-vars (#7045) (Matthew Dunsdon) +* 4126f12 Chore: Rule messages use internal rule message format (fixes #6977) (#6989) (Kevin Partington) +* 46cb690 New: `no-restricted-properties` rule (fixes #3218) (#7017) (Eli White) +* 00b3042 Update: Pass file path to parse function (fixes #5344) (#7024) (Annie Zhang) +* 3f13325 Docs: Add kaicataldo and JamesHenry to our teams (#7039) (alberto) +* 8e77f16 Update: `new-parens` false negative (fixes #6997) (#6999) (Toru Nagashima) +* 326f457 Docs: Add missing 'to' in no-restricted-modules (#7022) (Oskar Risberg) +* 8277357 New: `line-comment-position` rule (fixes #6077) (#6953) (alberto) +* c1f0d76 New: `lines-around-directive` rule (fixes #6069) (#6998) (Kai Cataldo) +* 61f1de0 Docs: Fix typo in no-debugger (#7019) (Denis Ciccale) +* 256c4a2 Fix: Allow separate mode option for multiline and align (fixes #6691) (#6991) (Annie Zhang) +* a989a7c Docs: Declaring dependency on eslint in shared config (fixes #6617) (#6985) (alberto) +* 6869c60 Docs: Fix minor typo in no-extra-parens doc (#6992) (Jérémie Astori) +* 28f1619 Docs: Update the example of SwitchCase (#6981) (fish) + +v3.4.0 - August 26, 2016 + +* c210510 Update: add fixer for no-extra-parens (fixes #6944) (#6950) (not-an-aardvark) +* ca3d448 Fix: `prefer-const` false negative about `eslintUsed` (fixes #5837) (#6971) (Toru Nagashima) +* 1153955 Docs: Draft of JSCS migration guide (refs #5859) (#6942) (Nicholas C. Zakas) +* 3e522be Fix: false negative of `indent` with `else if` statements (fixes #6956) (#6965) (not-an-aardvark) +* 2dfb290 Docs: Distinguish examples in rules under Stylistic Issues part 7 (#6760) (Kenneth Williams) +* 3c710c9 Fix: rename "AirBnB" => "Airbnb" init choice (fixes #6969) (Harrison Shoff) +* 7660b39 Fix: `object-curly-spacing` for type annotations (fixes #6940) (#6945) (Toru Nagashima) +* 21ab784 New: do not remove non visited files from cache. (fixes #6780) (#6921) (Roy Riojas) +* 3a1763c Fix: enable `@scope/plugin/ruleId`-style specifier (refs #6362) (#6939) (Toru Nagashima) +* d6fd064 Update: Add never option to multiline-ternary (fixes #6751) (#6905) (Kai Cataldo) +* 0d268f1 New: `symbol-description` rule (fixes #6778) (#6825) (Jarek Rencz) +* a063d4e Fix: no-cond-assign within a function expression (fixes #6908) (#6909) (Patrick McElhaney) +* 16db93a Build: Tag docs, publish release notes (fixes #6892) (#6934) (Nicholas C. Zakas) +* 0cf1d55 Chore: Fix object-shorthand errors (fixes #6958) (#6959) (Kai Cataldo) +* 8851ddd Fix: Improve pref of globbing by inheriting glob.GlobSync (fixes #6710) (#6783) (Kael Zhang) +* cf2242c Update: `requireStringLiterals` option for `valid-typeof` (fixes #6698) (#6923) (not-an-aardvark) +* 8561389 Fix: `no-trailing-spaces` wrong fixing (fixes #6933) (#6937) (Toru Nagashima) +* 6a92be5 Docs: Update semantic versioning policy (#6935) (alberto) +* a5189a6 New: `class-methods-use-this` rule (fixes #5139) (#6881) (Gyandeep Singh) +* 1563808 Update: add support for ecmaVersion 20xx (fixes #6750) (#6907) (Kai Cataldo) +* d8b770c Docs: Change rule descriptions for consistent casing (#6915) (Brandon Mills) +* c676322 Chore: Use object-shorthand batch 3 (refs #6407) (#6914) (Kai Cataldo) + +v3.3.1 - August 15, 2016 + +* a2f06be Build: optimize rule page title for small browser tabs (fixes #6888) (#6904) (Vitor Balocco) +* 02a00d6 Docs: clarify rule details for no-template-curly-in-string (#6900) (not-an-aardvark) +* b9b3446 Fix: sort-keys ignores destructuring patterns (fixes #6896) (#6899) (Kai Cataldo) +* 3fe3a4f Docs: Update options in `object-shorthand` (#6898) (Grant Snodgrass) +* cd09c96 Chore: Use object-shorthand batch 2 (refs #6407) (#6897) (Kai Cataldo) +* 2841008 Chore: Use object-shorthand batch 1 (refs #6407) (#6893) (Kai Cataldo) + +v3.3.0 - August 12, 2016 + +* 683ac56 Build: Add CI release scripts (fixes #6884) (#6885) (Nicholas C. Zakas) +* ebf8441 Update: `prefer-rest-params` relax for member accesses (fixes #5990) (#6871) (Toru Nagashima) +* df01c4f Update: Add regex support for exceptions (fixes #5187) (#6883) (Annie Zhang) +* 055742c Fix: `no-dupe-keys` type errors (fixes #6886) (#6889) (Toru Nagashima) +* e456fd3 New: `sort-keys` rule (fixes #6076) (#6800) (Toru Nagashima) +* 3e879fc Update: Rule "eqeqeq" to have more specific null handling (fixes #6543) (#6849) (Simon Sturmer) +* e8cb7f9 Chore: use eslint-plugin-node (refs #6407) (#6862) (Toru Nagashima) +* e37bbd8 Docs: Remove duplicate statement (#6878) (Richard Käll) +* 11395ca Fix: `no-dupe-keys` false negative (fixes #6801) (#6863) (Toru Nagashima) +* 1ecd2a3 Update: improve error message in `no-control-regex` (#6839) (Jordan Harband) +* d610d6c Update: make `max-lines` report the actual number of lines (fixes #6766) (#6764) (Jarek Rencz) +* b256c50 Chore: Fix glob for core js files for lint (fixes #6870) (#6872) (Gyandeep Singh) +* f8ab8f1 New: func-call-spacing rule (fixes #6080) (#6749) (Brandon Mills) +* be68f0b New: no-template-curly-in-string rule (fixes #6186) (#6767) (Jeroen Engels) +* 80789ab Chore: don't throw if rule is in old format (fixes #6848) (#6850) (Vitor Balocco) +* d47c505 Fix: `newline-after-var` false positive (fixes #6834) (#6847) (Toru Nagashima) +* bf0afcb Update: validate void operator in no-constant-condition (fixes #5726) (#6837) (Vitor Balocco) +* 5ef839e New: Add consistent and ..-as-needed to object-shorthand (fixes #5438) (#5439) (Martijn de Haan) +* 7e1bf01 Fix: update peerDependencies of airbnb option for `--init` (fixes #6843) (#6846) (Vitor Balocco) +* 8581f4f Fix: `no-invalid-this` false positive (fixes #6824) (#6827) (Toru Nagashima) +* 90f78f4 Update: add `props` option to `no-self-assign` rule (fixes #6718) (#6721) (Toru Nagashima) +* 30d71d6 Update: 'requireForBlockBody' modifier for 'arrow-parens' (fixes #6557) (#6558) (Nicolas Froidure) +* cdded07 Chore: use native `Object.assign` (refs #6407) (#6832) (Gyandeep Singh) +* 579ec49 Chore: Add link to rule change guidelines in "needs info" template (fixes #6829) (#6831) (Kevin Partington) +* 117e7aa Docs: Remove incorrect "constructor" statement from `no-new-symbol` docs (#6830) (Jarek Rencz) +* aef18b4 New: `no-unsafe-negation` rule (fixes #2716) (#6789) (Toru Nagashima) +* d94e945 Docs: Update Getting Started w/ Readme installation instructions (#6823) (Kai Cataldo) +* dfbc112 Upgrade: proxyquire to 1.7.10 (fixes #6821) (#6822) (alberto) +* 4c5e911 Chore: enable `prefer-const` and apply it to our codebase (refs #6407) (#6805) (Toru Nagashima) +* e524d16 Update: camelcase rule fix for import declarations (fixes #6755) (#6784) (Lorenzo Zottar) +* 8f3509d Update: make `eslint:all` excluding deprecated rules (fixes #6734) (#6756) (Toru Nagashima) +* 2b17459 New: `no-global-assign` rule (fixes #6586) (#6746) (alberto) + +v3.2.2 - August 1, 2016 + +* 510ce4b Upgrade: file-entry-cache@^1.3.1 (fixes #6816, refs #6780) (#6819) (alberto) +* 46b14cd Fix: ignore MemberExpression in VariableDeclarators (fixes #6795) (#6815) (Nicholas C. Zakas) + +v3.2.1 - August 1, 2016 + +* 584577a Build: Pin file-entry-cache to avoid licence issue (refs #6816) (#6818) (alberto) +* 38d0d23 Docs: clarify minor releases and suggest using `~ to version (#6804) (Henry Zhu) +* 4ca809e Fix: Normalizes messages so all end with a period (fixes #6762) (#6807) (Patrick McElhaney) +* c7488ac Fix: Make MemberExpression option opt-in (fixes #6797) (#6798) (Rich Trott) +* 715e8fa Docs: Update issue closing policy (fixes #6765) (#6808) (Nicholas C. Zakas) +* 288f7bf Build: Fix site generation (fixes #6791) (#6793) (Nicholas C. Zakas) +* 261a9f3 Docs: Update JSCS status in README (#6802) (alberto) +* 5ae0887 Docs: Update no-void.md (#6799) (Daniel Hritzkiv) + +v3.2.0 - July 29, 2016 + +* 2438ee2 Upgrade: Update markdownlint dependency to 0.2.0 (fixes #6781) (#6782) (David Anson) +* 4fc0018 Chore: dogfooding `no-var` rule and remove `var`s (refs #6407) (#6757) (Toru Nagashima) +* b22eb5c New: `no-tabs` rule (fixes #6079) (#6772) (Gyandeep Singh) +* ddea63a Chore: Updated no-control-regex tests to cover all cases (fixes #6438) (#6752) (Efe Gürkan YALAMAN) +* 1025772 Docs: Add plugin example to disabling with comments guide (fixes #6742) (#6747) (Brandon Mills) +* 628aae4 Docs: fix inconsistent spacing inside block comment (#6768) (Brian Jacobel) +* 2983c32 Docs: Add options to func-names config comments (#6748) (Brandon Mills) +* 2f94443 Docs: fix wrong path (#6763) (molee1905) +* 6f3faa4 Revert "Build: Remove support for Node v5 (fixes #6743)" (#6758) (Nicholas C. Zakas) +* 99dfd1c Docs: fix grammar issue in rule-changes page (#6761) (Vitor Balocco) +* e825458 Fix: Rule no-unused-vars had missing period (fixes #6738) (#6739) (Brian Mock) +* 71ae64c Docs: Clarify cache file deletion (fixes #4943) (#6712) (Nicholas C. Zakas) +* 26c85dd Update: merge warnings of consecutive unreachable nodes (fixes #6583) (#6729) (Toru Nagashima) +* 106e40b Fix: Correct grammar in object-curly-newline reports (fixes #6725) (#6728) (Vitor Balocco) +* e00754c Chore: Dogfooding ES6 rules (refs #6407) (#6735) (alberto) +* 181b26a Build: Remove support for Node v5 (fixes #6743) (#6744) (alberto) +* 5320a6c Update: `no-use-before-define` false negative on for-in/of (fixes #6699) (#6719) (Toru Nagashima) +* a2090cb Fix: space-infix-ops doesn't fail for type annotations(fixes #5211) (#6723) (Nicholas C. Zakas) +* 9c36ecf Docs: Add @vitorbal and @platinumazure to development team (Ilya Volodin) +* e09d1b8 Docs: describe all RuleTester options (fixes #4810, fixes #6709) (#6711) (Nicholas C. Zakas) +* a157f47 Chore: Update CLIEngine option desc (fixes #5179) (#6713) (Nicholas C. Zakas) +* a0727f9 Chore: fix `.gitignore` for vscode (refs #6383) (#6720) (Toru Nagashima) +* 75d2d43 Docs: Clarify Closure type hint expectation (fixes #5231) (#6714) (Nicholas C. Zakas) +* 95ea25a Update: Check indentation of multi-line chained properties (refs #1801) (#5940) (Rich Trott) +* e7b1e1c Docs: Edit issue/PR waiting period docs (fixes #6009) (#6715) (Nicholas C. Zakas) +* 053aa0c Update: Added 'allowSuper' option to `no-underscore-dangle` (fixes #6355) (#6662) (peteward44) +* 8929045 Build: Automatically generate rule index (refs #2860) (#6658) (Ilya Volodin) +* f916ae5 Docs: Fix multiline-ternary typos (#6704) (Cédric Malard) +* c64b0c2 Chore: First ES6 refactoring (refs #6407) (#6570) (Nicholas C. Zakas) + +v3.1.1 - July 18, 2016 + +* 565e584 Fix: `eslint:all` causes regression in 3.1.0 (fixes #6687) (#6696) (alberto) +* cb90359 Fix: Allow named recursive functions (fixes #6616) (#6667) (alberto) +* 3f206dd Fix: `balanced` false positive in `spaced-comment` (fixes #6689) (#6692) (Grant Snodgrass) +* 57f1676 Docs: Add missing brackets from code examples (#6700) (Plusb Preco) +* 124f066 Chore: Remove fixable key from multiline-ternary metadata (fixes #6683) (#6688) (Kai Cataldo) +* 9f96086 Fix: Escape control characters in XML. (fixes #6673) (#6672) (George Chung) + +v3.1.0 - July 15, 2016 + +* e8f8c6c Fix: incorrect exitCode when eslint is called with --stdin (fixes #6677) (#6682) (Steven Humphrey) +* 38639bf Update: make `no-var` fixable (fixes #6639) (#6644) (Toru Nagashima) +* dfc20e9 Fix: `no-unused-vars` false positive in loop (fixes #6646) (#6649) (Toru Nagashima) +* 2ba75d5 Update: relax outerIIFEBody definition (fixes #6613) (#6653) (Stephen E. Baker) +* 421e4bf Chore: combine multiple RegEx replaces with one (fixes #6669) (#6661) (Sakthipriyan Vairamani) +* 089ee2c Docs: fix typos,wrong path,backticks (#6663) (molee1905) +* ef827d2 Docs: Add another pre-commit hook to integrations (#6666) (David Alan Hjelle) +* a343b3c Docs: Fix option typo in no-underscore-dangle (Fixes #6674) (#6675) (Luke Page) +* 5985eb2 Chore: add internal rule that validates meta property (fixes #6383) (#6608) (Vitor Balocco) +* 4adb15f Update: Add `balanced` option to `spaced-comment` (fixes #4133) (#6575) (Annie Zhang) +* 1b13c25 Docs: fix incorrect example being mark as correct (#6660) (David Björklund) +* a8b4e40 Fix: Install required eslint plugin for "standard" guide (fixes #6656) (#6657) (Feross Aboukhadijeh) +* 720686b New: `endLine` and `endColumn` of the lint result. (refs #3307) (#6640) (Toru Nagashima) +* 54faa46 Docs: Small tweaks to CLI documentation (fixes #6627) (#6642) (Kevin Partington) +* e108850 Docs: Added examples and structure to `padded-blocks` (fixes #6628) (#6643) (alberto) +* 350e1c0 Docs: Typo (#6650) (Peter Rood) +* b837c92 Docs: Correct a term in max-len.md (fixes #6637) (#6641) (Vse Mozhet Byt) +* baeb313 Fix: Warning behavior for executeOnText (fixes #6611) (#6632) (Nicholas C. Zakas) +* e6004be Chore: Enable preferType in valid-jsdoc (refs #5188) (#6634) (Nicholas C. Zakas) +* ca323cf Fix: Use default assertion messages (fixes #6532) (#6615) (Dmitrii Abramov) +* 2bdf22c Fix: Do not throw exception if baseConfig is provided (fixes #6605) (#6625) (Kevin Partington) +* e42cacb Upgrade: mock-fs to 3.10, fixes for Node 6.3 (fixes #6621) (#6624) (Tim Schaub) +* 8a263ae New: multiline-ternary rule (fixes #6066) (#6590) (Kai Cataldo) +* e951303 Update: Adding new `key-spacing` option (fixes #5613) (#5907) (Kyle Mendes) +* 10c3e91 Docs: Remove reference from 3.0.0 migration guide (refs #6605) (#6618) (Kevin Partington) +* 5010694 Docs: Removed non-existing resource (#6609) (Moritz Kröger) +* 6d40d85 Docs: Note that PR requires ACCEPTED issue (refs #6568) (#6604) (Patrick McElhaney) + +v3.0.1 - July 5, 2016 + +* 27700cf Fix: `no-unused-vars` false positive around callback (fixes #6576) (#6579) (Toru Nagashima) +* 124d8a3 Docs: Pull request template (#6568) (Nicholas C. Zakas) +* e9a2ed9 Docs: Fix rules\id-length exceptions typos (fixes #6397) (#6593) (GramParallelo) +* a2cfa1b Fix: Make outerIIFEBody work correctly (fixes #6585) (#6596) (Nicholas C. Zakas) +* 9c451a2 Docs: Use string severity in example (#6601) (Kenneth Williams) +* 8308c0b Chore: remove path-is-absolute in favor of the built-in (fixes #6598) (#6600) (shinnn) +* 7a63717 Docs: Add missing pull request step (fixes #6595) (#6597) (Nicholas C. Zakas) +* de3ed84 Fix: make `no-unused-vars` ignore for-in (fixes #2342) (#6126) (Oleg Gaidarenko) +* 6ef2cbe Fix: strip Unicode BOM of config files (fixes #6556) (#6580) (Toru Nagashima) +* ee7fcfa Docs: Correct type of `outerIIFEBody` in `indent` (fixes #6581) (#6584) (alberto) +* 25fc7b7 Fix: false negative of `max-len` (fixes #6564) (#6565) (not-an-aardvark) +* f6b8452 Docs: Distinguish examples in rules under Stylistic Issues part 6 (#6567) (Kenneth Williams) + +v3.0.0 - July 1, 2016 + +* 66de9d8 Docs: Update installation instructions on README (#6569) (Nicholas C. Zakas) +* dc5b78b Breaking: Add `require-yield` rule to `eslint:recommended` (fixes #6550) (#6554) (Gyandeep Singh) +* 7988427 Fix: lib/config.js tests pass if personal config exists (fixes #6559) (#6566) (Kevin Partington) +* 4c05967 Docs: Update rule docs for new format (fixes #5417) (#6551) (Nicholas C. Zakas) +* 70da5a8 Docs: Correct link to rules page (#fixes 6553) (#6561) (alberto) +* e2b2030 Update: Check RegExp strings for `no-regex-spaces` (fixes #3586) (#6379) (Jackson Ray Hamilton) +* 397e51b Update: Implement outerIIFEBody for indent rule (fixes #6259) (#6382) (David Shepherd) +* 666da7c Docs: 3.0.0 migration guide (#6521) (Nicholas C. Zakas) +* b9bf8fb Docs: Update Governance Policy (fixes #6452) (#6522) (Nicholas C. Zakas) +* 1290657 Update: `no-unused-vars` ignores read it modifies itself (fixes #6348) (#6535) (Toru Nagashima) +* d601f6b Fix: Delete cache only when executing on files (fixes #6459) (#6540) (Kai Cataldo) +* e0d4b19 Breaking: Error thrown/printed if no config found (fixes #5987) (#6538) (Kevin Partington) +* 18663d4 Fix: false negative of `no-useless-rename` (fixes #6502) (#6506) (Toru Nagashima) +* 0a7936d Update: Add fixer for prefer-const (fixes #6448) (#6486) (Nick Heiner) +* c60341f Chore: Update index and `meta` for `"eslint:recommended"` (refs #6403) (#6539) (Mark Pedrotti) +* 73da28d Better wording for the error reported by the rule "no-else-return" #6411 (#6413) (Olivier Thomann) +* e06a5b5 Update: Add fixer for arrow-parens (fixes #4766) (#6501) (madmed88) +* 5f8f3e8 Docs: Remove Box as a sponsor (#6529) (Nicholas C. Zakas) +* 7dfe0ad Docs: fix max-lines samples (fixes #6516) (#6515) (Dmitriy Shekhovtsov) +* fa05119 Breaking: Update eslint:recommended (fixes #6403) (#6509) (Nicholas C. Zakas) +* e96177b Docs: Add "Proposing a Rule Change" link to CONTRIBUTING.md (#6511) (Kevin Partington) +* bea9096 Docs: Update pull request steps (fixes #6474) (#6510) (Nicholas C. Zakas) +* 7bcf6e0 Docs: Consistent example headings & text pt3 (refs #5446) (#6492) (Guy Fraser) +* 1a328d9 Docs: Consistent example headings & text pt4 (refs #5446) (#6493) (Guy Fraser) +* ff5765e Docs: Consistent example headings & text pt2 (refs #5446)(#6491) (Guy Fraser) +* 01384fa Docs: Fixing typos (refs #5446)(#6494) (Guy Fraser) +* 4343ae8 Fix: false negative of `object-shorthand` (fixes #6429) (#6434) (Toru Nagashima) +* b7d8c7d Docs: more accurate yoda-speak (#6497) (Tony Lukasavage) +* 3b0ab0d Fix: add warnIgnored flag to CLIEngine.executeOnText (fixes #6302) (#6305) (Robert Levy) +* c2c6cec Docs: Mark object-shorthand as fixable. (#6485) (Nick Heiner) +* 5668236 Fix: Allow objectsInObjects exception when destructuring (fixes #6469) (#6470) (Adam Renklint) +* 17ac0ae Fix: `strict` rule reports a syntax error for ES2016 (fixes #6405) (#6464) (Toru Nagashima) +* 4545123 Docs: Rephrase documentation for `no-duplicate-imports` (#6463) (Simen Bekkhus) +* 1b133e3 Docs: improve `no-native-reassign` and specifying globals (fixes #5358) (#6462) (Toru Nagashima) +* b179373 Chore: Remove dead code in excuteOnFiles (fixes #6467) (#6466) (Andrew Hutchings) +* 18fbc4b Chore: Simplify eslint process exit code (fixes #6368) (#6371) (alberto) +* 58542e4 Breaking: Drop support for node < 4 (fixes #4483) (#6401) (alberto) +* f50657e Breaking: use default for complexity in eslint:recommended (fixes #6021) (#6410) (alberto) +* 3e690fb Fix: Exit init early if guide is chosen w/ no package.json (fixes #6476) (#6478) (Kai Cataldo) + +v2.13.1 - June 20, 2016 + +* 434de7f Fix: wrong baseDir (fixes #6450) (#6457) (Toru Nagashima) +* 3c9ce09 Fix: Keep indentation when fixing `padded-blocks` "never" (fixes #6454) (#6456) (Ed Lee) +* a9d4cb2 Docs: Fix typo in max-params examples (#6471) (J. William Ashton) +* 1e185b9 Fix: no-multiple-empty-lines errors when no line breaks (fixes #6449) (#6451) (strawbrary) + +v2.13.0 - June 17, 2016 + +* cf223dd Fix: add test for a syntax error (fixes #6013) (#6378) (Toru Nagashima) +* da30cf9 Update: Add fixer for object-shorthand (fixes #6412) (#6418) (Nick Heiner) +* 2cd90eb Chore: Fix rule meta description inconsistencies (refs #5417) (#6422) (Mark Pedrotti) +* d798b2c Added quotes around "classes" option key (#6441) (Guy Fraser) +* 852b6df Docs: Delete empty table of links from Code Path Analysis (#6423) (Mark Pedrotti) +* 5e9117e Chore: sort rules in eslint.json (fixes #6425) (#6426) (alberto) +* c2b5277 Docs: Add gitter chat link to Reporting Bugs (#6430) (Mark Pedrotti) +* 1316db0 Update: Add `never` option for `func-names` (fixes #6059) (#6392) (alberto) +* 1c123e2 Update: Add autofix for `padded-blocks` (fixes #6320) (#6393) (alberto) +* 8ec89c8 Fix: `--print-config` return config inside subdir (fixes #6329) (#6385) (alberto) +* 4f73240 Fix: `object-curly-newline` multiline with comments (fixes #6381) (#6396) (Toru Nagashima) +* 77697a7 Chore: Fake config hierarchy fixtures (fixes #6206) (#6402) (Gyandeep Singh) +* 73a9a6d Docs: Fix links in Configuring ESLint (#6421) (Mark Pedrotti) +* ed84c4c Fix: improve `newline-per-chained-call` message (fixes #6340) (#6360) (Toru Nagashima) +* 9ea4e44 Docs: Update parser reference to `espree` instead of `esprima` (#6404) (alberto) +* 7f57467 Docs: Make `fix` param clearer (fixes #6366) (#6367) (Nick Heiner) +* fb49c7f Fix: nested `extends` with relative path (fixes #6358) (#6359) (Toru Nagashima) +* 5122f73 Update: no-multiple-empty-lines fixer (fixes #6225) (#6226) (Ruurd Moelker) +* 0e7ce72 Docs: Fix rest-spread-spacing's name (#6365) (cody) +* cfdd524 Fix: allow semi as braceless body of statements (fixes #6386) (#6391) (alberto) +* 6b08cfc Docs: key-spacing fixable documenation notes (fixes #6375) (#6376) (Ruurd Moelker) +* 4b4be3b Docs: `max-lines` option: fix `skipComments` typo (#6374) (Jordan Harband) +* 20ab4f6 Docs: Fix wrong link in object-curly-newline (#6373) (Grant Snodgrass) +* 412ce8d Docs: Fix broken links in no-mixed-operators (#6372) (Grant Snodgrass) + +v2.12.0 - June 10, 2016 + +* 54c30fb Update: Add explicit default option `always` for `eqeqeq` (refs #6144) (#6342) (alberto) +* 2d63370 Update: max-len will warn indented comment lines (fixes #6322) (#6324) (Kai Cataldo) +* dcd4ad7 Docs: clarify usage of inline disable comments (fixes #6335) (#6347) (Kai Cataldo) +* c03300b Docs: Clarified how plugin rules look in plugin configs (fixes #6346) (#6351) (Kevin Partington) +* 9c87709 Docs: Add semantic versioning policy (fixes #6244) (#6343) (Nicholas C. Zakas) +* 5affab1 Docs: Describe values under Extending Configuration Files (refs #6240) (#6336) (Mark Pedrotti) +* 2520f5a New: `max-lines` rule (fixes #6078) (#6321) (alberto) +* 9bfbc64 Update: Option for object literals in `arrow-body-style` (fixes #5936) (#6216) (alberto) +* 977cdd5 Chore: remove unused method from FileFinder (fixes #6344) (#6345) (alberto) +* 477fbc1 Docs: Add section about customizing RuleTester (fixes #6227) (#6331) (Jeroen Engels) +* 0e14016 New: `no-mixed-operators` rule (fixes #6023) (#6241) (Toru Nagashima) +* 6e03c4b Update: Add never option to arrow-body-style (fixes #6317) (#6318) (Andrew Hyndman) +* f804397 New: Add `eslint:all` option (fixes #6240) (#6248) (Robert Fletcher) +* dfe05bf Docs: Link JSCS rules to their corresponding page. (#6334) (alberto) +* 1cc4356 Docs: Remove reference to numeric config (fixes #6309) (#6327) (Kevin Partington) +* 2d4efbe Docs: Describe options in rule under Strict Mode (#6312) (Mark Pedrotti) +* c1953fa Docs: Typo fix 'and' -> 'any' (#6326) (Stephen Edgar) +* d49ab4b Docs: Code conventions improvements (#6313) (Kevin Partington) +* 316a507 Fix: one-var allows uninitialized vars in ForIn/ForOf (fixes #5744) (#6272) (Kai Cataldo) +* 6cbee31 Docs: Typo fix 'colum' -> 'column' (#6306) (Andrew Cobby) +* 2663569 New: `object-curly-newline` (fixes #6072) (#6223) (Toru Nagashima) +* 72c2ea5 Update: callback-return allows for object methods (fixes #4711) (#6277) (Kai Cataldo) +* 89580a4 Docs: Distinguish examples in rules under Stylistic Issues part 5 (#6291) (Kenneth Williams) +* 1313804 New: rest-spread-spacing rule (fixes #5391) (#6278) (Kai Cataldo) +* 61dfe68 Fix: `no-useless-rename` false positive in babel-eslint (fixes #6266) (#6290) (alberto) +* c78c8cb Build: Remove commit check from appveyor (fixes #6292) (#6294) (alberto) +* 3e38fc1 Chore: more tests for comments at the end of blocks (refs #6090) (#6273) (Kai Cataldo) +* 38dccdd Docs: `--no-ignore` disables all forms of ignore (fixes #6260) (#6304) (alberto) +* bb69380 Fix: no-useless-rename handles ExperimentalRestProperty (fixes #6284) (#6288) (Kevin Partington) +* fca0679 Update: Improve perf not traversing default ignored dirs (fixes #5679) (#6276) (alberto) +* 320e8b0 Docs: Describe options in rules under Possible Errors part 4 (#6270) (Mark Pedrotti) +* 3e052c1 Docs: Mark no-useless-rename as fixable in rules index (#6297) (Dalton Santos) + +v2.11.1 - May 30, 2016 + +* 64b0d0c Fix: failed to parse `/*eslint` comments by colon (fixes #6224) (#6258) (Toru Nagashima) +* c8936eb Build: Don't check commit count (fixes #5935) (#6263) (Nicholas C. Zakas) +* 113c1a8 Fix: `max-statements-per-line` false positive at exports (fixes #6264) (#6268) (Toru Nagashima) +* 03beb27 Fix: `no-useless-rename` false positives (fixes #6266) (#6267) (alberto) +* fe89037 Docs: Fix rule name in example (#6279) (Kenneth Williams) + +v2.11.0 - May 27, 2016 + +* 77dd2b4 Fix: On --init, print message when package.json is invalid (fixes #6257) (#6261) (Kai Cataldo) +* 7f60186 Fix: `--ignore-pattern` can't uningnore files (fixes #6127) (#6253) (alberto) +* fea8fe6 New: no-useless-rename (fixes #6058) (#6249) (Kai Cataldo) +* b4cff9d Fix: Incorrect object-property-newline behavior (fixes #6207) (#6213) (Rafał Ruciński) +* 35b4656 Docs: Edit arrow-parens.md to show correct output value (#6245) (Adam Terlson) +* ee0cd58 Fix: `newline-before-return` shouldn't disallow newlines (fixes #6176) (#6217) (alberto) +* d4f5526 Fix: `vars-on-top` crashs at export declarations (fixes #6210) (#6220) (Toru Nagashima) +* 088bda9 New: `unicode-bom` rule to allow or disallow BOM (fixes #5502) (#6230) (Andrew Johnston) +* 14bfc03 Fix: `comma-dangle` wrong autofix (fixes #6233) (#6235) (Toru Nagashima) +* cdd65d7 Docs: added examples for arrow-body-style (refs #5498) (#6242) (Tieme van Veen) +* c10c07f Fix: lost code in autofixing (refs #6233) (#6234) (Toru Nagashima) +* e6d5b1f Docs: Add rule deprecation section to user guide (fixes #5845) (#6201) (Kai Cataldo) +* 777941e Upgrade: doctrine to 1.2.2 (fixes #6121) (#6231) (alberto) +* 74c458d Update: key-spacing rule whitespace fixer (fixes #6167) (#6169) (Ruurd Moelker) +* 04bd586 New: Disallow use of Object.prototype methods on objects (fixes #2693) (#6107) (Andrew Levine) +* 53754ec Update: max in `max-statements-per-line` should be >=0 (fixes #6171) (#6172) (alberto) +* 54d1201 Update: Add treatUndefinedAsUnspecified option (fixes #6026) (#6194) (Kenneth Williams) +* 18152dd Update: Add checkLoops option to no-constant-condition (fixes #5477) (#6202) (Kai Cataldo) +* 7644908 Fix: no-multiple-empty-lines BOF and EOF defaults (fixes #6179) (#6180) (Ruurd Moelker) +* 72335eb Fix: `max-statements-per-line` false positive (fixes #6173, fixes #6153) (#6192) (Toru Nagashima) +* 9fce04e Fix: `generator-star-spacing` false positive (fixes #6135) (#6168) (Toru Nagashima) + +v2.10.2 - May 16, 2016 + +* bda5de5 Fix: Remove default parser from CLIEngine options (fixes #6182) (#6183) (alberto) +* e59e5a0 Docs: Describe options in rules under Possible Errors part 3 (#6105) (Mark Pedrotti) +* 842ab2e Build: Run phantomjs tests using karma (fixes #6128) (#6178) (alberto) + +v2.10.1 - May 14, 2016 + +* 9397135 Fix: `valid-jsdoc` false positive at default parameters (fixes #6097) (#6170) (Toru Nagashima) +* 2166ad4 Fix: warning & error count in `CLIEngine.getErrorResults` (fixes #6155) (#6157) (alberto) +* 1e0a652 Fix: ignore empty statements in max-statements-per-line (fixes #6153) (#6156) (alberto) +* f9ca0d6 Fix: `no-extra-parens` to check for nulls (fixes #6161) (#6164) (Gyandeep Singh) +* d095ee3 Fix: Parser merge sequence in config (fixes #6158) (#6160) (Gyandeep Singh) +* f33e49f Fix: `no-return-assign` to check for null tokens (fixes #6159) (#6162) (Gyandeep Singh) + +v2.10.0 - May 13, 2016 + +* 098cd9c Docs: Distinguish examples in rules under Stylistic Issues part 4 (#6136) (Kenneth Williams) +* 805742c Docs: Clarify JSX option usage (#6132) (Richard Collins) +* 10b0933 Fix: Optimize no-irregular-whitespace for the common case (fixes #6116) (#6117) (Andres Suarez) +* 36bec90 Docs: linkify URLs in development-environment.md (#6150) (chrisjshull) +* 29c401a Docs: Convert rules in index under Removed from list to table (#6091) (Mark Pedrotti) +* e13e696 Fix: `_` and `$` in isES5Constructor (fixes #6085) (#6094) (Kevin Locke) +* 67916b9 Fix: `no-loop-func` crashed (fixes #6130) (#6138) (Toru Nagashima) +* d311a62 Fix: Sort fixes consistently even if they overlap (fixes #6124) (#6133) (alberto) +* 6294459 Docs: Correct syntax for default ignores and `.eslintignore` example (#6118) (alberto) +* 067db14 Fix: Replace `assert.deepEqual` by `lodash.isEqual` (fixes #6111) (#6112) (alberto) +* 52fdf04 Fix: `no-multiple-empty-lines` duplicate errors at BOF (fixes #6113) (#6114) (alberto) +* e6f56da Docs: Document `--ignore-pattern` (#6120) (alberto) +* ef739cd Fix: Merge various command line configs at the same time (fixes #6104) (#6108) (Ed Lee) +* 767da6f Update: add returnAssign option to no-extra-parens (fixes #6036) (#6095) (Kai Cataldo) +* 06f6252 Build: Use split instead of slice/indexOf for commit check (fixes #6109) (#6110) (Ed Lee) +* c4fc39b Docs: Update headings of rules under Removed (refs #5774) (#6102) (Mark Pedrotti) +* 716345f Build: Match rule id at beginning of heading (refs #5774) (#6089) (Mark Pedrotti) +* 0734967 Update: Add an option to `prefer-const` (fixes #5692) (#6040) (Toru Nagashima) +* 7941d5e Update: Add autofix for `lines-around-comment` (fixes #5956) (#6062) (alberto) +* dc538aa Build: Pin proxyquire to ">=1.0.0 <1.7.5" (fixes #6096) (#6100) (alberto) +* 04563ca Docs: Describe options in rules under Possible Errors part 2 (#6063) (Mark Pedrotti) +* 5d390b2 Chore: Replace deprecated calls to context - batch 4 (fixes #6029) (#6087) (alberto) +* 6df4b23 Fix: `no-return-assign` warning nested expressions (fixes #5913) (#6041) (Toru Nagashima) +* 16fad58 Merge pull request #6088 from eslint/docs-one-var-per-line (alberto) +* 0b67170 Docs: Correct default for `one-var-declaration-per-line` (fixes #6017) (#6022) (Ed Lee) +* d40017f Fix: comma-style accounts for parens in array (fixes #6006) (#6038) (Kai Cataldo) +* 992d9cf Docs: Fix typography/teriminology in indent doc (fixes #6045) (#6044) (Rich Trott) +* 4ae39d2 Chore: Replace deprecated calls to context - batch 3 (refs #6029) (#6056) (alberto) +* 8633e4d Update: multipass should not exit prematurely (fixes #5995) (#6048) (alberto) +* 3c44c2c Update: Adds an avoidQuotes option for object-shorthand (fixes #3366) (#5870) (Chris Sauvé) +* a9a4652 Fix: throw when rule uses `fix` but `meta.fixable` not set (fixes #5970) (#6043) (Vitor Balocco) +* ad10106 Docs: Update comma-style docs (#6039) (Kai Cataldo) +* 388d6f8 Fix: `no-sequences` false negative at arrow expressions (fixes #6082) (#6083) (Toru Nagashima) +* 8e96064 Docs: Clarify rule example in README since we allow string error levels (#6061) (Kevin Partington) +* a66bf19 Fix: `lines-around-comment` multiple errors on same line (fixes #5965) (#5994) (alberto) +* a2cc54e Docs: Organize meta and describe visitor in Working with Rules (#5967) (Mark Pedrotti) +* ef8cbff Fix: object-shorthand should only lint computed methods (fixes #6015) (#6024) (Kai Cataldo) +* cd1b057 Chore: Replace deprecated calls to context - batch 2 (refs #6029) (#6049) (alberto) +* a3a6e06 Update: no-irregal-whitespace in a regular expression (fixes #5840) (#6018) (Linda_pp) +* 9b9d76c Chore: Replace deprecated calls to context - batch 1 (refs #6029) (#6034) (alberto) +* dd8bf93 Fix: blockless else in max-statements-per-line (fixes #5926) (#5993) (Glen Mailer) +* f84eb80 New: Add new rule `object-property-newline` (fixes #5667) (#5933) (Vitor Balocco) +* d5f4104 Docs: mention parsing errors in strict mode (fixes #5485) (#5991) (Mark Pedrotti) +* 249732e Docs: Move docs from eslint.github.io (fixes #5964) (#6012) (Nicholas C. Zakas) +* 4c2de6c Docs: Add example of diff clarity to comma-dangle rule docs (#6035) (Vitor Balocco) +* 3db2e89 Fix: Do not swallow exceptions in CLIEngine.getFormatter (fixes #5977) (#5978) (Gustav Nikolaj) +* eb2fb44 Fix: Always ignore defaults unless explicitly passed (fixes #5547) (#5820) (Ian VanSchooten) +* ab57e94 Docs: Add example of diff clarity to newline-per-chained-call (#5986) (Vitor Balocco) +* 88bc014 Docs: Update readme info about jshint (#6027) (alberto) +* a2c15cc Docs: put config example in code block (#6005) (Amos Wenger) +* a5011cb Docs: Fix a wrong examples' header of `prefer-arrow-callback`. (#6020) (Toru Nagashima) +* 1484ede Docs: Typo in nodejs-api (#6025) (alberto) +* ade6a9b Docs: typo: "eslint-disable-line" not "eslint disable-line" (#6019) (Will Day) +* 2f15354 Fix: Removed false positives of break and continue (fixes #5972) (#6000) (Onur Temizkan) + +v2.9.0 - April 29, 2016 + +* a8a2cd8 Fix: Avoid autoconfig crashes from inline comments (fixes #5992) (#5999) (Ian VanSchooten) +* 23b00e0 Upgrade: npm-license to 0.3.2 (fixes #5996) (#5998) (alberto) +* 377167d Upgrade: ignore to 3.1.2 (fixes #5979) (#5988) (alberto) +* 141b778 Fix: no-control-regex literal handling fixed. (fixes #5737) (#5943) (Efe Gürkan YALAMAN) +* 577757d Fix: Clarify color option (fixes #5928) (#5974) (Grant Snodgrass) +* e7e6581 Docs: Update CLA link (#5980) (Gustav Nikolaj) +* 0be26bc Build: Add nodejs 6 to travis (fixes #5971) (#5973) (Gyandeep Singh) +* e606523 New: Rule `no-unsafe-finally` (fixes #5808) (#5932) (Onur Temizkan) +* 42d1ecc Chore: Add metadata to existing rules - Batch 7 (refs #5417) (#5969) (Vitor Balocco) +* e2ad1ec Update: object-shorthand lints computed methods (fixes #5871) (#5963) (Chris Sauvé) +* d24516a Chore: Add metadata to existing rules - Batch 6 (refs #5417) (#5966) (Vitor Balocco) +* 1e7a3ef Fix: `id-match` false positive in property values (fixes #5885) (#5960) (Mike Sherov) +* 51ddd4b Update: Use process @abstract when processing @return (fixes #5941) (#5945) (Simon Schick) +* 52a4bea Update: Add autofix for `no-whitespace-before-property` (fixes #5927) (#5951) (alberto) +* 46e058d Docs: Correct typo in configuring.md (#5957) (Nick S. Plekhanov) +* 5f8abab Chore: Add metadata to existing rules - Batch 5 (refs #5417) (#5944) (Vitor Balocco) +* 0562f77 Chore: Add missing newlines to test cases (fixes #5947) (Rich Trott) +* fc78e78 Chore: Enable quote-props rule in eslint-config-eslint (refs #5188) (#5938) (Gyandeep Singh) +* 43f6d05 Docs: Update docs to refer to column (#5937) (Sashko Stubailo) +* 586478e Update: Add autofix for `comma-dangle` (fixes #3805) (#5925) (alberto) +* a4f9c5a Docs: Distinguish examples in rules under Stylistic Issues part 3 (Kenneth Williams) +* e7c0737 Chore: Enable no-console rule in eslint-config-eslint (refs #5188) (Kevin Partington) +* 0023fe6 Build: Add “chore” to commit tags (fixes #5880) (#5929) (Mike Sherov) +* 25d626a Upgrade: espree 3.1.4 (fixes #5923, fixes #5756) (Kai Cataldo) +* a01b412 New: Add `no-useless-computed-key` rule (fixes #5402) (Burak Yigit Kaya) +* 9afb9cb Chore: Remove workaround for espree and escope bugs (fixes #5852) (alberto) +* 3ffc582 Chore: Update copyright and license info (alberto) +* 249eb40 Docs: Clarify init sets up local installation (fixes #5874) (Kai Cataldo) +* 6cd8c86 Docs: Describe options in rules under Possible Errors part 1 (Mark Pedrotti) +* f842d18 Fix: `no-this-before-super` crash on unreachable paths (fixes #5894) (Toru Nagashima) +* a02960b Docs: Fix missing delimiter in README links (Kevin Partington) +* 3a9e72c Docs: Update developer guide with new standards (Nicholas C. Zakas) +* cb78585 Update: Add `allowUnboundThis` to `prefer-arrow-callback` (fixes #4668) (Burak Yigit Kaya) +* 02be29f Chore: Remove CLA check from bot (Nicholas C. Zakas) +* 220713e Chore: Add metadata to existing rules - Batch 4 (refs #5417) (Vitor Balocco) +* df53414 Chore: Include jQuery Foundation info (Nicholas C. Zakas) +* f1b2992 Fix: `no-useless-escape` false positive in JSXAttribute (fixes #5882) (Toru Nagashima) +* 74674ad Docs: Move `sort-imports` to 'ECMAScript 6' (Kenneth Williams) +* ae69ddb Docs: Fix severity type in example (Kenneth Williams) +* 19f6fff Update: Autofixing does multiple passes (refs #5329) (Nicholas C. Zakas) +* 1e4b0ca Docs: Reduce length of paragraphs in rules index (Mark Pedrotti) +* 8cfe1eb Docs: Fix a wrong option (Zach Orlovsky) +* 8f6739f Docs: Add alberto as reviewer (alberto) +* 2ae4938 Docs: Fix message for `inline-config` option (alberto) +* 089900b Docs: Fix a wrong rule name in an example (Toru Nagashima) +* c032b41 Docs: Fix emphasis (Toru Nagashima) +* ae606f0 Docs: Update JSCS info in README (alberto) +* a9c5323 Fix: Install ESLint on init if not installed (fixes #5833) (Kai Cataldo) +* ed38358 Docs: Removed incorrect example (James M. Greene) +* af3113c Docs: Fix config comments in indent docs (Brandon Mills) +* 2b39461 Update: `commentPattern` option for `default-case` rule (fixes #5803) (Artyom Lvov) + +v2.8.0 - April 15, 2016 + +* a8821a5 Docs: Distinguish examples in rules under Stylistic Issues part 2 (Kenneth Williams) +* 76913b6 Update: Add metadata to existing rules - Batch 3 (refs #5417) (Vitor Balocco) +* 34ad8d2 Fix: Check that module.paths exists (fixes #5791) (Nicholas C. Zakas) +* 37239b1 Docs: Add new members of the team (Ilya Volodin) +* fb3c2eb Update: allow template literals (fixes #5234) (Jonathan Haines) +* 5a4a935 Update: Add metadata to existing rules - Batch 2 (refs #5417) (Vitor Balocco) +* ea2e625 Fix: newline-before-return handles return as first token (fixes #5816) (Kevin Partington) +* f8db9c9 Update: add nestedBinaryExpressions to no-extra-parens (fixes #3065) (Ilya Volodin) +* 0045d57 Update: `allowNamedFunctions` in `prefer-arrow-callback` (fixes #5675) (alberto) +* 19da72a Update: Add metadata to existing rules - Batch 1 (refs #5417) (Vitor Balocco) +* cc14e43 Fix: `no-fallthrough` empty case with comment (fixes #5799) (alberto) +* 13c8b14 Fix: LogicalExpression checks for short circuit (fixes #5693) (Vamshi krishna) +* 73b225e Fix: Document and fix metadata (refs #5417) (Ilya Volodin) +* 882d199 Docs: Improve options description in `no-redeclare` (alberto) +* 6a71ceb Docs: Improve options description in `no-params-reassign` (alberto) +* 24b6215 Update: Include 'typeof' in rule 'no-constant-condition' (fixes #5228) (Vamshi krishna) +* a959063 Docs: Remove link to deprecated ESLintTester project (refs #3110) (Trey Thomas) +* 6fd7d82 Update: Change order in `eslint --init` env options (fixes #5742) (alberto) +* c59d909 Fix: Extra paren check around object arrow bodies (fixes #5789) (Brandon Mills) +* 6f88546 Docs: Use double quotes for better Win compatibility (fixes #5796) (alberto) +* 02743d5 Fix: catch self-assignment operators in `no-magic-number` (fixes #4400) (alberto) +* c94e74e Docs: Make rule descriptions more consistent (Kenneth Williams) +* 6028252 Docs: Distinguish examples in rules under Stylistic Issues part 1 (Mark Pedrotti) +* ccd8ca9 Fix: Added property onlyDeclaration to id-match rule (fixes #3488) (Gajus Kuizinas) +* 6703c02 Update: no-useless-escape / exact locations of errors (fixes #5751) (Onur Temizkan) +* 3d84b91 Fix: ignore trailing whitespace in template literal (fixes #5786) (Kai Cataldo) +* b0e6bc4 Update: add allowEmptyCatch option to no-empty (fixes #5800) (Kai Cataldo) +* f1f1dd7 Docs: Add @pedrottimark as a committer (Brandon Mills) +* 228f201 Update: `commentPattern` option for `no-fallthrough` rule (fixes #5757) (Artyom Lvov) +* 41db670 Docs: Clarify disable inline comments (Kai Cataldo) +* 9c9a295 Docs: Add note about shell vs node glob parameters in cli (alberto) +* 5308ff9 Docs: Add code backticks to sentence in fixable rules (Mark Pedrotti) +* 965ec06 Docs: fix the examples for space-before-function-paren. (Craig Silverstein) +* 2b202fc Update: Add ignore option to space-before-function-parens (fixes #4127) (Craig Silverstein) +* 24c12ba Fix: improve `constructor-super` errors for literals (fixes #5449) (Toru Nagashima) + +v2.7.0 - April 4, 2016 + +* 134cb1f Revert "Update: adds nestedBinaryExpressions for no-extra-parens rule (fixes #3065)" (Ilya Volodin) +* 7e80867 Docs: Update sentence in fixable rules (Mark Pedrotti) +* 1b6d5a3 Update: adds nestedBinaryExpressions for no-extra-parens (fixes #3065) (Nick Fisher) +* 4f93c32 Docs: Clarify `array-bracket-spacing` with newlines (fixes #5768) (alberto) +* 161ddac Fix: remove `console.dir` (fixes #5770) (Toru Nagashima) +* 0c33f6a Fix: indent rule uses wrong node for class indent level (fixes #5764) (Paul O’Shannessy) + +v2.6.0 - April 1, 2016 + +* ce2accd Fix: vars-on-top now accepts exported variables (fixes #5711) (Olmo Kramer) +* 7aacba7 Update: Deprecate option `maximum` in favor of `max` (fixes #5685) (Vitor Balocco) +* 5fe6fca Fix: no-useless-escape \B regex escape (fixes #5750) (Onur Temizkan) +* 9b73ffd Update: `destructuring` option of `prefer-const` rule (fixes #5594) (Toru Nagashima) +* 8ac9206 Docs: Typo in `sort-imports` (alberto) +* 12902c5 Fix: valid-jsdoc crash w/ Field & Array Type (fixes #5745) (fixes #5746) (Burak Yigit Kaya) +* 2c8b65a Docs: Edit examples for a few rules (Mark Pedrotti) +* d736bc2 Fix: Treat SwitchCase like a block in lines-around-comment (fixes #5718) (Scott O'Hara) +* 24a61a4 Update: make `no-useless-escape` allowing line breaks (fixes #5689) (Toru Nagashima) +* 4ecd45e Fix: Ensure proper lookup of config files (fixes #5175, fixes #5468) (Nicholas C. Zakas) +* 088e26b Fix: Update doctrine to allow hyphens in JSDoc names (fixes #5612) (Kai Cataldo) +* 692fd5d Upgrade: Old Chalk.JS deprecated method (fixes #5716) (Morris Singer) +* f59d91d Update: no-param-reassign error msgs (fixes #5705) (Isaac Levy) +* c1b16cd Fix: Object spread throws error in key-spacing rule. (fixes #5724) (Ziad El Khoury Hanna) +* 3091613 Docs: Correct explanation about properties (James Monger) +* cb0f0be Fix: Lint issue with `valid-jsdoc` rule (refs #5188) (Gyandeep Singh) +* aba1954 Build: Ignore jsdoc folder internally (fixes #5714) (alberto) +* a35f127 Fix: Lint for eslint project in regards to vars (refs #5188) (Gyandeep Singh) +* d9ab4f0 Fix: Windows scoped package configs (fixes #5644) (Nicholas C. Zakas) +* 8d0cd0d Update: Basic valid-jsdoc default parameter support (fixes #5658) (Tom Andrews) + +v2.5.3 - March 28, 2016 + +* 8749ac5 Build: Disable bundling dependencies (fixes #5687) (Nicholas C. Zakas) + +v2.5.2 - March 28, 2016 + +* 1cc7f8e Docs: Remove mention of minimatch for .eslintignore (Ian VanSchooten) +* 5bd69a9 Docs: Reorder FAQ in README (alberto) +* 98e6bd9 Fix: Correct default for indentation in `eslint --init` (fixes #5698) (alberto) +* 679095e Fix: make the default of `options.cwd` in runtime (fixes #5694) (Toru Nagashima) +* 4f06f2f Docs: Distinguish examples in rules under Best Practices part 2 (Mark Pedrotti) +* 013a18e Build: Fix bundling script (fixes #5680) (Nicholas C. Zakas) +* 8c5d954 Docs: Typo fix (István Donkó) +* 09659d6 Docs: Use string severity (Kenneth Williams) +* a4ae769 Docs: Manual changelog update for v2.5.1 (Nicholas C. Zakas) +* c41fab9 Fix: don't use path.extname with undefined value (fixes #5678) (Myles Borins) + +v2.5.1 - March 25, 2016 + +* Build: No functional changes, just republished with a working package. + +v2.5.0 - March 25, 2016 + +* 7021aa9 Fix: lines-around-comment in ESLint repo, part 2 (refs #5188) (Kevin Partington) +* 095c435 Docs: Remove ES2016 from experimental section of README (Kevin Partington) +* 646f863 Build: Bundle dependencies in package.json (fixes #5013) (Nicholas C. Zakas) +* ea06868 Docs: Clarify --ext does not apply to globs (fixes #5452) (Ian VanSchooten) +* 569c478 Build: Fix phantomjs CI problems (fixes #5666) (alberto) +* 6022426 Docs: Add link to chat room in README primary links (alberto) +* 2fbb530 Docs: Add link to "Proposing a Rule Change" in README (alberto) +* 25bf491 Upgrade: globals 9.x (fixes #5668) (Toru Nagashima) +* d6f8409 New: Rule - No useless escape (fixes #5460) (Onur Temizkan) +* 12a43f1 Docs: remove brace expansion from configuring.md (refs #5314) (Jonathan Haines) +* 92d1749 New: max-statements-per-line (fixes #5424) (Kenneth Williams) +* aaf324a Fix: missing support for json sub configs (fixes #5413) (Noam Okman) +* 48ad5fe Update: Add 'caughtErrors' to rule no-unused-vars (fixes #3837) (vamshi) +* ad90c2b Fix: incorrect config message (fixes #5653) (s0ph1e) +* a551831 Docs: Distinguish examples in rules under Node.js and CommonJS (Mark Pedrotti) +* 83cd651 Upgrade: chai to 3.5.0 (fixes #5647) (alberto) +* 32748dc Fix: `radix` rule false positive at shadowed variables (fixes #5639) (Toru Nagashima) +* 66db38d Fix: `--no-ignore` should not un-ignore default ignores (fixes #5547) (alberto) +* e3e06f3 Docs: Distinguish examples in rules under Best Practices part 4 (Mark Pedrotti) +* a9f0865 Docs: Update no-sequences rule docs for clarity (fixes #5536) (Kai Cataldo) +* bae7b30 Docs: Add michaelficarra as committer (alberto) +* e2990e7 Docs: Consistent wording in rules README (alberto) +* 49b4d2a Docs: Update team list with new members (Ilya Volodin) +* d0ae66c Update: Allow autoconfiguration for JSX code (fixes #5511) (Ian VanSchooten) +* 38a0a64 Docs: Clarify `linebreak-style` docs (fixes #5628) (alberto) +* 4b7305e Fix: Allow default ignored files to be unignored (fixes #5410) (Ian VanSchooten) +* 4b05ce6 Update: Enforce repo coding conventions via ESLint (refs #5188) (Kevin Partington) +* 051b255 Docs: Remove or rewrite references to former ecmaFeatures (Mark Pedrotti) +* 9a22625 Fix: `prefer-const` false positive at non-blocked if (fixes #5610) (Toru Nagashima) +* b1fd482 Fix: leading comments added from previous node (fixes #5531) (Kai Cataldo) +* c335650 Docs: correct the no-confusing-arrow docs (Daniel Norman) +* e94b77d Fix: Respect 'ignoreTrailingComments' in max-len rule (fixes #5563) (Vamshi Krishna) +* 9289ef8 Fix: handle personal package.json without config (fixes #5496) (Denny Christochowitz) +* 87d74b2 Fix: `prefer-const` got to not change scopes (refs #5284) (Toru Nagashima) +* 5a881e7 Docs: Fix typo in code snippet for no-unmodified-loop-condition rule (Chris Rebert) +* 03037c2 Update: Overrides for space-unary-ops (fixes #5060) (Afnan Fahim) +* 24d986a Update: replace MD5 hashing of cache files with MurmurHash (fixes #5522) (Michael Ficarra) +* f405030 Fix: Ensure allowing `await` as a property name (fixes #5564) (Toru Nagashima) +* aefc90c Fix: `no-useless-constructor` clash (fixes #5573) (Toru Nagashima) +* 9eaa20d Docs: Fix typo in CLI help message (ryym) +* a7c3e67 Docs: Invalid json in `configuring.md` (alberto) +* 4e50332 Docs: Make `prefer-template` examples consistent. (alberto) +* cfc14a9 Fix: valid-jsdoc correctly checks type union (fixes #5260) (Kai Cataldo) +* 689cb7d Fix: `quote-props` false positive on certain keys (fixes #5532) (Burak Yigit Kaya) +* 167a03a Fix: `brace-style` erroneously ignoring certain errors (fixes #5197) (Burak Yigit Kaya) +* 3133f28 Fix: object-curly-spacing doesn't know types (fixes #5537) (fixes #5538) (Burak Yigit Kaya) +* d0ca171 Docs: Separate parser and config questions in issue template (Kevin Partington) +* bc769ca Fix: Improve file path resolution (fixes #5314) (Ian VanSchooten) +* 9ca8567 Docs: Distinguish examples in rules under Best Practices part 3 (Mark Pedrotti) +* b9c69f1 Docs: Distinguish examples in rules under Variables part 2 (Mark Pedrotti) +* c289414 New: `no-duplicate-imports` rule (fixes #3478) (Simen Bekkhus) + +v2.4.0 - March 11, 2016 + +* 97b2466 Fix: estraverse/escope to work with unknowns (fixes #5476) (Nicholas C. Zakas) +* 641b3f7 Fix: validate the type of severity level (fixes #5499) (Shinnosuke Watanabe) +* 9ee8869 Docs: no-unused-expressions - add more edge unusable and usable examples (Brett Zamir) +* 56bf864 Docs: Create parity between no-sequences examples (Brett Zamir) +* 13ef1c7 New: add `--parser-options` to CLI (fixes #5495) (Jordan Harband) +* ae1ee54 Docs: fix func-style arrow exception option (Craig Martin) +* 91852fd Docs: no-lone-blocks - show non-problematic (and problematic) label (Brett Zamir) +* b34458f Docs: Rearrange rules for better categories (and improve rule summaries) (Brett Zamir) +* 1198b26 Docs: Minor README clarifications (Brett Zamir) +* 03e6869 Fix: newline-before-return: bug with comment (fixes #5480) (mustafa) +* ad100fd Fix: overindent in VariableDeclarator parens or brackets (fixes #5492) (David Greenspan) +* 9b8e04b Docs: Replace all node references to Node.js which is the official name (Brett Zamir) +* cc1f2f0 Docs: Minor fixes in no-new-func (Brett Zamir) +* 6ab81d4 Docs: Distinguish examples in rules under Best Practices part 1 (Mark Pedrotti) +* 9c6c70c Update: add `allowParens` option to `no-confusing-arrow` (fixes #5332) (Burak Yigit Kaya) +* 979c096 Docs: Document linebreak-style as fixable. (Afnan Fahim) +* 9f18a81 Fix: Ignore destructuring assignment in `object-shorthand` (fixes #5488) (alberto) +* 5d9a798 Docs: README.md, prefer-const; change modified to reassigned (Michiel de Bruijne) +* 38eb7f1 Fix: key-spacing checks ObjectExpression is multiline (fixes #5479) (Kevin Partington) +* 9592c45 Fix: `no-unmodified-loop-condition` false positive (fixes #5445) (Toru Nagashima) + +v2.3.0 - March 4, 2016 + +* 1b2c6e0 Update: Proposed no-magic-numbers option: ignoreJSXNumbers (fixes #5348) (Brandon Beeks) +* 63c0b7d Docs: Fix incorrect environment ref. in Rules in Plugins. (fixes #5421) (Jesse McCarthy) +* 124c447 Build: Add additional linebreak to docs (fixes #5464) (Ilya Volodin) +* 0d3831b Docs: Add RuleTester parserOptions migration steps (Kevin Partington) +* 50f4d5a Fix: extends chain (fixes #5411) (Toru Nagashima) +* 0547072 Update: Replace getLast() with lodash.last() (fixes #5456) (Jordan Eldredge) +* 8c29946 Docs: Distinguish examples in rules under Possible Errors part 1 (Mark Pedrotti) +* 5319b4a Docs: Distinguish examples in rules under Possible Errors part 2 (Mark Pedrotti) +* 1da2420 Fix: crash when SourceCode object was reused (fixes #5007) (Toru Nagashima) +* 9e9daab New: newline-before-return rule (fixes #5009) (Kai Cataldo) +* e1bbe45 Fix: Check space after anonymous generator star (fixes #5435) (alberto) +* 119e0ed Docs: Distinguish examples in rules under Variables (Mark Pedrotti) +* 905c049 Fix: `no-undef` false positive at new.target (fixes #5420) (Toru Nagashima) +* 4a67b9a Update: Add ES7 support (fixes #5401) (Brandon Mills) +* 89c757d Docs: Replace ecmaFeatures with parserOptions in working-with-rules (Kevin Partington) +* 804c08e Docs: Add parserOptions to RuleTester section of working-with-rules (Kevin Partington) +* 1982c50 Docs: Document string option for `no-unused-vars`. (alberto) +* 4f82b2b Update: Support classes in `padded-blocks` (fixes #5092) (alberto) +* ed5564f Docs: Specify results of `no-unused-var` with `args` (fixes #5334) (chinesedfan) +* de0a4ef Fix: `getFormatter` throws an error when called as static (fixes #5378) (cowchimp) +* 78f7ca9 Fix: Prevent crash from swallowing console.log (fixes #5381) (Ian VanSchooten) +* 34b648d Fix: remove tests which have invalid syntax (fixes #5405) (Toru Nagashima) +* 7de5ae4 Docs: Missing allow option in docs (Scott O'Hara) +* cf14c71 Fix: `no-useless-constructor` rule crashes sometimes (fixes #5290) (Burak Yigit Kaya) +* 70e3a02 Update: Allow string severity in config (fixes #3626) (Nicholas C. Zakas) +* 13c7c19 Update: Exclude ES5 constructors from consistent-return (fixes #5379) (Kevin Locke) +* 784d3bf Fix: Location info in `dot-notation` rule (fixes #5397) (Gyandeep Singh) +* 6280b2d Update: Support switch statements in padded-blocks (fixes #5056) (alberto) +* 25a5b2c Fix: Allow irregular whitespace in comments (fixes #5368) (Christophe Porteneuve) +* 560c0d9 New: no-restricted-globals rule implementation (fixes #3966) (Benoît Zugmeyer) +* c5bb478 Fix: `constructor-super` false positive after a loop (fixes #5394) (Toru Nagashima) +* 6c0c4aa Docs: Add Issue template (fixes #5313) (Kai Cataldo) +* 1170e67 Fix: indent rule doesn't handle constructor instantiation (fixes #5384) (Nate Cavanaugh) +* 6bc9932 Fix: Avoid magic numbers in rule options (fixes #4182) (Brandon Beeks) +* 694e1c1 Fix: Add tests to cover default magic number tests (fixes #5385) (Brandon Beeks) +* 0b5349d Fix: .eslintignore paths should be absolute (fixes #5362) (alberto) +* 8f6c2e7 Update: Better error message for plugins (refs #5221) (Nicholas C. Zakas) +* 972d41b Update: Improve error message for rule-tester (fixes #5369) (Jeroen Engels) +* fe3f6bd Fix: `no-self-assign` false positive at shorthand (fixes #5371) (Toru Nagashima) +* 2376291 Docs: Missing space in `no-fallthrough` doc. (alberto) +* 5aedb87 Docs: Add mysticatea as reviewer (Nicholas C. Zakas) +* 1f9fd10 Update: no-invalid-regexp allows custom flags (fixes #5249) (Afnan Fahim) +* f1eab9b Fix: Support for dash and slash in `valid-jsdoc` (fixes #1598) (Gyandeep Singh) +* cd12a4b Fix:`newline-per-chained-call` should only warn on methods (fixes #5289) (Burak Yigit Kaya) +* 0d1377d Docs: Add missing `symbol` type into valid list (Plusb Preco) +* 6aa2380 Update: prefer-const; change modified to reassigned (fixes #5350) (Michiel de Bruijne) +* d1d62c6 Fix: indent check for else keyword with Stroustrup style (fixes #5218) (Gyandeep Singh) +* 7932f78 Build: Fix commit message validation (fixes #5340) (Nicholas C. Zakas) +* 1c347f5 Fix: Cleanup temp files from tests (fixes #5338) (Nick) +* 2f3e1ae Build: Change rules to warnings in perf test (fixes #5330) (Brandon Mills) +* 36f40c2 Docs: Achieve consistent order of h2 in rule pages (Mark Pedrotti) + +v2.2.0 - February 19, 2016 + +* 45a22b5 Docs: remove esprima-fb from suggested parsers (Henry Zhu) +* a4d9cd3 Docs: Fix semi rule typo (Brandon Mills) +* 9d005c0 Docs: Correct option name in `no-implicit-coercion` rule (Neil Kistner) +* 2977248 Fix: Do not cache `.eslintrc.js` (fixes #5067) (Nick) +* 211eb8f Fix: no-multi-spaces conflicts with smart tabs (fixes #2077) (Afnan Fahim) +* 6dc9483 Fix: Crash in `constructor-super` (fixes #5319) (Burak Yigit Kaya) +* 3f48875 Docs: Fix yield star spacing examples (Dmitriy Lazarev) +* 4dab76e Docs: Update `preferType` heading to keep code format (fixes #5307) (chinesedfan) +* 7020b82 Fix: `sort-imports` warned between default and members (fixes #5305) (Toru Nagashima) +* 2f4cd1c Fix: `constructor-super` and `no-this-before-super` false (fixes #5261) (Toru Nagashima) +* 59e9c5b New: eslint-disable-next-line (fixes #5206) (Kai Cataldo) +* afb6708 Fix: `indent` rule forgot about some CallExpressions (fixes #5295) (Burak Yigit Kaya) +* d18d406 Docs: Update PR creation bot message (fixes #5268) (Nicholas C. Zakas) +* 0b1cd19 Fix: Ignore parser option if set to default parser (fixes #5241) (Kai Cataldo) + +v2.1.0 - February 15, 2016 + +* 7981ef5 Build: Fix release script (Nicholas C. Zakas) +* c9c34ea Fix: Skip computed members in `newline-per-chained-call` (fixes #5245) (Burak Yigit Kaya) +* b32ddad Build: `npm run perf` command should check the exit code (fixes #5279) (Burak Yigit Kaya) +* 6580d1c Docs: Fix incorrect `api.verify` JSDoc for `config` param (refs #5104) (Burak Yigit Kaya) +* 1f47868 Docs: Update yield-star-spacing documentation for 2.0.0 (fixes #5272) (Burak Yigit Kaya) +* 29da8aa Fix: `newline-after-var` crash on a switch statement (fixes #5277) (Toru Nagashima) +* 86c5a20 Fix: `func-style` should ignore ExportDefaultDeclarations (fixes #5183) (Burak Yigit Kaya) +* ba287aa Fix: Consolidate try/catches to top levels (fixes #5243) (Ian VanSchooten) +* 3ef5da1 Docs: Update no-magic-numbers#ignorearrayindexes. (KazuakiM) +* 0d6850e Update: Allow var declaration at end of block (fixes #5246) (alberto) +* c1e3a73 Fix: Popular style init handles missing package.json keys (refs #5243) (Brandon Mills) +* 68c6e22 Docs: fix default value of `keyword-spacing`'s overrides option. (Toru Nagashima) +* 00fe46f Upgrade: inquirer (fixes #5265) (Bogdan Chadkin) +* ef729d7 Docs: Remove option that is not being used in max-len rule (Thanos Lefteris) +* 4a5ddd5 Docs: Fix rule config above examples for require-jsdoc (Thanos Lefteris) +* c5cbc1b Docs: Add rule config above each example in jsx-quotes (Thanos Lefteris) +* f0aceba Docs: Correct alphabetical ordering in rule list (Randy Coulman) +* 1651ffa Docs: update migrating to 2.0.0 (fixes #5232) (Toru Nagashima) +* 9078537 Fix: `indent` on variable declaration with separate array (fixes #5237) (Burak Yigit Kaya) +* f8868b2 Docs: Typo fix in consistent-this rule doc fixes #5240 (Nicolas Froidure) +* 44f6915 Fix: ESLint Bot mentions the wrong person for extra info (fixes #5229) (Burak Yigit Kaya) +* c612a8e Fix: `no-empty-function` crash (fixes #5227) (Toru Nagashima) +* ae663b6 Docs: Add links for issue documentation (Nicholas C. Zakas) +* 717bede Build: Switch to using eslint-release (fixes #5223) (Nicholas C. Zakas) +* 980e139 Fix: Combine all answers for processAnswers (fixes #5220) (Ian VanSchooten) +* 1f2a1d5 Docs: Remove inline errors from doc examples (fixes #4104) (Burak Yigit Kaya) + +v2.0.0 - February 12, 2016 + +* cc3a66b Docs: Issue message when more info is needed (Nicholas C. Zakas) +* 2bc40fa Docs: Simplify hierarchy of headings in rule pages (Mark Pedrotti) +* 1666254 Docs: Add note about only-whitespace rule for `--fix` (fixes #4774) (Burak Yigit Kaya) +* 2fa09d2 Docs: Add `quotes` to related section of `prefer-template` (fixes #5192) (Burak Yigit Kaya) +* 7b12995 Fix: `key-spacing` not enforcing no-space in minimum mode (fixes #5008) (Burak Yigit Kaya) +* c1c4f4d Breaking: new `no-empty-function` rule (fixes #5161) (Toru Nagashima) + +v2.0.0-rc.1 - February 9, 2016 + +* 4dad82a Update: Adding shared environment for node and browser (refs #5196) (Eli White) +* b46c893 Fix: Config file relative paths (fixes #5164, fixes #5160) (Nicholas C. Zakas) +* aa5b2ac Fix: no-whitespace-before-property fixes (fixes #5167) (Kai Cataldo) +* 4e99924 Update: Replace several dependencies with lodash (fixes #5012) (Gajus Kuizinas) +* 718dc68 Docs: Remove periods in rules' README for consistency. (alberto) +* 7a47085 Docs: Correct `arrow-spacing` overview. (alberto) +* a4cde1b Docs: Clarify global-require inside try/catch (fixes #3834) (Brandon Mills) +* fd07925 Docs: Clarify docs for api.verify (fixes #5101, fixes #5104) (Burak Yigit Kaya) +* 413247f New: Add a --print-config flag (fixes #5099) (Christopher Crouzet) +* efeef42 Update: Implement auto fix for space-in-parens (fixes #5050) (alberto) +* e07fdd4 Fix: code path analysis and labels (fixes #5171) (Toru Nagashima) +* 2417bb2 Fix: `no-unmodified-loop-condition` false positive (fixes #5166) (Toru Nagashima) +* fae1884 Fix: Allow same-line comments in padded-blocks (fixes #5055) (Brandon Mills) +* a24d8ad Fix: Improve autoconfig logging (fixes #5119) (Ian VanSchooten) +* e525923 Docs: Correct obvious inconsistencies in rules h2 elements (Mark Pedrotti) +* 9675b5e Docs: `avoid-escape` does not allow backticks (fixes #5147) (alberto) +* a03919a Fix: `no-unexpected-multiline` false positive (fixes #5148) (Feross Aboukhadijeh) +* 74360d6 Docs: Note no-empty applies to empty block statements (fixes #5105) (alberto) +* 6eeaa3f Build: Remove pending tests (fixes #5126) (Ian VanSchooten) +* 02c83df Docs: Update docs/rules/no-plusplus.md (Sheldon Griffin) +* 0c4de5c New: Added "table" formatter (fixes #4037) (Gajus Kuizinas) +* 0a59926 Update: 'implied strict mode' ecmaFeature (fixes #4832) (Nick Evans) +* 53a6eb3 Fix: Handle singular case in rule-tester error message (fixes #5141) (Bryan Smith) +* 97ac91c Build: Increment eslint-config-eslint (Nicholas C. Zakas) + +v2.0.0-rc.0 - February 2, 2016 + +* 973c499 Fix: `sort-imports` crash (fixes #5130) (Toru Nagashima) +* e64b2c2 Breaking: remove `no-empty-label` (fixes #5042) (Toru Nagashima) +* 79ebbc9 Breaking: update `eslint:recommended` (fixes #5103) (Toru Nagashima) +* e1d7368 New: `no-extra-label` rule (fixes #5059) (Toru Nagashima) +* c83b48c Fix: find ignore file only in cwd (fixes #5087) (Nicholas C. Zakas) +* 3a24240 Docs: Fix jsdoc param names to match function param names (Thanos Lefteris) +* 1d79746 Docs: Replace ecmaFeatures setting with link to config page (Thanos Lefteris) +* e96ffd2 New: `template-curly-spacing` rule (fixes #5049) (Toru Nagashima) +* 4b02902 Update: Extended no-console rule (fixes #5095) (EricHenry) +* 757651e Docs: Remove reference to rules enabled by default (fixes #5100) (Brandon Mills) +* 0d87f5d Docs: Clarify eslint-disable comments only affect rules (fixes #5005) (Brandon Mills) +* 1e791a2 New: `no-self-assign` rule (fixes #4729) (Toru Nagashima) +* c706eb9 Fix: reduced `no-loop-func` false positive (fixes #5044) (Toru Nagashima) +* 3275e86 Update: Add extra aliases to consistent-this rule (fixes #4492) (Zachary Alexander Belford) +* a227360 Docs: Replace joyent org with nodejs (Thanos Lefteris) +* b2aedfe New: Rule to enforce newline after each call in the chain (fixes #4538) (Rajendra Patil) +* d67bfdd New: `no-unused-labels` rule (fixes #5052) (Toru Nagashima) + +v2.0.0-beta.3 - January 29, 2016 + +* 86a3e3d Update: Remove blank lines at beginning of files (fixes #5045) (Jared Sohn) +* 4fea752 New: Autoconfiguration from source inspection (fixes #3567) (Ian VanSchooten) +* 519f39f Breaking: Remove deprecated rules (fixes #5032) (Gyandeep Singh) +* c75ee4a New: Add support for configs in plugins (fixes #3659) (Ilya Volodin) +* 361377f Fix: `prefer-const` false positive reading before writing (fixes #5074) (Toru Nagashima) +* ff2551d Build: Improve `npm run perf` command (fixes #5028) (Toru Nagashima) +* bcca69b Update: add int32Hint option to `no-bitwise` rule (fixes #4873) (Maga D. Zandaqo) +* e3f2683 Update: config extends dependency lookup (fixes #5023) (Nicholas C. Zakas) +* a327a06 Fix: Indent rule for allman brace style scenario (fixes #5064) (Gyandeep Singh) +* afdff6d Fix: `no-extra-bind` false positive (fixes #5058) (Toru Nagashima) +* c1fad4f Update: add autofix support for spaced-comment (fixes #4969, fixes #5030) (Maga D. Zandaqo) +* 889b942 Revert "Docs: Update readme for legend describing rules icons (refs #4355)" (Nicholas C. Zakas) +* b0f21a0 Fix: `keyword-spacing` false positive in template strings (fixes #5043) (Toru Nagashima) +* 53fa5d1 Fix: `prefer-const` false positive in a loop condition (fixes #5024) (Toru Nagashima) +* 385d399 Docs: Update readme for legend describing rules icons (Kai Cataldo) +* 505f1a6 Update: Allow parser to be relative to config (fixes #4985) (Nicholas C. Zakas) +* 79e8a0b New: `one-var-declaration-per-line` rule (fixes #1622) (alberto) +* 654e6e1 Update: Check extra Boolean calls in no-extra-boolean-cast (fixes #3650) (Andrew Sutton) + +v2.0.0-beta.2 - January 22, 2016 + +* 3fa834f Docs: Fix formatter links (fixes #5006) (Gyandeep Singh) +* 54b1bc8 Docs: Fix link in strict.md (fixes #5026) (Nick Evans) +* e0c5cf7 Upgrade: Espree to 3.0.0 (fixes #5018) (Ilya Volodin) +* 69f149d Docs: language tweaks (Andres Kalle) +* 2b33c74 Update: valid-jsdoc to not require @return in constructors (fixes #4976) (Maga D. Zandaqo) +* 6ac2e01 Docs: Fix description of exported comment (Mickael Jeanroy) +* 29392f8 New: allow-multiline option on comma-dangle (fixes #4967) (Alberto Gimeno) +* 05b8cb3 Update: Module overrides all 'strict' rule options (fixes #4936) (Nick Evans) +* 8470474 New: Add metadata to few test rules (fixes #4494) (Ilya Volodin) +* ba11c1b Docs: Add Algolia as sponsor to README (Nicholas C. Zakas) +* b28a19d Breaking: Plugins envs and config removal (fixes #4782, fixes #4952) (Nicholas C. Zakas) +* a456077 Docs: newline-after-var doesn't allow invalid options. (alberto) +* 3e6a24e Breaking: Change `strict` default mode to "safe" (fixes #4961) (alberto) +* 5b96265 Breaking: Update eslint:recommended (fixes #4953) (alberto) +* 7457a4e Upgrade: glob to 6.x (fixes #4991) (Gyandeep Singh) +* d3f4bdd Build: Cleanup for code coverage (fixes #4983) (Gyandeep Singh) +* b8fbaa0 Fix: multiple message in TAP formatter (fixes #4975) (Simon Degraeve) +* 990f8da Fix: `getNodeByRangeIndex` performance issue (fixes #4989) (Toru Nagashima) +* 8ac1dac Build: Update markdownlint dependency to 0.1.0 (fixes #4988) (David Anson) +* 5cd5429 Fix: function expression doc in call expression (fixes #4964) (Tim Schaub) +* 4173baa Fix: `no-dupe-class-members` false positive (fixes #4981) (Toru Nagashima) +* 12fe803 Breaking: Supports Unicode BOM (fixes #4878) (Toru Nagashima) +* 1fc80e9 Build: Increment eslint-config-eslint (Nicholas C. Zakas) +* e0a9024 Update: Report newline between template tag and literal (fixes #4210) (Rajendra Patil) +* da3336c Update: Rules should get `sourceType` from Program node (fixes #4960) (Nick Evans) +* a2ac359 Update: Make jsx-quotes fixable (refs #4377) (Gabriele Petronella) +* ee1014d Fix: Incorrect error location for object-curly-spacing (fixes #4957) (alberto) +* b52ed17 Fix: Incorrect error location for space-in-parens (fixes #4956) (alberto) +* 9c1bafb Fix: Columns of parse errors are off by 1 (fixes #4896) (alberto) +* 5e4841e New: 'id-blacklist' rule (fixes #3358) (Keith Cirkel) +* 700b8bc Update: Add "allow" option to allow specific operators (fixes #3308) (Rajendra Patil) +* d82eeb1 Update: Add describe around rule tester blocks (fixes #4907) (Ilya Volodin) +* 2967402 Update: Add minimum value to integer values in schema (fixes #4941) (Ilya Volodin) +* 7b632f8 Upgrade: Globals to ^8.18.0 (fixes #4728) (Gyandeep Singh) +* 86e6e57 Fix: Incorrect error at EOF for no-multiple-empty-lines (fixes #4917) (alberto) +* 7f058f3 Fix: Incorrect location for padded-blocks (fixes #4913) (alberto) +* b3de8f7 Fix: Do not show ignore messages for default ignored files (fixes #4931) (Gyandeep Singh) +* b1360da Update: Support multiLine and singleLine options (fixes #4697) (Rajendra Patil) +* 82fbe09 Docs: Small semantic issue in documentation example (fixes #4937) (Marcelo Zarate) +* 13a4e30 Docs: Formatting inconsistencies (fixes #4912) (alberto) +* d487013 Update: Option to allow extra parens for cond assign (fixes #3317) (alberto) +* 0f469b4 Fix: JSDoc for function expression on object property (fixes #4900) (Tim Schaub) +* c2dee27 Update: Add module tests to no-extra-semi (fixes #4915) (Nicholas C. Zakas) +* 5a633bf Update: Add `preferType` option to `valid-jsdoc` rule (fixes #3056) (Gyandeep Singh) +* ebd01b7 Build: Fix version number on release (fixes #4921) (Nicholas C. Zakas) +* 2d626a3 Docs: Fix typo in changelog (Nicholas C. Zakas) +* c4c4139 Fix: global-require no longer warns if require is shadowed (fixes #4812) (Kevin Partington) +* bbf7f27 New: provide config.parser via `parserName` on RuleContext (fixes #3670) (Ben Mosher) + +v2.0.0-beta.1 - January 11, 2016 + +* 6c70d84 Build: Fix prerelease script (fixes #4919) (Nicholas C. Zakas) +* d5c9435 New: 'sort-imports' rule (refs #3143) (Christian Schuller) +* a8cfd56 Fix: remove duplicate of eslint-config-eslint (fixes #4909) (Toru Nagashima) +* 19a9fbb Breaking: `space-before-blocks` ignores after keywords (fixes #1338) (Toru Nagashima) +* c275b41 Fix: no-extra-parens ExpressionStatement restricted prods (fixes #4902) (Michael Ficarra) +* b795850 Breaking: don't load ~/.eslintrc when using --config flag (fixes #4881) (alberto) +* 3906481 Build: Add AppVeyor CI (fixes #4894) (Gyandeep Singh) +* 6390862 Docs: Fix missing footnote (Yoshiya Hinosawa) +* e5e06f8 Fix: Jsdoc comment for multi-line function expressions (fixes #4889) (Gyandeep Singh) +* 7c9be60 Fix: Fix path errors in windows (fixes #4888) (Gyandeep Singh) +* a1840e7 Fix: gray text was invisible on Solarized Dark theme (fixes #4886) (Jack Leigh) +* fc9f528 Docs: Modify unnecessary flag docs in quote-props (Matija Marohnić) +* 186e8f0 Update: Ignore camelcase in object destructuring (fixes #3185) (alberto) +* 7c97201 Upgrade: doctrine version to 1.1.0 (fixes #4854) (Tim Schaub) +* ceaf324 New: Add no-new-symbol rule (fixes #4862) (alberto) +* e2f2b66 Breaking: Remove defaults from `eslint:recommended` (fixes #4809) (Ian VanSchooten) +* 0b3c01e Docs: Specify default for func-style (fixes #4834) (Ian VanSchooten) +* 008ea39 Docs: Document default for operator assignment (fixes #4835) (alberto) +* b566f56 Docs: no-new-func typo (alberto) +* 1569695 Update: Adds default 'that' for consistent-this (fixes #4833) (alberto) +* f7b28b7 Docs: clarify `requireReturn` option for valid-jsdoc rule (fixes #4859) (Tim Schaub) +* 407f329 Build: Fix prerelease script (Nicholas C. Zakas) +* 688f277 Fix: Set proper exit code for Node > 0.10 (fixes #4691) (Nicholas C. Zakas) +* 58715e9 Fix: Use single quotes in context.report messages (fixes #4845) (Joe Lencioni) +* 5b7586b Fix: do not require a @return tag for @interface (fixes #4860) (Tim Schaub) +* d43f26c Breaking: migrate from minimatch to node-ignore (fixes #2365) (Stefan Grönke) +* c07ca39 Breaking: merges keyword spacing rules (fixes #3869) (Toru Nagashima) +* 871f534 Upgrade: Optionator version to 0.8.1 (fixes #4851) (Eric Johnson) +* 82d4cd9 Update: Add atomtest env (fixes #4848) (Andres Suarez) +* 9c9beb5 Update: Add "ignore" override for operator-linebreak (fixes #4294) (Rajendra Patil) +* 9c03abc Update: Add "allowCall" option (fixes #4011) (Rajendra Patil) +* 29516f1 Docs: fix migration guide for no-arrow-condition rule (Peter Newnham) +* 2ef7549 Docs: clarify remedy to some prefer-const errors (Turadg Aleahmad) +* 1288ba4 Update: Add default limit to `complexity` (fixes #4808) (Ian VanSchooten) +* d3e8179 Fix: env is rewritten by modules (fixes #4814) (Toru Nagashima) +* fd72aba Docs: Example fix for `no-extra-parens` rule (fixes #3527) (Gyandeep Singh) +* 315f272 Fix: Change max-warnings type to Int (fixes #4660) (George Zahariev) +* 5050768 Update: Ask for `commonjs` under config init (fixes #3553) (Gyandeep Singh) +* 4665256 New: Add no-whitespace-before-property rule (fixes #1086) (Kai Cataldo) +* f500d7d Fix: allow extending @scope/eslint/file (fixes #4800) (André Cruz) +* 5ab564e New: 'ignoreArrayIndexes' option for 'no-magic-numbers' (fixes #4370) (Christian Schuller) +* 97cdb95 New: Add no-useless-constructor rule (fixes #4785) (alberto) +* b9bcbaf Fix: Bug in no-extra-bind (fixes #4806) (Andres Kalle) +* 246a6d2 Docs: Documentation fix (Andres Kalle) +* 9ea6b36 Update: Ignore case in jsdoc tags (fixes #4576) (alberto) +* acdda24 Fix: ignore argument parens in no-unexpected-multiline (fixes #4658) (alberto) +* 4931f56 Update: optionally allow bitwise operators (fixes #4742) (Swaagie) + +v2.0.0-alpha-2 - December 23, 2015 + +* Build: Add prerelease script (Nicholas C. Zakas) +* Update: Allow to omit semi for one-line blocks (fixes #4385) (alberto) +* Fix: Handle getters and setters in key-spacing (fixes #4792) (Brandon Mills) +* Fix: ObjectRestSpread throws error in key-spacing rule (fixes #4763) (Ziad El Khoury Hanna) +* Docs: Typo in generator-star (alberto) +* Fix: Backtick behavior in quotes rule (fixes #3090) (Nicholas C. Zakas) +* Fix: Empty schemas forbid any options (fixes #4789) (Brandon Mills) +* Fix: Remove `isMarkedAsUsed` function name (fixes #4783) (Gyandeep Singh) +* Fix: support arrow functions in no-return-assign (fixes #4743) (alberto) +* Docs: Add license header to Working with Rules guide (Brandon Mills) +* Fix: RuleTester to show parsing errors (fixes #4779) (Nicholas C. Zakas) +* Docs: Escape underscores in no-path-concat (alberto) +* Update: configuration for classes in space-before-blocks (fixes #4089) (alberto) +* Docs: Typo in no-useless-concat (alberto) +* Docs: fix typos, suggests (molee1905) +* Docs: Typos in space-before-keywords and space-unary-ops (fixes #4771) (alberto) +* Upgrade: beefy to ^2.0.0, fixes installation errors (fixes #4760) (Kai Cataldo) +* Docs: Typo in no-unexpected-multiline (fixes #4756) (alberto) +* Update: option to ignore top-level max statements (fixes #4309) (alberto) +* Update: Implement auto fix for semi-spacing rule (fixes #3829) (alberto) +* Fix: small typos in code examples (Plusb Preco) +* Docs: Add section on file extensions to user-guide/configuring (adam) +* Fix: Comma first issue in `indent` (fixes #4739, fixes #3456) (Gyandeep Singh) +* Fix: no-constant-condition false positive (fixes #4737) (alberto) +* Fix: Add source property for fatal errors (fixes #3325) (Gyandeep Singh) +* New: Add a comment length option to the max-len rule (fixes #4665) (Ian) +* Docs: RuleTester doesn't require any tests (fixes #4681) (alberto) +* Fix: Remove path analysis from debug log (fixes #4631) (Ilya Volodin) +* Fix: Set null to property ruleId when fatal is true (fixes #4722) (Sébastien Règne) +* New: Visual Studio compatible formatter (fixes #4708) (rhpijnacker) +* New: Add greasemonkey environment (fixes #4715) (silverwind) +* Fix: always-multiline for comma-dangle import (fixes #4704) (Nicholas C. Zakas) +* Fix: Check 1tbs non-block else (fixes #4692) (Nicholas C. Zakas) +* Fix: Apply environment configs last (fixes #3915) (Nicholas C. Zakas) +* New: `no-unmodified-loop-condition` rule (fixes #4523) (Toru Nagashima) +* Breaking: deprecate `no-arrow-condition` rule (fixes #4417) (Luke Karrys) +* Update: Add cwd option for cli-engine (fixes #4472) (Ilya Volodin) +* New: Add no-confusing-arrow rule (refs #4417) (Luke Karrys) +* Fix: ensure `ConfigOps.merge` do a deep copy (fixes #4682) (Toru Nagashima) +* Fix: `no-invalid-this` allows this in static method (fixes #4669) (Toru Nagashima) +* Fix: Export class syntax for `require-jsdoc` rule (fixes #4667) (Gyandeep Singh) +* Update: Add "safe" mode to strict (fixes #3306) (Brandon Mills) + +v2.0.0-alpha-1 - December 11, 2015 + +* Breaking: Correct links between variables and references (fixes #4615) (Toru Nagashima) +* Fix: Update rule tests for parser options (fixes #4673) (Nicholas C. Zakas) +* Breaking: Implement parserOptions (fixes #4641) (Nicholas C. Zakas) +* Fix: max-len rule overestimates the width of some tabs (fixes #4661) (Nick Evans) +* New: Add no-implicit-globals rule (fixes #4542) (Joshua Peek) +* Update: `no-use-before-define` checks invalid initializer (fixes #4280) (Toru Nagashima) +* Fix: Use oneValuePerFlag for --ignore-pattern option (fixes #4507) (George Zahariev) +* New: `array-callback-return` rule (fixes #1128) (Toru Nagashima) +* Upgrade: Handlebars to >= 4.0.5 for security reasons (fixes #4642) (Jacques Favreau) +* Update: Add class body support to `indent` rule (fixes #4372) (Gyandeep Singh) +* Breaking: Remove space-after-keyword newline check (fixes #4149) (Nicholas C. Zakas) +* Breaking: Treat package.json like the rest of configs (fixes #4451) (Ilya Volodin) +* Docs: writing mistake (molee1905) +* Update: Add 'method' option to no-empty (fixes #4605) (Kai Cataldo) +* Breaking: Remove autofix from eqeqeq (fixes #4578) (Ilya Volodin) +* Breaking: Remove ES6 global variables from builtins (fixes #4085) (Brandon Mills) +* Fix: Handle forbidden LineTerminators in no-extra-parens (fixes #4229) (Brandon Mills) +* Update: Option to ignore constructor Fns object-shorthand (fixes #4487) (Kai Cataldo) +* Fix: Check YieldExpression argument in no-extra-parens (fixes #4608) (Brandon Mills) +* Fix: Do not cache `package.json` (fixes #4611) (Spain) +* Build: Consume no-underscore-dangle allowAfterThis option (fixes #4599) (Kevin Partington) +* New: Add no-restricted-imports rule (fixes #3196) (Guy Ellis) +* Docs: no-extra-semi no longer refers to deprecated rule (fixes #4598) (Kevin Partington) +* Fix: `consistent-return` checks the last (refs #3530, fixes #3373) (Toru Nagashima) +* Update: add class option to `no-use-before-define` (fixes #3944) (Toru Nagashima) +* Breaking: Simplify rule schemas (fixes #3625) (Nicholas C. Zakas) +* Docs: Update docs/rules/no-plusplus.md (Xiangyun Chi) +* Breaking: added bower_components to default ignore (fixes #3550) (Julian Laval) +* Fix: `no-unreachable` with the code path (refs #3530, fixes #3939) (Toru Nagashima) +* Fix: `no-this-before-super` with the code path analysis (refs #3530) (Toru Nagashima) +* Fix: `no-fallthrough` with the code path analysis (refs #3530) (Toru Nagashima) +* Fix: `constructor-super` with the code path analysis (refs #3530) (Toru Nagashima) +* Breaking: Switch to Espree 3.0.0 (fixes #4334) (Nicholas C. Zakas) +* Breaking: Freeze context object (fixes #4495) (Nicholas C. Zakas) +* Docs: Add Code of Conduct (fixes #3095) (Nicholas C. Zakas) +* Breaking: Remove warnings of readonly from `no-undef` (fixes #4504) (Toru Nagashima) +* Update: allowAfterThis option in no-underscore-dangle (fixes #3435) (just-boris) +* Fix: Adding options unit tests for --ignore-pattern (refs #4507) (Kevin Partington) +* Breaking: Implement yield-star-spacing rule (fixes #4115) (Bryan Smith) +* New: `prefer-rest-params` rule (fixes #4108) (Toru Nagashima) +* Update: `prefer-const` begins to cover separating init (fixes #4474) (Toru Nagashima) +* Fix: `no-eval` come to catch indirect eval (fixes #4399, fixes #4441) (Toru Nagashima) +* Breaking: Default no-magic-numbers to none. (fixes #4193) (alberto) +* Breaking: Allow empty arrow body (fixes #4411) (alberto) +* New: Code Path Analysis (fixes #3530) (Toru Nagashima) + +v1.10.3 - December 1, 2015 + +* Docs: Update strict rule docs (fixes #4583) (Nicholas C. Zakas) +* Docs: Reference .eslintrc.* in contributing docs (fixes #4532) (Kai Cataldo) +* Fix: Add for-of to `curly` rule (fixes #4571) (Kai Cataldo) +* Fix: Ignore space before function in array start (fixes #4569) (alberto) + +v1.10.2 - November 27, 2015 + +* Upgrade: escope@3.3.0 (refs #4485) (Nicholas C. Zakas) +* Upgrade: Pinned down js-yaml to avoid breaking dep (fixes #4553) (alberto) +* Fix: lines-around-comment with multiple comments (fixes #3509) (alberto) +* Upgrade: doctrine@0.7.1 (fixes #4545) (Kevin Partington) +* Fix: Bugfix for eqeqeq autofix (fixes #4540) (Kevin Partington) +* Fix: Add for-in to `curly` rule (fixes #4436) (Kai Cataldo) +* Fix: `valid-jsdoc` unneeded require check fix (fixes #4527) (Gyandeep Singh) +* Fix: `brace-style` ASI fix for if-else condition (fixes #4520) (Gyandeep Singh) +* Build: Add branch update during release process (fixes #4491) (Gyandeep Singh) +* Build: Allow revert commits in commit messages (fixes #4452) (alberto) +* Fix: Incorrect location in no-fallthrough (fixes #4516) (alberto) +* Fix: `no-spaced-func` had been crashed (fixes #4508) (Toru Nagashima) +* Fix: Add a RestProperty test of `no-undef` (fixes #3271) (Toru Nagashima) +* Docs: Load badge from HTTPS (Brian J Brennan) +* Build: Update eslint bot messages (fixes #4497) (Nicholas C. Zakas) + +v1.10.1 - November 20, 2015 + +* Fix: Revert freezing context object (refs #4495) (Nicholas C. Zakas) +* 1.10.0 (Nicholas C. Zakas) + +v1.10.0 - November 20, 2015 + +* Docs: Remove dupes from changelog (Nicholas C. Zakas) +* Update: --init to create extensioned files (fixes #4476) (Nicholas C. Zakas) +* Docs: Update description of exported comment (fixes #3916) (Nicholas C. Zakas) +* Docs: Move legacy rules to stylistic (files #4111) (Nicholas C. Zakas) +* Docs: Clean up description of recommended rules (fixes #4365) (Nicholas C. Zakas) +* Docs: Fix home directory config description (fixes #4398) (Nicholas C. Zakas) +* Update: Add class support to `require-jsdoc` rule (fixes #4268) (Gyandeep Singh) +* Update: return type error in `valid-jsdoc` rule (fixes #4443) (Gyandeep Singh) +* Update: Display errors at the place where fix should go (fixes #4470) (nightwing) +* Docs: Fix typo in default `cacheLocation` value (Andrew Hutchings) +* Fix: Handle comments in block-spacing (fixes #4387) (alberto) +* Update: Accept array for `ignorePattern` (fixes #3982) (Jesse McCarthy) +* Update: replace label and break with IIFE and return (fixes #4459) (Ilya Panasenko) +* Fix: space-before-keywords false positive (fixes #4449) (alberto) +* Fix: Improves performance (refs #3530) (Toru Nagashima) +* Fix: Autofix quotes produces invalid javascript (fixes #4380) (nightwing) +* Docs: Update indent.md (Nathan Brown) +* New: Disable comment config option (fixes #3901) (Matthew Riley MacPherson) +* New: Config files with extensions (fixes #4045, fixes #4263) (Nicholas C. Zakas) +* Revert "Update: Add JSX exceptions to no-extra-parens (fixes #4229)" (Brandon Mills) +* Update: Add JSX exceptions to no-extra-parens (fixes #4229) (Brandon Mills) +* Docs: Replace link to deprecated rule with newer rule (Andrew Marshall) +* Fix: `no-extend-native` crashed at empty defineProperty (fixes #4438) (Toru Nagashima) +* Fix: Support empty if blocks in lines-around-comment (fixes #4339) (alberto) +* Fix: `curly` warns wrong location for `else` (fixes #4362) (Toru Nagashima) +* Fix: `id-length` properties never option (fixes #4347) (Toru Nagashima) +* Docs: missing close rbracket in example (@storkme) +* Revert "Update: Allow empty arrow body (fixes #4411)" (Nicholas C. Zakas) +* Fix: eqeqeq autofix avoids clashes with space-infix-ops (fixes #4423) (Kevin Partington) +* Docs: Document semi-spacing behaviour (fixes #4404) (alberto) +* Update: Allow empty arrow body (fixes #4411) (alberto) +* Fix: Handle comments in comma-spacing (fixes #4389) (alberto) +* Update: Refactor eslint.verify args (fixes #4395) (Nicholas C. Zakas) +* Fix: no-undef-init should ignore const (fixes #4284) (Nicholas C. Zakas) +* Fix: Add the missing "as-needed" docs to the radix rule (fixes #4364) (Michał Gołębiowski) +* Fix: Display singular/plural version of "line" in message (fixes #4359) (Marius Schulz) +* Update: Add Popular Style Guides (fixes #4320) (Jamund Ferguson) +* Fix: eslint.report can be called w/o node if loc provided (fixes #4220) (Kevin Partington) +* Update: no-implicit-coercion validate AssignmentExpression (fixes #4348) (Ilya Panasenko) + +v1.9.0 - November 6, 2015 + +* Update: Make radix accept a "as-needed" option (fixes #4048) (Michał Gołębiowski) +* Fix: Update the message to include number of lines (fixes #4342) (Brian Delahunty) +* Docs: ASI causes problem whether semicolons are used or not (Thai Pangsakulyanont) +* Fix: Fixer to not overlap ranges among fix objects (fixes #4321) (Gyandeep Singh) +* Update: Add default to `max-nested-callbacks` (fixes #4297) (alberto) +* Fix: Check comments in space-in-parens (fixes #4302) (alberto) +* Update: Add quotes to error messages to improve clarity (fixes #4313) (alberto) +* Fix: tests failing due to differences in temporary paths (fixes #4324) (alberto) +* Fix: Make tests compatible with Windows (fixes #4315) (Ian VanSchooten) +* Update: Extract glob and filesystem logic from cli-engine (fixes #4305) (Ian VanSchooten) +* Build: Clarify commit-check messages (fixes #4256) (Ian VanSchooten) +* Upgrade: Upgrade various dependencies (fixes #4303) (Gyandeep Singh) +* Build: Add node 5 to travis build (fixes #4310) (Gyandeep Singh) +* Fix: ensure using correct estraverse (fixes #3951) (Toru Nagashima) +* Docs: update docs about using gitignore (Mateusz Derks) +* Update: Detect and fix wrong linebreaks (fixes #3981) (alberto) +* New: Add no-case-declarations rule (fixes #4278) (Erik Arvidsson) + +v1.8.0 - October 30, 2015 + +* Fix: Check for node property before testing type (fixes #4298) (Ian VanSchooten) +* Docs: Specify 'double' as default for quotes (fixes #4270) (Ian VanSchooten) +* Fix: Missing errors in space-in-parens (fixes #4257, fixes #3996) (alberto) +* Docs: fixed typo (Mathieu M-Gosselin) +* Fix: `cacheLocation` handles paths in windows style. (fixes #4285) (royriojas) +* Docs: fixed typo (mpal9000) +* Update: Add support for class in `valid-jsdoc` rule (fixes #4279) (Gyandeep Singh) +* Update: cache-file accepts a directory. (fixes #4241) (royriojas) +* Update: Add `maxEOF` to no-multiple-empty-lines (fixes #4235) (Adrien Vergé) +* Update: fix option for comma-spacing (fixes #4232) (HIPP Edgar (PRESTA EXT)) +* Docs: Fix use of wrong word in configuration doc (Jérémie Astori) +* Fix: Prepare config before verifying SourceCode (fixes #4230) (Ian VanSchooten) +* Update: RuleTester come to check AST was not modified (fixes #4156) (Toru Nagashima) +* Fix: wrong count for 'no-multiple-empty-lines' on last line (fixes #4228) (alberto) +* Update: Add `allow` option to `no-shadow` rule (fixes #3035) (Gyandeep Singh) +* Doc: Correct the spelling of Alberto's surname (alberto) +* Docs: Add alberto as a committer (Gyandeep Singh) +* Build: Do not stub console in testing (fixes #1328) (Gyandeep Singh) +* Fix: Check node exists before checking type (fixes #4231) (Ian VanSchooten) +* Update: Option to exclude afterthoughts from no-plusplus (fixes #4093) (Brody McKee) +* New: Add rule no-arrow-condition (fixes #3280) (Luke Karrys) +* Update: Add linebreak style option to eol-last (fixes #4148) (alberto) +* New: arrow-body-style rule (fixes #4109) (alberto) + +v1.7.3 - October 21, 2015 + +* Fix: Support comma-first style in key-spacing (fixes #3877) (Brandon Mills) +* Fix: no-magic-numbers: variable declarations (fixes #4192) (Ilya Panasenko) +* Fix: Support ES6 shorthand in key-spacing (fixes #3678) (Brandon Mills) +* Fix: `indent` array with memberExpression (fixes #4203) (Gyandeep Singh) +* Fix: `indent` param function on sameline (fixes #4174) (Gyandeep Singh) +* Fix: no-multiple-empty-lines fails when empty line at EOF (fixes #4214) (alberto) +* Fix: `comma-dangle` false positive (fixes #4200) (Nicholas C. Zakas) +* Fix: `valid-jsdoc` prefer problem (fixes #4205) (Nicholas C. Zakas) +* Docs: Add missing single-quote (Kevin Lamping) +* Fix: correct no-multiple-empty-lines at EOF (fixes #4140) (alberto) + +v1.7.2 - October 19, 2015 + +* Fix: comma-dangle confused by parens (fixes #4195) (Nicholas C. Zakas) +* Fix: no-mixed-spaces-and-tabs (fixes #4189, fixes #4190) (alberto) +* Fix: no-extend-native disallow using Object.properties (fixes #4180) (Nathan Woltman) +* Fix: no-magic-numbers should ignore Number.parseInt (fixes #4167) (Henry Zhu) + +v1.7.1 - October 16, 2015 + +* Fix: id-match schema (fixes #4155) (Nicholas C. Zakas) +* Fix: no-magic-numbers should ignore parseInt (fixes #4167) (Nicholas C. Zakas) +* Fix: `indent` param function fix (fixes #4165, fixes #4164) (Gyandeep Singh) + +v1.7.0 - October 16, 2015 + +* Fix: array-bracket-spacing for empty array (fixes #4141) (alberto) +* Fix: `indent` arrow function check fix (fixes #4142) (Gyandeep Singh) +* Update: Support .js files for config (fixes #3102) (Gyandeep Singh) +* Fix: Make eslint-config-eslint work (fixes #4145) (Nicholas C. Zakas) +* Fix: `prefer-arrow-callback` had been wrong at arguments (fixes #4095) (Toru Nagashima) +* Docs: Update various rules docs (Nicholas C. Zakas) +* New: Create eslint-config-eslint (fixes #3525) (Nicholas C. Zakas) +* Update: RuleTester allows string errors in invalid cases (fixes #4117) (Kevin Partington) +* Docs: Reference no-unexpected-multiline in semi (fixes #4114) (alberto) +* Update: added exceptions to `lines-around-comment` rule. (fixes #2965) (Mathieu M-Gosselin) +* Update: Add `matchDescription` option to `valid-jsdoc` (fixes #2449) (Gyandeep Singh) +* Fix: check for objects or arrays in array-bracket-spacing (fixes #4083) (alberto) +* Docs: Alphabetize Rules lists (Kenneth Chung) +* Fix: message templates fail when no parameters are passed (fixes #4080) (Ilya Volodin) +* Fix: `indent` multi-line function call (fixes #4073, fixes #4075) (Gyandeep Singh) +* Docs: Improve comma-dangle documentation (Gilad Peleg) +* Fix: no-mixed-tabs-and-spaces fails with some comments (fixes #4086) (alberto) +* Fix: `semi` to check for do-while loops (fixes #4090) (Gyandeep Singh) +* Build: Fix path related failures on Windows in tests (fixes #4061) (Burak Yigit Kaya) +* Fix: `no-unused-vars` had been missing some parameters (fixes #4047) (Toru Nagashima) +* Fix: no-mixed-spaces-and-tabs with comments and templates (fixes #4077) (alberto) +* Update: Add `allow` option for `no-underscore-dangle` rule (fixes #2135) (Gyandeep Singh) +* Update: `allowArrowFunctions` option for `func-style` rule (fixes #1897) (Gyandeep Singh) +* Fix: Ignore template literals in no-mixed-tabs-and-spaces (fixes #4054) (Nicholas C. Zakas) +* Build: Enable CodeClimate (fixes #4068) (Nicholas C. Zakas) +* Fix: `no-cond-assign` had needed double parens in `for` (fixes #4023) (Toru Nagashima) +* Update: Ignore end of function in newline-after-var (fixes #3682) (alberto) +* Build: Performance perf to not ignore jshint file (refs #3765) (Gyandeep Singh) +* Fix: id-match bug incorrectly errors on `NewExpression` (fixes #4042) (Burak Yigit Kaya) +* Fix: `no-trailing-spaces` autofix to handle linebreaks (fixes #4050) (Gyandeep Singh) +* Fix: renamed no-magic-number to no-magic-numbers (fixes #4053) (Vincent Lemeunier) +* New: add "consistent" option to the "curly" rule (fixes #2390) (Benoît Zugmeyer) +* Update: Option to ignore for loops in init-declarations (fixes #3641) (alberto) +* Update: Add webextensions environment (fixes #4051) (Blake Winton) +* Fix: no-cond-assign should report assignment location (fixes #4040) (alberto) +* New: no-empty-pattern rule (fixes #3668) (alberto) +* Upgrade: Upgrade globals to 8.11.0 (fixes #3599) (Burak Yigit Kaya) +* Docs: Re-tag JSX code fences (fixes #4020) (Brandon Mills) +* New: no-magic-number rule (fixes #4027) (Vincent Lemeunier) +* Docs: Remove list of users from README (fixes #3881) (Brandon Mills) +* Fix: `no-redeclare` and `no-sahadow` for builtin globals (fixes #3971) (Toru Nagashima) +* Build: Add `.eslintignore` file for the project (fixes #3765) (Gyandeep Singh) + +v1.6.0 - October 2, 2015 + +* Fix: cache is basically not working (fixes #4008) (Richard Hansen) +* Fix: a test failure on Windows (fixes #3968) (Toru Nagashima) +* Fix: `no-invalid-this` had been missing globals in node (fixes #3961) (Toru Nagashima) +* Fix: `curly` with `multi` had false positive (fixes #3856) (Toru Nagashima) +* Build: Add load performance check inside perf function (fixes #3994) (Gyandeep Singh) +* Fix: space-before-keywords fails with super keyword (fixes #3946) (alberto) +* Fix: CLI should not fail on account of ignored files (fixes #3978) (Dominic Barnes) +* Fix: brace-style rule incorrectly flagging switch (fixes #4002) (Aparajita Fishman) +* Update: Implement auto fix for space-unary-ops rule (fixes #3976) (alberto) +* Update: Implement auto fix for computed-property-spacing (fixes #3975) (alberto) +* Update: Implement auto fix for no-multi-spaces rule (fixes #3979) (alberto) +* Fix: Report shorthand method names in complexity rule (fixes #3955) (Tijn Kersjes) +* Docs: Add note about typeof check for isNaN (fixes #3985) (Daniel Lo Nigro) +* Update: ESLint reports parsing errors with clear prefix. (fixes #3555) (Kevin Partington) +* Build: Update markdownlint dependency (fixes #3954) (David Anson) +* Update: `no-mixed-require` to have non boolean option (fixes #3922) (Gyandeep Singh) +* Fix: trailing spaces auto fix to check for line breaks (fixes #3940) (Gyandeep Singh) +* Update: Add `typeof` option to `no-undef` rule (fixes #3684) (Gyandeep Singh) +* Docs: Fix explanation and typos for accessor-pairs (alberto) +* Docs: Fix typos for camelcase (alberto) +* Docs: Fix typos for max-statements (Danny Guo) +* Update: Implement auto fix for object-curly-spacing (fixes #3857) (alberto) +* Update: Implement auto fix for array-bracket-spacing rule (fixes #3858) (alberto) +* Fix: Add schema to `global-require` rule (fixes #3923) (Gyandeep Singh) +* Update: Apply lazy loading for rules (fixes #3930) (Gyandeep Singh) +* Docs: Fix typo for arrow-spacing (Danny Guo) +* Docs: Fix typos for wrap-regex (Danny Guo) +* Docs: Fix explanation for space-before-keywords (Danny Guo) +* Docs: Fix typos for operator-linebreak (Danny Guo) +* Docs: Fix typos for callback-return (Danny Guo) +* Fix: no-trailing-spaces autofix to account for blank lines (fixes #3912) (Gyandeep Singh) +* Docs: Fix example in no-negated-condition.md (fixes #3908) (alberto) +* Update:warn message use @return when prefer.returns=return (fixes #3889) (闲耘™) +* Update: Implement auto fix for generator-star-spacing rule (fixes #3873) (alberto) +* Update: Implement auto fix for arrow-spacing rule (fixes #3860) (alberto) +* Update: Implement auto fix for block-spacing rule (fixes #3859) (alberto) +* Fix: Support allman style for switch statement (fixes #3903) (Gyandeep Singh) +* New: no-negated-condition rule (fixes #3740) (alberto) +* Docs: Fix typo in blog post template (Nicholas C. Zakas) +* Update: Add env 'nashorn' to support Java 8 Nashorn Engine (fixes #3874) (Benjamin Winterberg) +* Docs: Prepare for rule doc linting (refs #2271) (Ian VanSchooten) + +v1.5.1 - September 22, 2015 + +* Fix: valid-jsdoc fix for param with properties (fixes #3476) (Gyandeep Singh) +* Fix: valid-jsdoc error with square braces (fixes #2270) (Gyandeep Singh) +* Upgrade: `doctrine` to 0.7.0 (fixes #3891) (Gyandeep Singh) +* Fix: `space-before-keywords` had been wrong on getters (fixes #3854) (Toru Nagashima) +* Fix: `no-dupe-args` had been wrong for nested destructure (fixes #3867) (Toru Nagashima) +* Docs: io.js is the new Node.js (thefourtheye) +* Docs: Fix method signature on working-with-rules docs (fixes #3862) (alberto) +* Docs: Add related ternary links (refs #3835) (Ian VanSchooten) +* Fix: don’t ignore config if cwd is the home dir (fixes #3846) (Mathias Schreck) +* Fix: `func-style` had been warning arrows with `this` (fixes #3819) (Toru Nagashima) +* Fix: `space-before-keywords`; allow opening curly braces (fixes #3789) (Marko Raatikka) +* Build: Fix broken .gitattributes generation (fixes #3566) (Nicholas C. Zakas) +* Build: Fix formatter docs generation (fixes #3847) (Nicholas C. Zakas) + +v1.5.0 - September 18, 2015 + +* Fix: invalidate cache when config changes. (fixes #3770) (royriojas) +* Fix: function body indent issues (fixes #3614, fixes #3799) (Gyandeep Singh) +* Update: Add configuration option to `space-before-blocks` (fixes #3758) (Phil Vargas) +* Fix: space checking between tokens (fixes #2211) (Nicholas C. Zakas) +* Fix: env-specified ecmaFeatures had been wrong (fixes #3735) (Toru Nagashima) +* Docs: Change example wording from warnings to problems (fixes #3676) (Ian VanSchooten) +* Build: Generate formatter example docs (fixes #3560) (Ian VanSchooten) +* New: Add --debug flag to CLI (fixes #2692) (Nicholas C. Zakas) +* Docs: Update no-undef-init docs (fixes #3170) (Nicholas C. Zakas) +* Docs: Update no-unused-expressions docs (fixes #3685) (Nicholas C. Zakas) +* Docs: Clarify node types in no-multi-spaces (fixes #3781) (Nicholas C. Zakas) +* Docs: Update new-cap docs (fixes #3798) (Nicholas C. Zakas) +* Fix: `space-before-blocks` had conflicted `arrow-spacing` (fixes #3769) (Toru Nagashima) +* Fix: `comma-dangle` had not been checking imports/exports (fixes #3794) (Toru Nagashima) +* Fix: tests fail due to differences in temporary paths. (fixes #3778) (royriojas) +* Fix: Directory ignoring should work (fixes #3812) (Nicholas C. Zakas) +* Fix: Ensure **/node_modules works in ignore files (fixes #3788) (Nicholas C. Zakas) +* Update: Implement auto fix for `space-infix-ops` rule (fixes #3801) (Gyandeep Singh) +* Fix: `no-warning-comments` can't be set via config comment (fixes #3619) (Burak Yigit Kaya) +* Update: `key-spacing` should allow 1+ around colon (fixes #3363) (Burak Yigit Kaya) +* Fix: false alarm of semi-spacing with semi set to never (fixes #1983) (Chen Yicai) +* Fix: Ensure ./ works correctly with CLI (fixes #3792) (Nicholas C. Zakas) +* Docs: add more examples + tests for block-scoped-var (fixes #3791) (JT) +* Update: Implement auto fix for `indent` rule (fixes #3734) (Gyandeep Singh) +* Fix: `space-before-keywords` fails to handle some cases (fixes #3756) (Marko Raatikka) +* Docs: Add if-else example (fixes #3722) (Ian VanSchooten) +* Fix: jsx-quotes exception for attributes without value (fixes #3793) (Mathias Schreck) +* Docs: Fix closing code fence on cli docs (Ian VanSchooten) +* Update: Implement auto fix for `space-before-blocks` rule (fixes #3776) (Gyandeep Singh) +* Update: Implement auto fix for `space-after-keywords` rule (fixes #3773) (Gyandeep Singh) +* Fix: `semi-spacing` had conflicted with `block-spacing` (fixes #3721) (Toru Nagashima) +* Update: Implement auto fix for `space-before-keywords` rule (fixes #3771) (Gyandeep Singh) +* Update: auto fix for space-before-function-paren rule (fixes #3766) (alberto) +* Update: Implement auto fix for `no-extra-semi` rule (fixes #3745) (Gyandeep Singh) +* Update: Refactors the traversing logic (refs #3530) (Toru Nagashima) +* Update: Implement auto fix for `space-return-throw-case` (fixes #3732) (Gyandeep Singh) +* Update: Implement auto fix for `no-spaced-func` rule (fixes #3728) (Gyandeep Singh) +* Update: Implement auto fix for `eol-last` rule (fixes #3725) (Gyandeep Singh) +* Update: Implement auto fix for `no-trailing-spaces` rule (fixes #3723) (Gyandeep Singh) + +v1.4.3 - September 15, 2015 + +* Fix: Directory ignoring should work (fixes #3812) (Nicholas C. Zakas) +* Fix: jsx-quotes exception for attributes without value (fixes #3793) (Mathias Schreck) + +v1.4.2 - September 15, 2015 + +* Fix: Ensure **/node_modules works in ignore files (fixes #3788) (Nicholas C. Zakas) +* Fix: Ensure ./ works correctly with CLI (fixes #3792) (Nicholas C. Zakas) + +v1.4.1 - September 11, 2015 + +* Fix: CLIEngine default cache parameter name (fixes #3755) (Daniel G. Taylor) +* Fix: Glob pattern from .eslintignore not applied (fixes #3750) (Burak Yigit Kaya) +* Fix: Skip JSDoc from NewExpression (fixes #3744) (Nicholas C. Zakas) +* Docs: Shorten and simplify autocomment for new issues (Nicholas C. Zakas) + +v1.4.0 - September 11, 2015 + +* Docs: Add new formatters to API docs (Ian VanSchooten) +* New: Implement autofixing (fixes #3134) (Nicholas C. Zakas) +* Fix: Remove temporary `"allow-null"` (fixes #3705) (Toru Nagashima) +* Fix: `no-unused-vars` had been crashed at `/*global $foo*/` (fixes #3714) (Toru Nagashima) +* Build: check-commit now checks commit message length. (fixes #3706) (Kevin Partington) +* Fix: make getScope acquire innermost scope (fixes #3700) (voideanvalue) +* Docs: Fix spelling mistake (domharrington) +* Fix: Allow whitespace in rule message parameters. (fixes #3690) (Kevin Partington) +* Fix: Eqeqeq rule with no option does not warn on 'a == null' (fixes #3699) (fediev) +* Fix: `no-unused-expressions` with `allowShortCircuit` false positive if left has no effect (fixes #3675) (Toru Nagashima) +* Update: Add Node 4 to travis builds (fixes #3697) (Ian VanSchooten) +* Fix: Not check for punctuator if on same line as last var (fixes #3694) (Gyandeep Singh) +* Docs: Make `quotes` docs clearer (fixes #3646) (Nicholas C. Zakas) +* Build: Increase mocha timeout (fixes #3692) (Nicholas C. Zakas) +* Fix: `no-extra-bind` to flag all arrow funcs (fixes #3672) (Nicholas C. Zakas) +* Docs: Update README with release and sponsor info (Nicholas C. Zakas) +* Fix: `object-curly-spacing` had been crashing on an empty object pattern (fixes #3658) (Toru Nagashima) +* Fix: `no-extra-parens` false positive at IIFE with member accessing (fixes #3653) (Toru Nagashima) +* Fix: `comma-dangle` with `"always"`/`"always-multiline"` false positive after a rest element (fixes #3627) (Toru Nagashima) +* New: `jsx-quotes` rule (fixes #2011) (Mathias Schreck) +* Docs: Add linting for second half of rule docs (refs #2271) (Ian VanSchooten) +* Fix: `no-unused-vars` had not shown correct locations for `/*global` (fixes #3617) (Toru Nagashima) +* Fix: `space-after-keywords` not working for `catch` (fixes #3654) (Burak Yigit Kaya) +* Fix: Incorrectly warning about ignored files (fixes #3649) (Burak Yigit Kaya) +* Fix: Indent rule VariableDeclarator doesn't apply to arrow functions (fixes #3661) (Burak Yigit Kaya) +* Upgrade: Consuming handlebars@^4.0.0 (fixes #3632) (Kevin Partington) +* Docs: Fixing typos in plugin processor section. (fixes #3648) (Kevin Partington) +* Fix: Invalid env keys would cause an unhandled exception.(fixes #3265) (Ray Booysen) +* Docs: Fixing broken link in documentation (Ilya Volodin) +* Update: Check for default assignment in no-unneeded-ternary (fixes #3232) (cjihrig) +* Fix: `consistent-as-needed` mode with `keyword: true` (fixes #3636) (Alex Guerrero) +* New: Implement cache in order to only operate on changed files since previous run. (fixes #2998) (Roy Riojas) +* Update: Grouping related CLI options. (fixes #3612) (Kevin Partington) +* Update: Using @override does not require @param or @returns (fixes #3629) (Whitney Young) +* Docs: Use eslint-env in no-undef (fixes #3616) (Ian VanSchooten) +* New: `require-jsdoc` rule (fixes #1842) (Gyandeep Singh) +* New: Support glob path on command line (fixes #3402) (Burak Yigit Kaya) +* Update: Short circuit and ternary support in no-unused-expressions (fixes #2733) (David Warkentin) +* Docs: Replace to npmjs.com (Ryuichi Okumura) +* Fix: `indent` should only indent chain calls if the first call is single line (fixes #3591) (Burak Yigit Kaya) +* Fix: `quote-props` should not crash for object rest spread syntax (fixes #3595) (Joakim Carlstein) +* Update: Use `globals` module for the `commonjs` globals (fixes #3606) (Sindre Sorhus) +* New: `no-restricted-syntax` rule to forbid certain syntax (fixes #2422) (Burak Yigit Kaya) +* Fix: `no-useless-concat` false positive at numbers (fixes #3575, fixes #3589) (Toru Nagashima) +* New: Add --max-warnings flag to CLI (fixes #2769) (Kevin Partington) +* New: Add `parser` as an option (fixes #3127) (Gyandeep Singh) +* New: `space-before-keywords` rule (fixes #1631) (Marko Raatikka) +* Update: Allowing inline comments to disable eslint rules (fixes #3472) (Whitney Young) +* Docs: Including for(;;) as valid case in no-constant-condition (Kevin Partington) +* Update: Add quotes around the label in `no-redeclare` error messages (fixes #3583) (Ian VanSchooten) +* Docs: correct contributing URL (Dieter Luypaert) +* Fix: line number for duplicate object keys error (fixes #3573) (Elliot Lynde) +* New: global-require rule (fixes #2318) (Jamund Ferguson) + +v1.3.1 - August 29, 2015 + +* Fix: `indent` to not crash on empty files (fixes #3570) (Gyandeep Singh) +* Fix: Remove unused config file (fixes #2227) (Gyandeep Singh) + +v1.3.0 - August 28, 2015 + +* Build: Autogenerate release blog post (fixes #3562) (Nicholas C. Zakas) +* New: `no-useless-concat` rule (fixes #3506) (Henry Zhu) +* Update: Add `keywords` flag to `consistent-as-needed` mode in `quote-props` (fixes #3532) (Burak Yigit Kaya) +* Update: adds `numbers` option to quote-props (fixes #2914) (Jose Roberto Vidal) +* Fix: `quote-props` rule should ignore computed and shorthand properties (fixes #3557) (fixes #3544) (Burak Yigit Kaya) +* Docs: Add config comments for rule examples 'accessor-pairs' to 'no-extra-semi' (refs #2271) (Ian VanSchooten) +* Update: Return to accept `undefined` type (fixes #3382) (Gyandeep Singh) +* New: Added HTML formatter (fixes #3505) (Julian Laval) +* Fix: check space after yield keyword in space-unary-ops (fixes #2707) (Mathias Schreck) +* Docs: (curly) Fix broken code in example (Kent C. Dodds) +* Update: Quote var name in `no-unused-vars` error messages (refs #3526) (Burak Yigit Kaya) +* Update: Move methods to SourceCode (fixes #3516) (Nicholas C. Zakas) +* Fix: Don't try too hard to find fault in `no-implicit-coercion` (refs #3402) (Burak Yigit Kaya) +* Fix: Detect ternary operator in operator-linebreak rule (fixes #3274) (Burak Yigit Kaya) +* Docs: Clearer plugin rule configuration (fixes #2022) (Nicholas C. Zakas) +* Update: Add quotes around the label in `no-empty-label` error reports (fixes #3526) (Burak Yigit Kaya) +* Docs: Turn off Liquid in example (Nicholas C. Zakas) +* Docs: Mention CommonJS along with Node.js (fixes #3388) (Nicholas C. Zakas) +* Docs: Make it clear which rules are recommended (fixes #3398) (Nicholas C. Zakas) +* Docs: Add links to JSON Schema resources (fixes #3411) (Nicholas C. Zakas) +* Docs: Add more info to migration guide (fixes #3439) (Nicholas C. Zakas) +* Fix: ASI indentation issue (fixes #3514) (Burak Yigit Kaya) +* Fix: Make `no-implicit-coercion` smarter about numerical expressions (fixes #3510) (Burak Yigit Kaya) +* Fix: `prefer-template` had not been handling TemplateLiteral as literal node (fixes #3507) (Toru Nagashima) +* Update: `newline-after-var` Allow comment + blank after var (fixes #2852) (Ian VanSchooten) +* Update: Add `unnecessary` option to `quote-props` (fixes #3381) (Burak Yigit Kaya) +* Fix: `indent` shouldn't check the last line unless it is a punctuator (fixes #3498) (Burak Yigit Kaya) +* Fix: `indent` rule does not indent when doing multi-line chain calls (fixes #3279) (Burak Yigit Kaya) +* Fix: sort-vars rule fails when memo is undefined (fixes #3474) (Burak Yigit Kaya) +* Fix: `brace-style` doesn't report some closing brace errors (fixes #3486) (Burak Yigit Kaya) +* Update: separate options for block and line comments in `spaced-comment` rule (fixes #2897) (Burak Yigit Kaya) +* Fix: `indent` does not check FunctionDeclaration nodes properly (fixes #3173) (Burak Yigit Kaya) +* Update: Added "properties" option to `id-length` rule to ignore property names. (fixes #3450) (Mathieu M-Gosselin) +* Update: add new ignore pattern options to no-unused-vars (fixes #2321) (Mathias Schreck) +* New: Protractor environment (fixes #3457) (James Whitney) +* Docs: Added section to shareable config (Gregory Waxman) +* Update: Allow pre-parsed code (fixes #1025, fixes #948) (Nicholas C. Zakas) + +v1.2.1 - August 20, 2015 + +* Fix: "key-spacing" crashes eslint on object literal shorthand properties (fixes #3463) (Burak Yigit Kaya) +* Fix: ignore leading space check for `null` elements in comma-spacing (fixes #3392) (Mathias Schreck) +* Fix: `prefer-arrow-callback` false positive at recursive functions (fixes #3454) (Toru Nagashima) +* Fix: one-var rule doesn’t have default options (fixes #3449) (Burak Yigit Kaya) +* Fix: Refactor `no-duplicate-case` to be simpler and more efficient (fixes #3440) (Burak Yigit Kaya) +* Docs: Fix trailing spaces in README (Nicholas C. Zakas) +* Docs: Update gyandeeps and add byk (Nicholas C. Zakas) +* Docs: Update plugins documentation for 1.0.0 (Nicholas C. Zakas) +* Docs: `object-curly-spacing` doc is inaccurate about exceptions (Burak Yigit Kaya) +* Fix: `object-curly-spacing` shows the incorrect column for opening brace (fixes #3438) (Burak Yigit Kaya) + +v1.2.0 - August 18, 2015 + +* Update: add support for semicolon in comma-first setup in indent rule (fixes #3423) (Burak Yigit Kaya) +* Docs: better JSDoc for indent rule (Burak Yigit Kaya) +* Docs: Document the second argument of `CLIEngine.executeOnText()` (Sindre Sorhus) +* New: `no-dupe-class-members` rule (fixes #3294) (Toru Nagashima) +* Fix: exclude `AssignmentExpression` and `Property` nodes from extra indentation on first line (fixes #3391) (Burak Yigit Kaya) +* Update: Separate indent options for var, let and const (fixes #3339) (Burak Yigit Kaya) +* Fix: Add AssignmentPattern to space-infix-ops (fixes #3380) (Burak Yigit Kaya) +* Docs: Fix typo: exception label (tienslebien) +* Update: Clean up tests for CLI config support (refs #2543) (Gyandeep Singh) +* New: `block-spacing` rule (fixes #3303) (Toru Nagashima) +* Docs: Update docs for no-iterator (fixes #3405) (Nicholas C. Zakas) +* Upgrade: bump `espree` dependency to `2.2.4` (fixes #3403) (Burak Yigit Kaya) +* Fix: false positive on switch 'no duplicate case', (fixes #3408) (Cristian Carlesso) +* Fix: `valid-jsdoc` test does not recognize aliases for `@param` (fixes #3399) (Burak Yigit Kaya) +* New: enable `-c` flag to accept a shareable config (fixes #2543) (Shinnosuke Watanabe) +* Fix: Apply plugin given in CLI (fixes #3383) (Ian VanSchooten) +* New: Add commonjs environment (fixes #3377) (Nicholas C. Zakas) +* Docs: Update no-unused-var docs (Nicholas C. Zakas) +* Fix: trailing commas in object-curly-spacing for import/export (fixes #3324) (Henry Zhu) +* Update: Make `baseConfig` to behave as other config options (fixes #3371) (Gyandeep Singh) +* Docs: Add "Compatibility" section to linebreak-style (Vitor Balocco) +* New: `prefer-arrow-callback` rule (fixes #3140) (Toru Nagashima) +* Docs: Clarify what an unused var is (fixes #2342) (Nicholas C. Zakas) +* Docs: Mention double-byte character limitation in max-len (fixes #2370) (Nicholas C. Zakas) +* Fix: object curly spacing incorrectly warning for import with default and multiple named specifiers (fixes #3370) (Luke Karrys) +* Fix: Indent rule errors with array of objects (fixes #3329) (Burak Yigit Kaya) +* Update: Make it clear that `space-infix-ops` support `const` (fixes #3299) (Burak Yigit Kaya) +* New: `prefer-template` rule (fixes #3014) (Toru Nagashima) +* Docs: Clarify `no-process-env` docs (fixes #3318) (Nicholas C. Zakas) +* Docs: Fix arrow name typo (fixes #3309) (Nicholas C. Zakas) +* Update: Improve error message for `indent` rule violation (fixes #3340) (Burak Yigit Kaya) +* Fix: radix rule does not apply for Number.parseInt (ES6) (fixes #3364) (Burak Yigit Kaya) +* Fix: `key-spacing.align` doesn't pay attention to non-whitespace before key (fixes #3267) (Burak Yigit Kaya) +* Fix: arrow-parens & destructuring/default params (fixes #3353) (Jamund Ferguson) +* Update: Add support for Allman to brace-style rule, brackets on newline (fixes #3347) (Burak Yigit Kaya) +* Fix: Regression no-catch-shadow (1.1.0) (fixes #3322) (Burak Yigit Kaya) +* Docs: remove note outdated in 1.0.0 (Denis Sokolov) +* Build: automatically convert line endings in release script (fixes #2642) (Burak Yigit Kaya) +* Update: allow disabling new-cap on object methods (fixes #3172) (Burak Yigit Kaya) +* Update: Improve checkstyle format (fixes #3183) (Burak Yigit Kaya) +* Fix: Indent rule errors if an array literal starts a new statement (fixes #3328) (Burak Yigit Kaya) +* Update: Improve validation error messages (fixes #3193) (Burak Yigit Kaya) +* Docs: fix syntax error in space-before-function-paren (Fabrício Matté) +* Fix: `indent` rule to check for last line correctly (fixes #3327) (Gyandeep Singh) +* Fix: Inconsistent off-by-one errors with column numbers (fixes #3231) (Burak Yigit Kaya) +* Fix: Keyword "else" must not be followed by a newline (fixes #3226) (Burak Yigit Kaya) +* Fix: `id-length` does not work for most of the new ES6 patterns (fixes #3286) (Burak Yigit Kaya) +* Fix: Spaced Comment Exceptions Not Working (fixes #3276) (Jamund Ferguson) + +v1.1.0 - August 7, 2015 + +* Update: Added as-needed option to arrow-parens (fixes #3277) (Jamund Ferguson) +* Fix: curly-spacing missing import case (fixes #3302) (Jamund Ferguson) +* Fix: `eslint-env` in comments had not been setting `ecmaFeatures` (fixes #2134) (Toru Nagashima) +* Fix: `es6` env had been missing `spread` and `newTarget` (fixes #3281) (Toru Nagashima) +* Fix: Report no-spaced-func on last token before paren (fixes #3289) (Benjamin Woodruff) +* Fix: Check for null elements in indent rule (fixes #3272) (Gyandeep Singh) +* Docs: Use backticks for option heading (Gyandeep Singh) +* Fix: `no-invalid-this` had been missing jsdoc comment (fixes #3287) (Toru Nagashima) +* Fix: `indent` rule for multi-line objects and arrays (fixes #3236) (Gyandeep Singh) +* Update: add new `multi-or-nest` option for the `curly` rule (fixes #1806) (Ivan Nikulin) +* Fix: `no-cond-assign` had been missing simplest pattern (fixes #3249) (Toru Nagashima) +* Fix: id-length rule doesn't catch violations in arrow function parameters (fixes #3275) (Burak Yigit Kaya) +* New: Added grep-style formatter (fixes #2991) (Nobody Really) +* Update: Split out generic AST methods into utility (fixes #962) (Gyandeep Singh) +* Fix: `accessor-pairs` false positive (fixes #3262) (Toru Nagashima) +* Fix: `context.getScope()` returns correct scope in blockBindings (fixes #3254) (Toru Nagashima) +* Update: Expose `getErrorResults` as a static method on `CLIEngine` (fixes #3242) (Gyandeep Singh) +* Update: Expose `getFormatter` as a static method on `CLIEngine` (fixes #3239) (Gyandeep Singh) +* Docs: use correct encoding for id-match.md (fixes #3246) (Matthieu Larcher) +* Docs: place id-match rule at correct place in README.md (fixes #3245) (Matthieu Larcher) +* Docs: Update no-proto.md (Joe Zimmerman) +* Docs: Fix typo in object-shorthand docs (Gunnar Lium) +* Upgrade: inquirer dependency (fixes #3241) (Gyandeep Singh) +* Fix: `indent` rule for objects and nested one line blocks (fixes #3238, fixes #3237) (Gyandeep Singh) +* Docs: Fix wrong options in examples of key-spacing (keik) +* Docs: Adds missing "not" to semi.md (Marius Schulz) +* Docs: Update no-multi-spaces.md (Kenneth Powers) +* Fix: `indent` to not error on same line nodes (fixes #3228) (Gyandeep Singh) +* New: Jest environment (fixes #3212) (Darshak Parikh) + +v1.0.0 - July 31, 2015 + +* Update: merge `no-reserved-keys` into `quote-props` (fixes #1539) (Jose Roberto Vidal) +* Fix: `indent` error message (fixes #3220) (Gyandeep Singh) +* Update: Add embertest env (fixes #3205) (ismay) +* Docs: Correct documentation errors for `id-length` rule. (Jess Telford) +* Breaking: `indent` rule to have node specific options (fixes #3210) (Gyandeep Singh) +* Fix: space-after-keyword shouldn't allow newlines (fixes #3198) (Brandon Mills) +* New: Add JSON formatter (fixes #3036) (Burak Yigit Kaya) +* Breaking: Switch to RuleTester (fixes #3186) (Nicholas C. Zakas) +* Breaking: remove duplicate warnings of `no-undef` from `block-scoped-var` (fixes #3201) (Toru Nagashima) +* Fix: `init-declarations` ignores in for-in/of (fixes #3202) (Toru Nagashima) +* Fix: `quotes` with `"backtick"` ignores ModuleSpecifier and LiteralPropertyName (fixes #3181) (Toru Nagashima) +* Fix: space-in-parens in Template Strings (fixes #3182) (Ian VanSchooten) +* Fix: Check for concatenation in no-throw-literal (fixes #3099, fixes #3101) (Ian VanSchooten) +* Build: Remove `eslint-tester` from devDependencies (fixes #3189) (Gyandeep Singh) +* Fix: Use new ESLintTester (fixes #3187) (Nicholas C. Zakas) +* Update: `new-cap` supports fullnames (fixes #2584) (Toru Nagashima) +* Fix: Non object rule options merge (fixes #3179) (Gyandeep Singh) +* New: add id-match rule (fixes #2829) (Matthieu Larcher) +* Fix: Rule options merge (fixes #3175) (Gyandeep Singh) +* Fix: `spaced-comment` allows a mix of markers and exceptions (fixes #2895) (Toru Nagashima) +* Fix: `block-scoped-var` issues (fixes #2253, fixes #2747, fixes #2967) (Toru Nagashima) +* New: Add id-length rule (fixes #2784) (Burak Yigit Kaya) +* Update: New parameters for quote-props rule (fixes #1283, fixes #1658) (Tomasz Olędzki) + +v1.0.0-rc-3 - July 24, 2015 + +* Fix: Make Chai and Mocha as a dependency (fixes #3156) (Gyandeep Singh) +* Fix: traverse `ExperimentalSpread/RestProperty.argument` (fixes #3157) (Toru Nagashima) +* Fix: Check shareable config package prefix correctly (fixes #3146) (Gyandeep Singh) +* Update: move redeclaration checking for builtins (fixes #3070) (Toru Nagashima) +* Fix: `quotes` with `"backtick"` allows directive prologues (fixes #3132) (Toru Nagashima) +* Fix: `ESLintTester` path in exposed API (fixes #3149) (Gyandeep Singh) +* Docs: Remove AppVeyor badge (Gyandeep Singh) +* Fix: Check no-new-func on CallExpressions (fixes #3145) (Benjamin Woodruff) + +v1.0.0-rc-2 - July 23, 2015 + +* Docs: Mention eslint-tester in migration guide (Nicholas C. Zakas) +* Docs: Mention variables defined in a global comment (fixes #3137) (William Becker) +* Docs: add documentation about custom-formatters. (fixes #1260) (royriojas) +* Fix: Multi-line variable declarations indent (fixes #3139) (Gyandeep Singh) +* Fix: handles blocks in no-use-before-define (fixes #2960) (Jose Roberto Vidal) +* Update: `props` option of `no-param-reassign` (fixes #1600) (Toru Nagashima) +* New: Support shared configs named `@scope/eslint-config`, with shortcuts of `@scope` and `@scope/` (fixes #3123) (Jordan Harband) +* New: Add ignorePattern, ignoreComments, and ignoreUrls options to max-len (fixes #2934, fixes #2221, fixes #1661) (Benjamin Woodruff) +* Build: Increase Windows Mocha timeout (fixes #3133) (Ian VanSchooten) +* Docs: incorrect syntax in the example for rule «one-var» (Alexander Burtsev) +* Build: Check commit message format at end of tests (fixes #3058) (Ian VanSchooten) +* Update: Move eslint-tester into repo (fixes #3110) (Nicholas C. Zakas) +* Fix: Not load configs outside config with `root: true` (fixes #3109) (Gyandeep Singh) +* Docs: Add config information to README (fixes #3074) (Nicholas C. Zakas) +* Docs: Add mysticatea as committer (Nicholas C. Zakas) +* Docs: Grammar fixes in rule descriptions (refs #3038) (Greg Cochard) +* Fix: Update sort-vars to ignore Array and ObjectPattern (fixes #2954) (Harry Ho) +* Fix: block-scoped-var rule incorrectly flagging break/continue with label (fixes #3082) (Aparajita Fishman) +* Fix: spaces trigger wrong in `no-useless-call` and `prefer-spread` (fixes #3054) (Toru Nagashima) +* Fix: `arrow-spacing` allow multi-spaces and line-endings (fixes #3079) (Toru Nagashima) +* Fix: add missing loop scopes to one-var (fixes #3073) (Jose Roberto Vidal) +* New: the `no-invalid-this` rule (fixes #2815) (Toru Nagashima) +* Fix: allow empty loop body in no-extra-semi (fixes #3075) (Mathias Schreck) +* Update: Add qunit to environments (fixes #2870) (Nicholas C. Zakas) +* Fix: `space-before-blocks` to consider classes (fixes #3062) (Gyandeep Singh) +* Fix: Include phantomjs globals (fixes #3064) (Linus Unnebäck) +* Fix: no-else-return handles multiple else-if blocks (fixes #3015) (Jose Roberto Vidal) +* Fix: `no-*-assgin` rules support destructuring (fixes #3029) (Toru Nagashima) +* New: the `no-implicit-coercion` rule (fixes #1621) (Toru Nagashima) +* Fix: Make no-implied-eval match more types of strings (fixes #2898) (Benjamin Woodruff) +* Docs: Clarify that bot message is automatic (Ian VanSchooten) +* Fix: Skip rest properties in no-dupe-keys (fixes 3042) (Nicholas C. Zakas) +* Docs: New issue template (fixes #3048) (Nicholas C. Zakas) +* Fix: strict rule supports classes (fixes #2977) (Toru Nagashima) +* New: the `prefer-reflect` rule (fixes #2939) (Keith Cirkel) +* Docs: make grammar consistent in rules index (Greg Cochard) +* Docs: Fix unmatched paren in rule description (Greg Cochard) +* Docs: Small typo fix in no-useless-call documentation (Paul O’Shannessy) +* Build: readd phantomjs dependency with locked down version (fixes #3026) (Mathias Schreck) +* Docs: Add IanVS as committer (Nicholas C. Zakas) +* docs: additional computed-property-spacing documentation (fixes #2941) (Jamund Ferguson) +* Docs: Add let and const examples for newline-after-var (fixes #3020) (James Whitney) +* Build: Remove unnecessary phantomjs devDependency (fixes #3021) (Gyandeep Singh) +* Update: added shared builtins list (fixes #2972) (Jose Roberto Vidal) + +v1.0.0-rc-1 - July 15, 2015 + +* Upgrade: Espree to 2.2.0 (fixes #3011) (Nicholas C. Zakas) +* Docs: fix a typo (bartmichu) +* Fix: indent rule should recognize single line statements with ASI (fixes #3001, fixes #3000) (Mathias Schreck) +* Update: Handle CRLF line endings in spaced-comment rule - 2 (fixes #3005) (Burak Yigit Kaya) +* Fix: Indent rule error on empty block body (fixes #2999) (Gyandeep Singh) +* New: the `no-class-assign` rule (fixes #2718) (Toru Nagashima) +* New: the `no-const-assign` rule (fixes #2719) (Toru Nagashima) +* Docs: Add 1.0.0 migration guide (fixes #2994) (Nicholas C. Zakas) +* Docs: Update changelog for 0.24.1 (fixes #2976) (Nicholas C. Zakas) +* Breaking: Remove deprecated rules (fixes #1898) (Ian VanSchooten) +* Fix: multi-line + fat arrow indent (fixes #2239) (Gyandeep Singh) +* Breaking: Create eslint:recommended and add to --init (fixes #2713) (Greg Cochard) +* Fix: Indent rule (fixes #1797, fixes #1799, fixes #2248, fixes #2343, fixes #2278, fixes #1800) (Gyandeep Singh) +* New: `context.getDeclaredVariables(node)` (fixes #2801) (Toru Nagashima) +* New: the `no-useless-call` rule (fixes #1925) (Toru Nagashima) +* New: the `prefer-spread` rule (fixes #2946) (Toru Nagashima) +* Fix: `valid-jsdoc` counts `return` for arrow expressions (fixes #2952) (Toru Nagashima) +* New: Add exported comment option (fixes #1200) (Jamund Ferguson) +* Breaking: Default to --reset behavior (fixes #2100) (Brandon Mills) +* New: Add arrow-parens and arrow-spacing rule (fixes #2628) (Jxck) +* Fix: Shallow cloning issues in eslint config (fixes #2961) (Gyandeep Singh) +* Add: Warn on missing rule definition or deprecation (fixes #1549) (Ian VanSchooten) +* Update: adding some tests for no-redeclare to test named functions (fixes #2953) (Dominic Barnes) +* New: Add support for root: true in config files (fixes #2736) (Ian VanSchooten) +* Fix: workaround for leading and trailing comments in padded-block (fixes #2336 and fixes #2788) (Mathias Schreck) +* Fix: object-shorthand computed props (fixes #2937) (Jamund Ferguson) +* Fix: Remove invalid check inside `getJSDocComment` function (fixes #2938) (Gyandeep Singh) +* Docs: Clarify when not to use space-before-blocks (Ian VanSchooten) +* Update: `no-loop-func` allows block-scoped variables (fixes #2517) (Toru Nagashima) +* Docs: remove mistaken "off by default" (Jan Schär) +* Build: Add appveyor CI system (fixes #2923) (Gyandeep Singh) +* Docs: Fix typo in the shareable configs doc (Siddharth Kannan) +* Fix: max-len to report correct column number (fixes #2926) (Mathias Schreck) +* Fix: add destructuring support to comma-dangle rule (fixes #2911) (Mathias Schreck) +* Docs: clarification in no-unused-vars (Jan Schär) +* Fix: `no-redeclare` checks module scopes (fixes #2903) (Toru Nagashima) +* Docs: missing quotes in JSON (Jan Schär) +* Breaking: Switch to 1-based columns (fixes #2284) (Nicholas C. Zakas) +* Docs: array-bracket-spacing examples used space-in-brackets (Brandon Mills) +* Docs: Add spaced-line-comment deprecation notice (Brandon Mills) +* Docs: Add space-in-brackets deprecation notice (Brandon Mills) +* Fix: Include execScript in no-implied-eval rule (fixes #2873) (Frederik Braun) +* Fix: Support class syntax for line-around-comment rule (fixes #2894) (Gyandeep Singh) +* Fix: lines-around-comment was crashing in some cases due to a missing check (fixes #2892) (Mathieu M-Gosselin) +* New: Add init-declarations rule (fixes #2606) (cjihrig) +* Docs: Fix typo in array-bracket-spacing rule (zallek) +* Fix: Added missing export syntax support to the block-scoped-var rule. (fixes #2887) (Mathieu M-Gosselin) +* Build: gensite target supports rule removal (refs #1898) (Brandon Mills) +* Update: Handle CRLF line endings in spaced-comment rule (fixes #2884) (David Anson) +* Update: Attach parent in getNodeByRangeIndex (fixes #2863) (Brandon Mills) +* Docs: Fix typo (Bryan Smith) +* New: Add serviceworker environment (fixes #2557) (Gyandeep Singh) +* Fix: Yoda should ignore comparisons where both sides are constants (fixes #2867) (cjihrig) +* Update: Loosens regex rules around intentional fall through comments (Fixes #2811) (greg5green) +* Update: Add missing schema to rules (fixes #2858) (Ilya Volodin) +* New: `require-yield` rule (fixes #2822) (Toru Nagashima) +* New: add callback-return rule (fixes #994) (Jamund Ferguson) + +v0.24.1 - July 10, 2015 + +* Docs: Clarify when not to use space-before-blocks (Ian VanSchooten) +* Docs: remove mistaken "off by default" (Jan Schär) +* Docs: remove mistaken "off by default" (Jan Schär) +* Docs: Fix typo in the shareable configs doc (Siddharth Kannan) +* Docs: clarification in no-unused-vars (Jan Schär) +* Docs: missing quotes in JSON (Jan Schär) +* Fix: Revert 1-based column changes in tests for patch (refs #2284) (Nicholas C. Zakas) +* Fix: Shallow cloning issues in eslint config (fixes #2961) (Gyandeep Singh) +* Fix: object-shorthand computed props (fixes #2937) (Jamund Ferguson) +* Fix: Remove invalid check inside `getJSDocComment` function (fixes #2938) (Gyandeep Singh) +* Fix: max-len to report correct column number (fixes #2926) (Mathias Schreck) +* Fix: add destructuring support to comma-dangle rule (fixes #2911) (Mathias Schreck) +* Fix: `no-redeclare` checks module scopes (fixes #2903) (Toru Nagashima) +* Fix: Include execScript in no-implied-eval rule (fixes #2873) (Frederik Braun) +* Fix: Support class syntax for line-around-comment rule (fixes #2894) (Gyandeep Singh) +* Fix: lines-around-comment was crashing in some cases due to a missing check (fixes #2892) (Mathieu M-Gosselin) +* Fix: Added missing export syntax support to the block-scoped-var rule. (fixes #2887) (Mathieu M-Gosselin) +* Fix: Yoda should ignore comparisons where both sides are constants (fixes #2867) (cjihrig) +* Docs: array-bracket-spacing examples used space-in-brackets (Brandon Mills) +* Docs: Add spaced-line-comment deprecation notice (Brandon Mills) +* Docs: Add space-in-brackets deprecation notice (Brandon Mills) + +v0.24.0 - June 26, 2015 + +* Upgrade: eslint-tester to 0.8.1 (Nicholas C. Zakas) +* Fix: no-dupe-args sparse array crash (fixes #2848) (Chris Walker) +* Fix: space-after-keywords should ignore extra parens (fixes #2847) (Mathias Schreck) +* New: add no-unexpected-multiline rule (fixes #746) (Glen Mailer) +* Update: refactor handle-callback-err to improve performance (fixes #2841) (Mathias Schreck) +* Fix: Add --init to the CLI options (fixes #2817) (Gyandeep Singh) +* Update: Add `except-parens` option to `no-return-assign` rule (fixes #2809) (Toru Nagashima) +* Fix: handle-callback-err missing arrow functions (fixes #2823) (Jamund Ferguson) +* Fix: `no-extra-semi` in class bodies (fixes #2794) (Toru Nagashima) +* Fix: Check type to be file when looking for config files (fixes #2790) (Gyandeep Singh) +* Fix: valid-jsdoc to work for object getters (fixes #2407) (Gyandeep Singh) +* Update: Add an option as an object to `generator-star-spacing` rule (fixes #2787) (Toru Nagashima) +* Build: Update markdownlint dependency (David Anson) +* Fix: context report message to handle more scenarios (fixes #2746) (Gyandeep Singh) +* Update: Ignore JsDoc comments by default for `spaced-comment` (fixes #2766) (Gyandeep Singh) +* Fix: one-var 'never' option for mixed initialization (Fixes #2786) (Ian VanSchooten) +* Docs: Fix a minor typo in a prefer-const example (jviide) +* Fix: comma-dangle always-multiline: no comma right before the last brace (fixes #2091) (Benoît Zugmeyer) +* Fix: Allow blocked comments with markers and new-line (fixes #2777) (Gyandeep Singh) +* Docs: small fix in quote-props examples (Jose Roberto Vidal) +* Fix: object-shorthand rule should not warn for NFEs (fixes #2748) (Michael Ficarra) +* Fix: arraysInObjects for object-curly-spacing (fixes #2752) (Jamund Ferguson) +* Docs: Clarify --rule description (fixes #2773) (Nicholas C. Zakas) +* Fix: object literals in arrow function bodies (fixes #2702) (Jose Roberto Vidal) +* New: `constructor-super` rule (fixes #2720) (Toru Nagashima) +* New: `no-this-before-super` rule (fixes #2721) (Toru Nagashima) +* Fix: space-unary-ops flags expressions starting w/ keyword (fixes #2764) (Michael Ficarra) +* Update: Add block options to `lines-around-comment` rule (fixes #2667) (Gyandeep Singh) +* New: array-bracket-spacing (fixes #2226) (Jamund Ferguson) +* Fix: No-shadow rule duplicating error messages (fixes #2706) (Aliaksei Shytkin) + +v0.23.0 - June 14, 2015 + +* Build: Comment out auto publishing of release notes (refs #2640) (Ilya Volodin) +* Fix: "extends" within package.json (fixes #2754) (Gyandeep Singh) +* Upgrade: globals@8.0.0 (fixes #2759) (silverwind) +* Docs: eol-last docs fix (fixes #2755) (Gyandeep Singh) +* Docs: btmills is a reviewer (Nicholas C. Zakas) +* Build: Revert lock io.js to v2.1.0 (refs #2745) (Brandon Mills) +* New: computed-property-spacing (refs #2226) (Jamund Ferguson) +* Build: Pin Sinon version (fixes #2742) (Ilya Volodin) +* Fix: `prefer-const` treats `for-in`/`for-of` with the same way (Fixes #2739) (Toru Nagashima) +* Docs: Add links to team members profile (Gyandeep Singh) +* Docs: add team and ES7 info to readme (Nicholas C. Zakas) +* Fix: don't try to strip "line:" prefix from parser errors with no such prefix (fixes #2698) (Tim Cuthbertson) +* Fix: never ignore config comment options (fixes #2725) (Brandon Mills) +* Update: Add clarification to spaced-comment (refs #2588) (Greg Cochard) +* Update: Add markers to spaced-comment (fixes #2588) (Greg Cochard) +* Fix: no-trailing-spaces now handles skipBlankLines (fixes #2575) (Greg Cochard) +* Docs: Mark global-strict on by default (fixes #2629) (Ilya Volodin) +* New: Allow extends to be an array (fixes #2699) (Justin Morris) +* New: globals@7.1.0 (fixes #2682) (silverwind) +* New: `prefer-const` rule (fixes #2333) (Toru Nagashima) +* Fix: remove hard-coded list of unary keywords in space-unary-ops rule (fixes #2696) (Tim Cuthbertson) +* Breaking: Automatically validate rule options (fixes #2595) (Brandon Mills) +* Update: no-lone-blocks does not report block-level scopes (fixes #2119) (Jose Roberto Vidal) +* Update: yoda onlyEquality option (fixes #2638) (Denis Sokolov) +* Docs: update comment to align with source code it's referencing (Michael Ficarra) +* Fix: Misconfigured default option for lines-around-comment rule (fixes #2677) (Gyandeep Singh) +* Fix: `no-shadow` allows shadowing in the TDZ (fixes #2568) (Toru Nagashima) +* New: spaced-comment rule (fixes #1088) (Gyandeep Singh) +* Fix: Check unused vars in exported functions (fixes #2678) (Gyandeep Singh) +* Build: Stringify payload of release notes (fixes #2640) (Greg Cochard) +* Fix: Allowing u flag in regex to properly lint no-empty-character-class (fixes #2679) (Dominic Barnes) +* Docs: deprecate no-wrap-func (fixes #2644) (Jose Roberto Vidal) +* Docs: Fixing grammar: then -> than (E) +* Fix: trailing commas in object-curly-spacing (fixes #2647) (Jamund Ferguson) +* Docs: be consistent about deprecation status (Matthew Dapena-Tretter) +* Docs: Fix mistakes in object-curly-spacing docs (Matthew Dapena-Tretter) +* New: run processors when calling executeOnText (fixes #2331) (Mordy Tikotzky) +* Update: move executeOnText() tests to the correct describe block (fixes #2648) (Mordy Tikotzky) +* Update: add tests to assert that the preprocessor is running (fixes #2651) (Mordy Tikotzky) +* Build: Lock io.js to v2.1.0 (fixes #2653) (Ilya Volodin) + +v0.22.1 - May 30, 2015 + +* Build: Remove release notes auto-publish (refs #2640) (Ilya Volodin) + +v0.22.0 - May 30, 2015 + +* Upgrade: escope 3.1.0 (fixes #2310, #2405) (Toru Nagashima) +* Fix: “consistent-this” incorrectly flagging destructuring of `this` (fixes #2633) (David Aurelio) +* Upgrade: eslint-tester to 0.7.0 (Ilya Volodin) +* Update: allow shadowed references in no-alert (fixes #1105) (Mathias Schreck) +* Fix: no-multiple-empty-lines and template strings (fixes #2605) (Jamund Ferguson) +* New: object-curly-spacing (fixes #2225) (Jamund Ferguson) +* Docs: minor fix for one-var rule (Jamund Ferguson) +* Fix: Shared config being clobbered by other config (fixes #2592) (Dominic Barnes) +* Update: adds "functions" option to no-extra-parens (fixes #2477) (Jose Roberto Vidal) +* Docs: Fix json formatting for lines-around-comments rule (Gyandeep Singh) +* Fix: Improve around function/class names of `no-shadow` (fixes #2556, #2552) (Toru Nagashima) +* Fix: Improve code coverage (fixes #2590) (Ilya Volodin) +* Fix: Allow scoped configs to have sub-configs (fixes #2594) (Greg Cochard) +* Build: Add auto-update of release tag on github (fixes #2566) (Greg Cochard) +* New: lines-around-comment (fixes #1344) (Jamund Ferguson) +* Build: Unblock build by increasing code coverage (Ilya Volodin) +* New: accessor-pairs rule to object initializations (fixes #1638) (Gyandeep Singh) +* Fix: counting of variables statements in one-var (fixes #2570) (Mathias Schreck) +* Build: Add sudo:false for Travis (fixes #2582) (Ilya Volodin) +* New: Add rule schemas (refs #2179) (Brandon Mills) +* Docs: Fix typo in shareable-configs example (fixes #2571) (Ted Piotrowski) +* Build: Relax markdownlint rules by disabling style-only items (David Anson) +* Fix: Object shorthand rule incorrectly flagging getters/setters (fixes #2563) (Brad Dougherty) +* New: Add config validator (refs #2179) (Brandon Mills) +* New: Add worker environment (fixes #2442) (Ilya Volodin) +* New no-empty-character class (fixes #2508) (Jamund Ferguson) +* New: Adds --ignore-pattern option. (fixes #1742) (Patrick McElhaney) + +v0.21.2 - May 18, 2015 + +* 0.21.2 (Nicholas C. Zakas) +* Fix: one-var exception for ForStatement.init (fixes #2505) (Brandon Mills) +* Fix: Don't throw spurious shadow errors for classes (fixes #2545) (Jimmy Jia) +* Fix: valid-jsdoc rule to support exported functions (fixes #2522) (Gyandeep Singh) +* Fix: Allow scoped packages in configuration extends (fixes #2544) (Eric Isakson) +* Docs: Add chatroom to FAQ (Nicholas C. Zakas) +* Docs: Move Gitter badge (Nicholas C. Zakas) + +v0.21.1 - May 15, 2015 + +* 0.21.1 (Nicholas C. Zakas) +* Fix: loc obj in report fn expects column (fixes #2481) (Varun Verma) +* Build: Make sure that all md files end with empty line (fixes #2520) (Ilya Volodin) +* Added Gitter badge (The Gitter Badger) +* Fix: forced no-shadow to check all scopes (fixes #2294) (Jose Roberto Vidal) +* Fix: --init indent setting (fixes #2493) (Nicholas C. Zakas) +* Docs: Mention bundling multiple shareable configs (Nicholas C. Zakas) +* Fix: Not to override the required extended config object directly (fixes #2487) (Gyandeep Singh) +* Build: Update markdownlint dependency (David Anson) +* Docs: added recursive function example to no-unused-vars (Jose Roberto Vidal) +* Docs: Fix typo (then -> than) (Vladimir Agafonkin) +* Revert "Fix: sanitise Jekyll interpolation during site generation (fixes #2297)" (Nicholas C. Zakas) +* Fix: dot-location should use correct dot token (fixes #2504) (Mathias Schreck) +* Fix: Stop linebreak-style from crashing (fixes #2490) (James Whitney) +* Fix: rule no-duplicate-case problem with CallExpressions. (fixes #2499) (Matthias Osswald) +* Fix: Enable full support for eslint-env comments (refs #2134) (Ilya Volodin) +* Build: Speed up site generation (fixes #2475) (Ilya Volodin) +* Docs: Fixing trailing spaces (Fixes #2478) (Ilya Volodin) +* Docs: Update README FAQs (Nicholas C. Zakas) +* Fix: Allow comment before comma for comma-spacing rule (fixes #2408) (Gyandeep Singh) + +v0.21.0 - May 9, 2015 + +* 0.21.0 (Nicholas C. Zakas) +* New: Shareable configs (fixes #2415) (Nicholas C. Zakas) +* Fix: Edge cases for no-wrap-func (fixes #2466) (Nicholas C. Zakas) +* Docs: Update ecmaFeatures description (Nicholas C. Zakas) +* New: Add dot-location rule. (fixes #1884) (Greg Cochard) +* New: Add addPlugin method to CLI-engine (Fixes #1971) (Ilya Volodin) +* Breaking: Do not check unset declaration types (Fixes #2448) (Ilya Volodin) +* Fix: no-redeclare switch scoping (fixes #2337) (Nicholas C. Zakas) +* Fix: Check extra scope in no-use-before-define (fixes #2372) (Nicholas C. Zakas) +* Fix: Ensure baseConfig isn't changed (fixes #2380) (Nicholas C. Zakas) +* Fix: Don't warn for member expression functions (fixes #2402) (Nicholas C. Zakas) +* New: Adds skipBlankLines option to the no-trailing-spaces rule (fixes #2303) (Andrew Vaughan) +* Fix: Adding exception for last line (Refs #2423) (Greg Cochard) +* Fix: crash on 0 max (fixes #2423) (gcochard) +* Fix object-shorthand arrow functions (fixes #2414) (Jamund Ferguson) +* Fix: Improves detection of self-referential functions (fixes #2363) (Jose Roberto Vidal) +* Update: key-spacing groups must be consecutive lines (fixes #1728) (Brandon Mills) +* Docs: grammar fix in no-sync (Tony Lukasavage) +* Docs: Update configuring.md to fix incorrect link. (Ans) +* New: Check --stdin-filename by ignore settings (fixes #2432) (Aliaksei Shytkin) +* Fix: `no-loop-func` rule allows functions at init part (fixes #2427) (Toru Nagashima) +* New: Add init command (fixes #2302) (Ilya Volodin) +* Fix: no-irregular-whitespace should work with irregular line breaks (fixes #2316) (Mathias Schreck) +* Fix: generator-star-spacing with class methods (fixes #2351) (Brandon Mills) +* New: no-unneeded-ternary rule to disallow boolean literals in conditional expressions (fixes #2391) (Gyandeep Singh) +* Docs: Add `restParams` to `ecmaFeatures` options list (refs: #2346) (Bogdan Savluk) +* Fix: space-in-brackets Cannot read property 'range' (fixes #2392) (Gyandeep Singh) +* Docs: Sort the rules (Lukas Böcker) +* Add: Exception option for `no-extend-native` and `no-native-reassign` (fixes #2355) (Gyandeep Singh) +* Fix: space-in-brackets import declaration (fixes #2378) (Gyandeep Singh) +* Update: Add uninitialized and initialized options (fixes #2206) (Ian VanSchooten) +* Fix: brace-style to not warn about curly mix ifStatements (fixes #1739) (Gyandeep Singh) +* Fix: npm run profile script should use espree (fixes #2150) (Mathias Schreck) +* New: Add support for extending configurations (fixes #1637) (Espen Hovlandsdal) +* Fix: Include string literal keys in object-shorthand (Fixes #2374) (Jamund Ferguson) +* Docs: Specify language for all code fences, enable corresponding markdownlint rule. (David Anson) +* New: linebreak-style rule (fixes #1255) (Erik Müller) +* Update: Add "none" option to operator-linebreak rule (fixes #2295) (Casey Visco) +* Fix: sanitise Jekyll interpolation during site generation (fixes #2297) (Michael Ficarra) + +v0.20.0 - April 24, 2015 + +* 0.20.0 (Nicholas C. Zakas) +* Fix: support arrow functions in no-extra-parens (fixes #2367) (Michael Ficarra) +* Fix: Column position in space-infix-ops rule (fixes #2354) (Gyandeep Singh) +* Fix: allow plugins to be namespaced (fixes #2360) (Seth Pollack) +* Update: one-var: enable let & const (fixes #2301) (Joey Baker) +* Docs: Add meteor to avaiable environments list (bartmichu) +* Update: Use `Object.assign()` polyfill for all object merging (fixes #2348) (Sindre Sorhus) +* Docs: Update markdownlint dependency, resolve/suppress new issues. (David Anson) +* Fix: newline-after-var declare and export (fixes #2325) (Gyandeep Singh) +* Docs: Some typos and grammar. (AlexKVal) +* Fix: newline-after-var to ignore declare in for specifiers (fixes #2317) (Gyandeep Singh) +* New: add --stdin-filename option (fixes #1950) (Mordy Tikotzky) +* Fix: Load .eslintrc in $HOME only if no other .eslintrc is found (fixes #2279) (Jasper Woudenberg) +* Fix: Add `v8` module to no-mixed-requires rule (fixes #2320) (Gyandeep Singh) +* Fix: key-spacing with single properties (fixes #2311) (Brandon Mills) +* Docs: `no-invalid-regexp`: add `ecmaFeatures` flags for `u`/`y` (Jordan Harband) +* New: object-shorthand rule (refs: #1617) (Jamund Ferguson) +* Update: backticks support for quotes rule (fixes #2153) (borislavjivkov) +* Fix: space-in-brackets to work with modules (fixes #2216) (Nicholas C. Zakas) + +v0.19.0 - April 11, 2015 + +* 0.19.0 (Nicholas C. Zakas) +* Upgrade: Espree to 2.0.1 (Nicholas C. Zakas) +* Docs: Update one-var documentation (fixes #2210) (Nicholas C. Zakas) +* Update: Add test for no-undef (fixes #2214) (Nicholas C. Zakas) +* Fix: Report better location for padded-blocks error (fixes #2224) (Nicholas C. Zakas) +* Fix: Don't check concise methods in quote-props (fixes #2251) (Nicholas C. Zakas) +* Fix: Consider tabs for space-in-parens rule (fixes #2191) (Josh Quintana) +* Fix: block-scoped-var to work with classes (fixes #2280) (Nicholas C. Zakas) +* Docs: Remove trailing spaces, enable corresponding markdownlint rule. (David Anson) +* Fix: padded-blocks with ASI (fixes #2273) (Brandon Mills) +* Fix: Handle comment lines in newline-after-var (fixed #2237) (Casey Visco) +* Docs: Standardize on '*' for unordered lists, enable corresponding markdownlint rule. (David Anson) +* Fix: no-undef and no-underscore-dangle to use double quotes (fixes #2258) (Gyandeep Singh) +* Docs: Improve grammar and style in comma-dangle.md (Nate Eagleson) +* Docs: Improve grammar and style in padded-blocks.md (Nate Eagleson) +* Docs: Update URL in no-wrap-func.md to resolve 404 (Nate Eagleson) +* Docs: Fix typo in command-line-interface.md (Nate Eagleson) +* Docs: Fix typo in working-with-rules.md (Nate Eagleson) +* Docs: Remove hard tabs from *.md, enable corresponding markdownlint rule. (David Anson) +* Fix: Function id missing in parent scope when using ecmaFeature `modules` for rule block-scoped-var (fixes #2242) (Michael Ferris) +* Fix: Ignore single lines for vertical alignment (fixes #2018) (Ian VanSchooten) +* Fix: Allow inline comments in newline-after-var rule (fixes #2229) (Casey Visco) +* Upgrade: Espree 2.0.0 and escope 3.0.0 (fixes #2234, fixes #2201, fixes (Nicholas C. Zakas) +* Docs: Update --no-ignore warning (Brandon Mills) +* Build: Remove jshint files (fixes #2222) (Jeff Tan) +* Docs: no-empty fix comment change (refs #2188) (Gyandeep Singh) +* Fix: duplicate semi and no-extra-semi errors (fixes #2207) (Brandon Mills) +* Docs: Update processors description (Nicholas C. Zakas) +* Fix: semi error on export declaration (fixes #2194) (Brandon Mills) +* New: operator-linebreak rule (fixes #1405) (Benoît Zugmeyer) +* Docs: Fixing broken links in documentation (Ilya Volodin) +* Upgrade: Espree to 0.12.3 (fixes #2195) (Gyandeep Singh) +* Fix: camelcase rule with {properties: never} shouldn't check assignment (fixes #2189) (Gyandeep Singh) +* New: Allow modifying base config (fixes #2143) (Meo) +* New: no-continue rule (fixes #1945) (borislavjivkov) +* Fix: `no-empty` rule should allow any comments (fixes #2188) (Gyandeep Singh) +* Docs: Fix spell in camelcase doc (fixes #2190) (Gyandeep Singh) +* Fix: Require semicolon after import/export statements (fixes #2174) (Gyandeep Singh) +* Build: Add linting of Markdown files to "npm test" script (fixes #2182) (David Anson) +* Build: Fixing site generation (Ilya Volodin) +* Build: Fix gensite task to work even if files are missing (Nicholas C. Zakas) + +v0.18.0 - March 28, 2015 + +* 0.18.0 (Nicholas C. Zakas) +* Fix: Mark variables as used in module scope (fixes #2137) (Nicholas C. Zakas) +* Fix: arrow functions need wrapping (fixes #2113) (Nicholas C. Zakas) +* Fix: Don't crash on empty array pattern item (fixes #2111) (Nicholas C. Zakas) +* Fix: Don't error on destructured params (fixes #2051) (Nicholas C. Zakas) +* Docs: Fixing broken links (Ilya Volodin) +* Fix: no-constant-condition should not flag += (fixes #2155) (Nicholas C. Zakas) +* Fix: Ensure piped in code will trigger correct errors (fixes #2154) (Nicholas C. Zakas) +* Fix: block-scoped-var to handle imports (fixes #2087) (Nicholas C. Zakas) +* Fix: no-dupe-args to work with destructuring (fixes #2148) (Nicholas C. Zakas) +* Fix: key-spacing crash on computed properties (fixes #2120) (Brandon Mills) +* Fix: indent crash on caseless switch (fixes #2144) (Brandon Mills) +* Fix: Don't warn about destructured catch params (fixes #2125) (Nicholas C. Zakas) +* Update: Omit setter param from no-unused-vars (fixes #2133) (Nicholas C. Zakas) +* Docs: Cleaning dead links (Ilya Volodin) +* Docs: Moving documentation out of the repository and modifying build scripts (Ilya Volodin) +* Docs: Update link to Documentation (Kate Lizogubova) +* Docs: Adding back deprecated space-unary-word-ops documentation (Ilya Volodin) +* Fix: Unused recursive functions should be flagged (issue2095) (Nicholas C. Zakas) +* Breaking: Remove JSX support from no-undef (fixes #2093) (Nicholas C. Zakas) +* Fix: markVariableAsUsed() should work in Node.js env (fixes #2089) (Nicholas C. Zakas) +* New: Add "always" and "never" options to "one-var" rule. (fixes #1619) (Danny Fritz) +* New: newline-after-var rule (fixes #2057) (Gopal Venkatesan) +* Fix: func-names with ES6 classes (fixes #2103) (Marsup) +* Fix: Add "Error" to the "new-cap" rule exceptions (fixes #2098) (Mickaël Tricot) +* Fix: vars-on-top conflict with ES6 import (fixes #2099) (Gyandeep Singh) +* Docs: Fixed JSON syntax (Sajin) +* New: space-before-function-paren rule (fixes #2028) (Brandon Mills) +* Breaking: rule no-empty also checking for empty catch blocks. (fixes #1841) (Dieter Oberkofler) +* Update: rule camelcase to allow snake_case in object literals. (fixes #1919) (Dieter Oberkofler) +* New: Added option int32Hint for space-infix-ops (fixes #1295) (Kirill Efimov) +* New: no-param-reassign rule (fixes #1599) (Nat Burns) + +v0.17.1 - March 17, 2015 + +* 0.17.1 (Nicholas C. Zakas) +* Fix: no-func-assign should not fail on import declarations (fixes #2060) (Igor Zalutsky) +* Fix: block-scoped-var to work with destructuring (fixes #2059) (Nicholas C. Zakas) +* Fix: no-redeclare should check Node.js scope (fixes #2064) (Nicholas C. Zakas) +* Fix: space-before-function-parentheses generator methods (fixes #2082) (Brandon Mills) +* Fix: Method name resolution in complexity rule (fixes #2049) (Nicholas C. Zakas) +* Fix: no-unused-vars crash from escope workaround (fixes #2042) (Brandon Mills) +* Fix: restrict dot-notation keywords to actual ES3 keywords (fixes #2075) (Michael Ficarra) +* Fix: block-scoped-var to work with classes (fixes #2048) (Nicholas C. Zakas) +* Docs: Update no-new documentation (fixes #2044) (Nicholas C. Zakas) +* Fix: yoda range exceptions with this (fixes #2063) (Brandon Mills) +* Docs: Fix documentation on configuring eslint with comments (Miguel Ping) +* Fix: rule no-duplicate-case problem with MemberExpressions. (fixes #2038) (Dieter Oberkofler) +* Fix: Exempt \0 from no-octal-escape (fixes #1923) (Michael Ficarra) + +v0.17.0 - March 14, 2015 + +* 0.17.0 (Nicholas C. Zakas) +* Fix: module import specifiers should be defined (refs #1978) (Nicholas C. Zakas) +* Fix: Ignore super in no-undef (refs #1968) (Nicholas C. Zakas) +* Upgrade: Espree to v0.12.0 (refs #1968) (Nicholas C. Zakas) +* Fix: destructured arguments should work in block-scoped-var (fixes #1996) (Nicholas C. Zakas) +* Fix: Line breaking with just carriage return (fixes #2005) (Nicholas C. Zakas) +* Fix: location of new-cap error messages (fixes #2025) (Mathias Schreck) +* Breaking: Stop checking JSX variable use, expose API instead (fixes #1911) (Glen Mailer) +* Fix: Check spacing of class methods (fixes #1989) (Nicholas C. Zakas) +* New: no-duplicate-case rule to disallow a duplicate case label (fixes #2015) (Dieter Oberkofler) +* Clarify issue requirement for doc pull requests (Ian) +* Add quotes around object key (Ian) +* Fix: Add comma-dangle allow-multiline (fixes #1984) (Keith Cirkel) +* Fix: Don't explode on default export function (fixes #1985) (Nicholas C. Zakas) +* Update: Add AST node exceptions to comma-style. (fixes #1932) (Evan Simmons) +* Docs: Add spread operator to available language options (Nicholas C. Zakas) +* New: generator-star-spacing rule (fixes #1680, fixes #1949) (Brandon Mills) + +v0.16.2 - March 10, 2015 + +* 0.16.2 (Nicholas C. Zakas) +* Fix: Ensure globalReturn isn't on when node:false (fixes #1995) (Nicholas C. Zakas) +* Downgrade: escope pegged to 2.0.6 (refs #2001) (Nicholas C. Zakas) +* Upgrade: escope to 2.0.7 (fixes #1978) (Nicholas C. Zakas) +* Docs: Update descriptive text for --no-ignore option. (David Anson) +* Upgrade: estraverse to latest for ESTree support (fixes #1986) (Nicholas C. Zakas) +* Fix: Global block-scope-var check should work (fixes #1980) (Nicholas C. Zakas) +* Fix: Don't warn about parens around yield (fixes #1981) (Nicholas C. Zakas) + +v0.16.1 - March 8, 2015 + +* 0.16.1 (Nicholas C. Zakas) +* Fix: Node.js scoping in block-scoped-var (fixes #1969) (Nicholas C. Zakas) +* Update: Enable ES6 scoping for more options (Nicholas C. Zakas) +* Fix: Ensure all export nodes are traversable (fixes #1965) (Nicholas C. Zakas) +* Fix: Ensure class names are marked as used (fixes #1967) (Nicholas C. Zakas) +* Fix: remove typo that caused a crash (fixes #1963) (Fabricio C Zuardi) +* Docs: Added missing "are" (Sean Wilkinson) + +v0.16.0 - March 7, 2015 + +* 0.16.0 (Nicholas C. Zakas) +* Fix: Pass correct sourceType to escope (fixes #1959) (Nicholas C. Zakas) +* Fix: Scoping for Node.js (fixes #892) (Nicholas C. Zakas) +* Fix: strict rule should honor module code (fixes #1956) (Nicholas C. Zakas) +* New: Add es6 environment (fixes #1864, fixes #1944) (Nicholas C. Zakas) +* Docs: Update ecmaFeatures list (fixes #1942) (Nicholas C. Zakas) +* Fix: Make no-unused-vars ignore exports (fixes #1903) (Nicholas C. Zakas) +* Upgrade: Espree to v1.11.0 (Nicholas C. Zakas) +* Fix: Comment configuration of rule doesn't work (fixes #1792) (Jary) +* Fix: Rest args should work in no-undef and block-scoped-var (fixes #1543) (Nicholas C. Zakas) +* Breaking: change no-comma-dangle to comma-dangle (fixes #1350) (Mathias Schreck) +* Update: space-before-function-parentheses to support generators (fixes #1929) (Brandon Mills) +* New: Adding support for "// eslint-disable-line rule" style comments (Billy Matthews) +* Fix: Use unversioned sinon file in browser test (fixes #1947) (Nicholas C. Zakas) +* Docs: Add mention of compatible parsers (Nicholas C. Zakas) +* Fix: Better error when given null as rule config (fixes #1760) (Glen Mailer) +* Update: no-empty to check TryStatement.handler (fixes #1930) (Brandon Mills) +* Fix: space-before-function-parentheses and object methods (fixes #1920) (Brandon Mills) +* New: no-dupe-args rule (fixes #1880) (Jamund Ferguson) +* Fix: comma-spacing should ignore JSX text (fixes #1916) (Brandon Mills) +* Breaking: made eol-last less strict (fixes #1460) (Glen Mailer) +* New: generator-star middle option (fixes #1808) (Jamund Ferguson) +* Upgrade: Espree to 1.10.0 for classes support (Nicholas C. Zakas) +* Docs: no-plusplus.md - auto semicolon insertion (Miroslav Obradović) +* Docs: Use union types in TokenStore JSDoc (refs #1878) (Brandon Mills) +* Fix: block-scoped-var to work with destructuring (fixes #1863) (Nicholas C. Zakas) +* Docs: Update docs for token-related methods (fixes #1878) (Nicholas C. Zakas) +* Update: Remove preferGlobal from package.json (fixes #1877) (Nicholas C. Zakas) +* Fix: allow block bindings in no-inner-declarations (fixes #1893) (Roberto Vidal) +* Fix: getScope and no-use-before-define for arrow functions (fixes #1895) (Brandon Mills) +* Fix: Make no-inner-declarations look for arrow functions (fixes #1892) (Brandon Mills) +* Breaking: Change no-space-before-semi to semi-spacing and add "after" option (fixes #1671) (Mathias Schreck) +* Update: Add support for custom preprocessors (fixes #1817) (Ilya Volodin) + +v0.15.1 - February 26, 2015 + +* 0.15.1 (Nicholas C. Zakas) +* Build: Fix release task (Nicholas C. Zakas) +* Fix: check all semicolons in no-space-before-semi (fixes #1885) (Mathias Schreck) +* Fix: Refactor comma-spacing (fixes #1587, fixes #1845) (Roberto Vidal) +* Fix: Allow globalReturn in consistent-return (fixes #1868) (Brandon Mills) +* Fix: semi rule should check throw statements (fixes #1873) (Mathias Schreck) +* Docs: Added HolidayCheck AG as user (0xPIT) +* Upgrade: `chalk` to 1.0.0 (Sindre Sorhus) +* Docs: Add CustomInk to the list of companies (Derek Lindahl) +* Docs: Alphabetize project & company usage list (Derek Lindahl) +* Docs: fix typo (Henry Zhu) +* Docs: Fix typo (Brenard Cubacub) + +v0.15.0 - February 21, 2015 + +* 0.15.0 (Nicholas C. Zakas) +* Upgrade: Espree to 1.9.1 (fixes #1816, fixes #1805) (Nicholas C. Zakas) +* Fix: make rules work with for-of statements (fixes #1859) (Mathias Schreck) +* Fix: Enable globalReturn for Node.js environment (fixes #1158) (Nicholas C. Zakas) +* Fix: Location of extra paren message (fixes #1814) (Nicholas C. Zakas) +* Fix: Remove unnecessary file exists check (fixes #1831) (Nicholas C. Zakas) +* Fix: Don't count else-if in max-depth (fixes #1835) (Nicholas C. Zakas) +* Fix: Don't flag for-of statement (fixes #1852) (Nicholas C. Zakas) +* Build: Test using io.js as well (Nicholas C. Zakas) +* Change customformat value to path (suisho) +* Docs: Add a missing word in the Contributing doc (Ben Linskey) +* Docs: Fix typo in wrap-iife rule doc title (Ben Linskey) +* Docs: Update pages to fix rendering of lists (David Anson) +* Fix: new-cap should allow defining exceptions (fixes #1424) (Brian Di Palma) +* Update: Add requireReturnDescription for valid-jsdoc (fixes #1833) (Brian Di Palma) +* New: rule no-throw-literal added (fixes #1791) (Dieter Oberkofler) +* New: multi-line option for the curly rule (fixes #1812) (Hugo Wood) +* Docs: fix typo in configuring docs (mendenhallmagic) +* Update: Backslashes in path (fixes #1818) (Jan Schär) +* Docs: Update pages to fix rendering of lists and fenced code blocks (David Anson) +* Docs: add webpack loader to the docs/integrations page (Maxime Thirouin) +* Breaking: space-before-function-parentheses replaces space-after-function-name and checkFunctionKeyword (fixes #1618) (Mathias Schreck) + +v0.14.1 - February 8, 2015 + +* 0.14.1 (Nicholas C. Zakas) +* Fix: Exit code should be 1 for any number of errors (fixes #1795) (Nicholas C. Zakas) +* Fix: Check indentation of first line (fixes #1796) (Nicholas C. Zakas) +* Fix: strict rules shouldn't throw on arrow functions (fixes #1789) (Nicholas C. Zakas) + +v0.14.0 - February 7, 2015 + +* 0.14.0 (Nicholas C. Zakas) +* Update: Fix indentation of comment (Nicholas C. Zakas) +* Fix: comma-spacing for template literals (fixes #1736) (Nicholas C. Zakas) +* Build: Add Node.js 0.12 testing (Nicholas C. Zakas) +* Breaking: Remove node from results (fixes #957) (Nicholas C. Zakas) +* Breaking: Exit code is now error count (Nicholas C. Zakas) +* Docs: Correct getFormatter() documentation (refs #1723) (Nicholas C. Zakas) +* Update: Make rules work with arrow functions (fixes #1508, fixes #1509, fixes #1493) (Nicholas C. Zakas) +* Fix: Ensure template string references count (fixes #1542) (Nicholas C. Zakas) +* Fix: no-undef to work with arrow functions (fixes #1604) (Nicholas C. Zakas) +* Upgrade: Espree to version 1.8.0 (Nicholas C. Zakas) +* Fix: Don't throw error for arguments (fixes #1759) (Nicholas C. Zakas) +* Fix: Don't warn on computed nonliteral properties (fixes #1762) (Nicholas C. Zakas) +* New: Allow parser to be configured (fixes #1624) (Nicholas C. Zakas) +* Docs: Added double quotes for JSON keys for comma-spacing and key-spacing rule (Dmitry Polovka) +* New: Rule indent (fixes #1022) (Dmitriy Shekhovtsov) +* Revert "New: Rule indent (fixes #1022)" (Nicholas C. Zakas) +* Update: fix eslint indentations (fixes #1770) (Dmitriy Shekhovtsov) +* Fix: Scoping issues for no-unused-vars (fixes #1741) (Nicholas C. Zakas) +* Docs: Added `eslint-enable` inline (Ivan Fraixedes) +* New: Add predefined Meteor globals (fixes #1763) (Johan Brook) +* New: Rule indent (fixes #1022) (Dmitriy Shekhovtsov) +* Update: Check all assignments for consistent-this (fixes #1513) (Timothy Jones) +* Fix: Support exceptions in no-multi-spaces (fixes #1755) (Brandon Mills) +* Docs: Forgotten parentheses in code snippet (Ivan Fraixedes) +* Update: CLIEngine results include warning and error count (fixes #1732) (gyandeeps) +* Fix: Scoping issues for no-unused-vars (fixes #1733) (Nicholas C. Zakas) +* Update: Add getNodeByRangeIndex method (refs #1755) (Brandon Mills) +* Update: Replace getTokenByRange(Index->Start) (refs #1721) (Brandon Mills) +* Update: Fast-path for empty input (fixes #546) (Nicholas C. Zakas) +* Fix: Allow single line else-if (fixes #1739) (Nicholas C. Zakas) +* Fix: Don't crash when $HOME isn't set (fixes #1465) (Nicholas C. Zakas) +* Fix: Make no-multi-spaces work for every case (fixes #1603, fixes #1659) (Nicholas C. Zakas) +* Breaking: Show error and warning counts in stylish summary (fixes #1746) (Brandon Mills) +* Docs: fixed typo in no-lone-blocks docs (Vitor Balocco) +* Docs: fixed typo in consistent-return docs (Vitor Balocco) +* Breaking: remove implied eval check from no-eval (fixes #1202) (Mathias Schreck) +* Update: Improve CLIEngine.getFormatter() (refs #1723) (Nicholas C. Zakas) +* Docs: Add Backbone plugin link (Ilya Volodin) +* Docs: use npm's keyword route (Tom Vincent) +* Build: Update sitegen script (Closes #1725) (Ilya Volodin) + +v0.13.0 - January 24, 2015 + +* 0.13.0 (Nicholas C. Zakas) +* Update: The rule spaced-line-comment now also allows tabs and not only spaces as whitespace. (fixes #1713) (Dieter Oberkofler) +* Docs: add Jasmine rules and eslintplugin npm links (Tom Vincent) +* Fix: Make no-redeclare work with let (fixes #917) (Nicholas C. Zakas) +* Update: Add CLIEngine.getFormatter() (fixes #1653) (Nicholas C. Zakas) +* Breaking: Update escope (fixes #1642) (Nicholas C. Zakas) +* Update: Switch to using estraverse-fb (fixes #1712) (Nicholas C. Zakas) +* Docs: Update README FAQ (Nicholas C. Zakas) +* Update: no-warning-comments matches on whole word only (fixes #1709) (Nick Fisher) +* Build: Add JSDoc generation (fixes #1363) (Nicholas C. Zakas) +* Docs: Add more info about context (fixes #1330) (Nicholas C. Zakas) +* Upgrade: Espree to 1.7.1 (fixes #1706) (Nicholas C. Zakas) +* Docs: Make CLA notice more prominent (Nicholas C. Zakas) +* Update: Added globals for: phantom,jquery, prototypejs, shelljs (fixes #1704) (Dmitriy Shekhovtsov) +* Docs: Fixed example for the space-return-throw-case rule (mpal9000) +* Fix: Except object literal methods from func-names (fixes #1699) (Brandon Mills) +* Update: use global strict mode everywhere (fixes #1691) (Brandon Mills) +* Update: Add allowPattern option for dot-notation rule (fixes #1679) (Tim Schaub) +* Fix: Missing undeclared variables in JSX (fixes #1676) (Yannick Croissant) +* Fix: no-unused-expressions rule incorrectly flagging yield (fixes #1672) (Rémi Gérard-Marchant) +* Update: Combine strict mode rules (fixes #1246) (Brandon Mills) +* Fix: disregards leading './' in ignore pattern or file name (fixes #1685) (Chris Montrois) +* Upgrade: globals module to latest (fixes #1670) (Nicholas C. Zakas) +* Fix: generator-star should allow params (fixes #1677) (Brandon Mills) +* Fix: no-unused-vars for JSX (fixes #1673 and fixes #1534) (Yannick Croissant) +* Docs: Add angularjs-eslint link into the integration doc (Emmanuel DEMEY) + +v0.12.0 - January 17, 2015 + +* 0.12.0 (Nicholas C. Zakas) +* Fix: Track JSX global variable correctly (fixes #1534) (Nicholas C. Zakas) +* Fix: Property regex flag checking (fixes #1537) (Nicholas C. Zakas) +* Docs: Add angularjs-eslint link into the integration doc (Emmanuel DEMEY) +* Update: Expose ecmaFeatures on context (fixes #1648) (Nicholas C. Zakas) +* Docs: Added Fitbit to the list of companies (Igor Zalutsky) +* New: gen-star rule (refs #1617) (Jamund Ferguson) +* New: no-var rule (refs #1617) (Jamund Ferguson) +* Fix: Support JSX spread operator (fixes #1634) (Nicholas C. Zakas) +* Docs: Document ecmaFeatures (Nicholas C. Zakas) +* Upgrade: several dependencies (fixes #1377) (Nicholas C. Zakas) +* Fix: Broken JSX test (Nicholas C. Zakas) +* Fix: no-bitwise reports on bitwise assignment expressions (fixes #1643) (Mathias Schreck) +* Fix: Find JSXIdentifier refs in no-unused-vars (fixes #1534) (Nicholas C. Zakas) +* Update: Add a couple JSX tests (Nicholas C. Zakas) +* Fix: quotes rule ignores JSX literals (fixes #1477) (Nicholas C. Zakas) +* Fix: Don't warn on JSX literals with newlines (fixes #1533) (Nicholas C. Zakas) +* Update: Fully enable JSX support (fixes #1640) (Nicholas C. Zakas) +* Breaking: Allow parser feature flips (fixes #1602) (Nicholas C. Zakas) +* Fix: Allow comments in key-spacing groups (fixes #1632) (Brandon Mills) +* Fix: block-scoped-var reports labels (fixes #1630) (Michael Ficarra) +* Docs: add newline to no-process-env (fixes #1627) (Tom Vincent) +* Fix: Update optionator, --no in help (fixes #1134) (George Zahariev) +* Fix: Allow individual newlines in space-in-brackets (fixes #1614) (Brandon Mills) +* Docs: Correct alignment in example project tree (Tim Schaub) +* Docs: Remove references to Esprima (Nicholas C. Zakas) +* Docs: Remove illegal code fence (Nicholas C. Zakas) + +v0.11.0 - December 30, 2014 + +* 0.11.0 (Nicholas C. Zakas) +* Fix: Adding regexp literal exception (fixes #1589) (Greg Cochard) +* Fix: padded-blocks incorrectly complained on comments (fixes #1416) (Mathias Schreck) +* Fix: column location of key-spacing with additional tokens (fixes #1458) (Mathias Schreck) +* Build: tag correct commit (refs #1606) (Mathias Schreck) +* Upgrade: Updat Espree to 1.3.1 (Nicholas C. Zakas) +* Fix: add es3 config option to dot-notation rule (fixes #1484) (Michael Ficarra) +* Fix: valid-jsdoc should recognize @class (fixes #1585) (Nicholas C. Zakas) +* Update: Switch to use Espree (fixes #1595) (Nicholas C. Zakas) +* Fix: brace-style stroustrup should report on cuddled elseif (fixes #1583) (Ian Christian Myers) +* New: Configuration via package.json (fixes #698) (Michael Mclaughlin) +* Update: Set environments w/ globals (fixes #1577) (Elan Shanker) +* Fix: yoda treats negative numbers as literals (fixes #1571) (Brandon Mills) +* Fix: function arguments now count towards no-shadow check (fixes #1584) (Glen Mailer) +* Fix: check if next statement is on newline when warning against extra semicolons. (fixes #1580) (Evan You) +* Update: add yoda exception for range tests (fixes #1561) (Brandon Mills) +* New: space-after-function-name (fixes #1340) (Roberto Vidal) + +v0.10.2 - December 12, 2014 + +* 0.10.2 (Nicholas C. Zakas) +* Fix: detect for...in in no-loop-func (fixes #1573) (Greg Cochard) +* Update: simplify comma-spacing logic (fixes #1562) (Brandon Mills) +* Fix: operator-assignment addition is non-commutative (fixes#1556) (Brandon Mills) +* 0.10.1 (Nicholas C. Zakas) +* Update: Add new-cap exception configurations. (Fixes #1487) - `newCapsAllowed` - `nonNewCapsAllowed` (Jordan Harband) + +v0.10.1 - December 6, 2014 + +* 0.10.1 (Nicholas C. Zakas) +* Docs: Fix v0.10.0 changelog (Nicholas C. Zakas) +* Build: Ensure changelog works with large semver versions (Nicholas C. Zakas) +* Fix: comma-spacing and comma-style to work with array literals (fixes #1492) (Nicholas C. Zakas) +* Update: better operator regex in use-isnan rule (fixes #1551) (Michael Ficarra) +* Fix: wrong op index in no-multi-spaces (fixes #1547) (Brandon Mills) +* Fix: Restrict use-isnan violations to comparison operators. (Fixes #1535) (Jordan Harband) +* Fix: comma-spacing has false positives when parenthesis are used (fixes #1457) (Jamund Ferguson) +* Docs: alphabetize the "Stylistic Issues" section (Jeff Williams) +* Build: make the "gensite" target work when DOCS_DIR does not exist (fixes #1530) (Jeff Williams) +* Docs: badges should only refer to master branch (Mathias Schreck) +* Fix: prevent crash on empty blocks in no-else-return (fixes #1527) (Mathias Schreck) +* Build: Fix md to html conversion regex (fixes #1525) (Brandon Mills) +* 0.10.0 (Nicholas C. Zakas) + +v0.10.0 - November 27, 2014 + +* 0.10.0 (Nicholas C. Zakas) +* Fix: Add Object and Function as exceptions in new-cap (refs #1487) (Nicholas C. Zakas) +* Breaking: Allow extensionless files to be passed on CLI (fixes #1131) (Nicholas C. Zakas) +* Fix: typo: iffe to iife, none to non (Michael Ficarra) +* Update: refactor tokens API (refs #1212) (Brandon Mills) +* New: Allow other file extensions (fixes #801) (Nicholas C. Zakas) +* Update: Add Event to browser globals (fixes #1474) (Nicholas C. Zakas) +* Fix: check function call arguments in comma-spacing (fixes #1515) (Mathias Schreck) +* Update: Add no-cond-assign option to disallow nested assignments in conditionals (fixes #1444) (Jeff Williams) +* Fix: crash in no-multi-spaces on empty array elements (fixes #1418) (Brandon Mills) +* Fix: Don't explode on directory traversal (fixes #1452) (Nicholas C. Zakas) +* Fix: no-fallthrough should work when semis are missing (fixes #1447) (Nicholas C. Zakas) +* Fix: JSDoc parsing by updating doctrine (fixes #1442) (Nicholas C. Zakas) +* Update: restore the "runs" global present in Jasmine 1.3 (fixes #1498) (Michał Gołębiowski) +* Fix: ignore undefined identifiers in typeof (fixes #1482) (Mathias Schreck) +* Fix: Ignoring empty comments. (fixes #1488) (Greg Cochard) +* New: Add space-unary-ops rules (#1346) (Marcin Kumorek) +* Update: Remove shebang workaround in spaced-line-comment (fixes #1433) (Michael Ficarra) +* Docs: change 'and' to 'an' in docs/rules/valid-jsdoc.md (fixes #1441) (Michael Ficarra) +* Update: Add `beforeAll` and `afterAll` to the Jasmine globals (fixes #1478) (Gyandeep Singh) +* Update: Add exception options to space-in-parens (fixes #1368) (David Clark) +* Build: Add check for license issues (fixes #782) (Brandon Mills) +* Docs: update badges (Yoshua Wuyts) +* Docs: Update pages to fix rendering of lists and fenced code blocks (David Anson) +* Fix: env rules merging for command line config (fixes #1271) (Roberto Vidal) +* Fix: Collect variables declare in switch-case.(fixes #1453) (chris) +* Fix: remove extra capture group (Nate-Wilkins) +* Update: allow distinct alignment groups in key-spacing (fixes #1439) (Brandon Mills) +* Fix: message for numeric property names in quote-props (fixes #1459) (Brandon Mills) +* Docs: Remove assumption about the rule config (Alexander Schmidt) +* New: Add ability to time individual rules (fixes #1437) (Brandon Mills) +* Fix: single quotes (Nate-Wilkins) +* Docs: Fix broken code fences in key-spacing docs (Brandon Mills) +* Docs: Explain .eslintignore features (fixes #1094) (Brandon Mills) +* Breaking: ignore node_modules by default (fixes #1163) (Brandon Mills) +* Fix: Adds clamping to getSource beforeCount (fixes #1427) (Greg Gianforcaro) +* New: add no-inline-comment rule (fixes #1366) (Greg Cochard) +* Fix: '.md' to '.html' with anchors (fixes #1415) (Nate-Wilkins) +* Build: Filter and sort versions in gensite (fixes #1430) (Brandon Mills) +* Build: Escape period in regex (fixes #1428) (Brandon Mills) +* Revert "Fix: '.md' to '.html' with anchors (fixes #1415)" (Nicholas C. Zakas) +* 0.9.2 (Nicholas C. Zakas) +* New: Add operator-assignment rule (fixes #1420) (Brandon Mills) + +v0.9.2 - November 1, 2014 + +* 0.9.2 (Nicholas C. Zakas) +* Fix: '.md' to '.html' with anchors (fixes #1415) (Nate-Wilkins) +* Fix: Allow line breaks in key-spacing rule (fixes #1407) (Brandon Mills) +* Build: add coveralls integration (fixes #1411) (Mathias Schreck) +* Fix: add severity flag for ignored file warning (fixes #1401) (Mathias Schreck) +* Fix: Keep sinon at ~1.10.3 (fixes #1406) (Brandon Mills) +* Fix: ! negates .eslintignore patterns (fixes #1093) (Brandon Mills) +* Fix: let fs.stat throw if a file does not exist (fixes #1296) (Mathias Schreck) +* Fix: check switch statements in space-before-blocks (fixes #1397) (Mathias Schreck) +* Docs: fix rule name in example configuration (Mathias Schreck) +* Fix: disable colors during test run (fixes #1395) (Mathias Schreck) +* New: add isPathIgnored method to CLIEngine (fixes #1392) (Mathias Schreck) +* Docs: changing eslint to ESLint and add missing backtick (Mathias Schreck) +* Docs: Documents the functionality to load a custom formatter from a file (Adam Baldwin) +* 0.9.1 (Nicholas C. Zakas) +* Update: Option type for mixed tabs and spaces (fixes #1374) (Max Nordlund) +* Fix: Nested occurrences of no-else-return now show multiple reports (fixes #1369) (Jordan Hawker) + +v0.9.1 - October 25, 2014 + +* 0.9.1 (Nicholas C. Zakas) +* Docs: fix link on governance model (azu) +* Fix: plugins without rulesConfig causes crash (fixes #1388) (Mathias Schreck) +* 0.9.0 (Nicholas C. Zakas) + +v0.9.0 - October 24, 2014 + +* 0.9.0 (Nicholas C. Zakas) +* New: Allow reading from STDIN (fixes #368) (Nicholas C. Zakas) +* New: add --quiet option (fixes #905) (Mathias Schreck) +* Update: Add support for plugin default configuration (fixes #1358) (Ilya Volodin) +* Fix: Make sure shebang comment node is removed (fixes #1352) (Nicholas C. Zakas) +* New: Adding in rule for irregular whitespace checking. (fixes #1024) (Jonathan Kingston) +* Fix: space-in-parens should not throw for multiline statements (fixes #1351) (Jary) +* Docs: Explain global vs. local plugins (fixes #1238) (Nicholas C. Zakas) +* Docs: Add docs on Node.js API (fixes #1247) (Nicholas C. Zakas) +* Docs: Add recommended keywords for plugins (fixes #1248) (Nicholas C. Zakas) +* Update: Add CLIEngine#getConfigForFile (fixes #1309) (Nicholas C. Zakas) +* Update: turn on comma-style for project (fixes #1316) (Nicholas C. Zakas) +* Fix: Ensure messages are sorted by line (fixes #1343) (Nicholas C. Zakas) +* Update: Added arraysInObjects and objectsInObjects options to space-in-brackets rule (fixes #1265, fixes #1302) (vegetableman) +* Breaking: Removed comma spacing check from space-infix-ops (fixes #1361) (vegetableman) +* Fix: addressed linting errors (Nicholas C. Zakas) +* Docs: Add Contributor Model (fixes #1341) (Nicholas C. Zakas) +* Docs: Add reference to CLA (Nicholas C. Zakas) +* Build: add version numbers to docs (fixes #1170) (Mathias Schreck) +* Fix: no-fallthrough incorrectly flagged falls through annotations (fixes #1353) (Mathias Schreck) +* Build: separate site publishing form generation (fixes #1356) (Mathias Schreck) +* New: Add key-spacing rule (fixes #1280) (Brandon Mills) +* New: add spaced-line-comment rule (fixes #1345) (Greg Cochard) +* Docs: added more Related Rules sections (fixes #1347) (Delapouite) +* Fix: resolve linting issue in (fixes #1339) (Nicholas C. Zakas) +* New: add space-before-blocks rule (fixes #1277) (Mathias Schreck) +* Docs: Remove moot integration plugins (Sindre Sorhus) +* New: add rule for multiple empty lines (fixes #1254) (Greg Cochard) +* Fix: no-shadow rule should consider function expressions (fixes #1322) (Mathias Schreck) +* Update: remove globals present only in Jasmine plugins (fixes #1326) (Michał Gołębiowski) +* New: added no-multi-spaces rule (fixes #630) (vegetableman) +* New: Added comma-spacing rule (Fixes #628, Fixes #1319) (vegetableman) +* New: add rule for padded blocks (fixes #1278) (Mathias Schreck) +* Docs: fix eqeqeq isNullCheck comment (Denis Sokolov) +* Fix: no-comma-dangle violation in unit test and Makefile.js/lint not checking return codes (fixes #1306) (David Anson) +* Fix: allow comma-last with object properties having line breaks (fixes #1314) (vegetableman) +* New: Added comma-style rule (fixes #1282) (vegetableman) +* Update: add space after function keyword check (fixes #1276) (Mathias Schreck) +* Update: Add missing environments and fix sorting/grouping of rules (fixes #1307, fixes #1308) (David Anson) +* Docs: Fix sorting of rules within each section (David Anson) +* Docs: Correct a few misspelled words (David Anson) +* Docs: Update multiple pages to fix rendering of fenced code blocks (David Anson) +* New: Added no-process-env rule (fixes #657) (vegetableman) +* Fix: add rule ensuring #1258 is fixed by recent rewrite (fixes #1258) (Michael Ficarra) +* Update: split propertyName from singleValue in space-in-brackets (fixes #1253) (Michael Ficarra) +* Update: add "as-needed" option to quote-props rule (fixes #1279) (Michael Ficarra) +* Docs: fixed broken link and changed warning level to error level (vegetableman) +* Docs: Added "the native web" to the list of companies that use ESLint. (Golo Roden) +* Docs: Add BountySource badge to README (Nicholas C. Zakas) +* 0.8.2 (Nicholas C. Zakas) + +v0.8.2 - September 20, 2014 + +* 0.8.2 (Nicholas C. Zakas) +* Docs: Updated contribution guidelines to add accepted/bounty issues descriptions (Nicholas C. Zakas) +* Docs: Update README with links and FAQs (Nicholas C. Zakas) +* Docs: add finally to space-after-keywords documentation (Mathias Schreck) +* New: add ignoreCase option to sort-vars (fixes #1272) (Mathias Schreck) +* Docs: fix typo (Barry Handelman) +* Docs: Fix broken Markdown on configuration page (Nicholas C. Zakas) +* Docs: Fix reference to wrong rule name (Harry Wolff) +* Upgrade: Most dev dependencies (Nicholas C. Zakas) +* Upgrade: shelljs to 0.3.0 (Nicholas C. Zakas) +* Upgrade: doctrine to 0.5.2 (Nicholas C. Zakas) +* Upgrade: esprima to 1.2.2 (Nicholas C. Zakas) +* Upgrade: eslint-tester to latest (Nicholas C. Zakas) +* Fix: Load .eslintrc in directory with $HOME as an ancestor (fixes #1266) (Beau Gunderson) +* Fix: load .eslintrc from HOME (fixes #1262) (Beau Gunderson) +* New: Add sharable rule settings (fixes #1233) (Ilya Volodin) +* Upgrade: upgrade outdated dependencies (fixes #1251) (Mathias Schreck) +* Docs: fix typo in no-ex-assign documentation (Michael Ficarra) +* Docs: add intellij plugin to integrations (ido) +* Docs: Changing NPM to npm (Peter deHaan) +* Fix: strict should check function expressions (fixes #1244) (Brandon Mills) +* Docs: fix vars-on-top documentation (fixes #1234) (Mathias Schreck) +* 0.8.1 (Nicholas C. Zakas) +* Docs: Fixed a typo in brace-style.md (Anton Antonov) + +v0.8.1 - September 9, 2014 + +* 0.8.1 (Nicholas C. Zakas) +* Fix: Ensure exit code is 1 when there's a syntax error (fixes #1239) (Nicholas C. Zakas) +* Docs: fix up vars-on-top documentation (fixes #1234) (Michael Ficarra) +* Fix: vars-on-top directive support (fixes #1235) (Michael Ficarra) +* Fix: Avoid mutating node.range in max-len (fixes #1224) (Brandon Mills) +* Docs: Typo, add missing quotation mark (Ádám Lippai) +* Update: space-in-brackets to allow exceptions (fixes #1142) (Brandyn Bennett) +* 0.8.0 (Nicholas C. Zakas) + +v0.8.0 - September 5, 2014 + +* 0.8.0 (Nicholas C. Zakas) +* Perf-related revert "Fix: Speed up tokens API (refs #1212)" (Nicholas C. Zakas) +* Fix: no-fallthrough: continue affects control flow, too (fixes #1220) (Michael Ficarra) +* Fix: rewrite no-unused-vars rule (refs #1212) (Michael Ficarra) +* Fix: Error when there's a \r in .eslintrc (#1172) (Gyandeep Singh) +* Added rule disallowing reserved words being used as keys (fixes #1144) (Emil Bay) +* Fix: rewrite no-spaced-func rule (refs #1212) (Michael Ficarra) +* Fix: Speed up getScope() (refs #1212) (Brandon Mills) +* Fix: no-extra-strict behavior for named function expressions (fixes #1209) (Mathias Schreck) +* Add Date.UTC to allowed capitalized functions (David Brockman Smoliansky) +* New: Adding 'vars-on-top' rule (fixes #1148) (Gyandeep Singh) +* Fix: Speed up tokens API (refs #1212) (Brandon Mills) +* Docs: document plugin usage (fixes #1117) (Mathias Schreck) +* New: accept plugins from cli (fixes #1113) (Mathias Schreck) +* Docs: fix some typos. (Mathias Schreck) +* New: Load plugins from configs (fixes #1115). (Mathias Schreck) +* Fix: no-unused-expressions better directive detection (fixes #1195) (Michael Ficarra) +* Fix: no-unused-expressions directive support (fixes #1185) (Michael Ficarra) +* Update: Add 'allowSingleLine' option to brace-style (fixes #1089) (John Gozde) +* Docs: Spell checking and one extra closing curly in code example (Juga Paazmaya) +* Fix: mergeConfigs ensures the plugins property exists (fixes #1191). (Mathias Schreck) +* Update: Declare ES6 collections (Map, Set, WeakMap, WeakSet) as built-in globals (fixes #1189) (Michał Gołębiowski) +* New: Adding 'plugin' CLI option (fixes #1112) (Greg) +* Fix: Correct a typo in the error message in tests (Michał Gołębiowski) +* New: Add no-extra-bind rule to flag unnecessary bind calls (fixes #982) (Bence Dányi) +* Fix: Useless bind call in cli-engine (fixes #1181) (Bence Dányi) +* Docs: Updates `amd` description (fixes #1175) (James Whitney) +* New: Adds support for the `jasmine` env (fixes #1176) (James Whitney) +* Fix: for-in support to no-empty-label rule (fixes #1161) (Marc Harter) +* docs: Update link (Mathias Bynens) +* Fix: crash when loading empty eslintrc file (fixes #1164) (Michael Ficarra) +* Fix: no-unused-var should respect compound assignments (fixes #1166) (Michael Ficarra) +* Update: ES3 `ReservedWord`s (fixes #1151) Adds ES3 `ReservedWord`s to the list of keywords in the `dot-notation` rule (fixes #1151) (Emil Bay) +* Update: Update comment parser to read rule slashes (fixes #1116) (Jary) +* New: add no-void rule (fixes #1017). (Mike Sidorov) +* New: Add rules.import() (fixes #1114) (Mathias Schreck) +* New: Make mergeConfigs() merge plugin entries (fixes #1111) (Mathias Schreck) +* Breaking: Change no-global-strict to global-strict and add "always" option (fixes #989) (Brandon Mills) +* Fix: no-unreachable should check top-level statements (fixes #1138) (Brandon Mills) +* Fix: Speed up no-unreachable (fixes #1135) (Brandon Mills) +* New: advanced handle-callback-err configuration (fixes #1124) (Mathias Schreck) +* New: Expose CLIEngine (fixes #1083) (Gyandeep Singh) +* Docs: Add link to new Atom linter (fixes #1125) (Gil Pedersen) +* Fix: space-after-keywords checks finally of TryStatement (fixes #1122) (Michael Ficarra) +* Fix: space-after-keywords checks while of DoWhileStatement (fixes #1120) (Michael Ficarra) +* Fix: space-after-keywords w/ "never" should allow else-if (fixes #1118) (Michael Ficarra) +* Fix: dot-notation rule flags non-keyword reserved words (fixes #1102) (Michael Ficarra) +* Update: Use xml-escape instead of inline helper (Ref #848) (jrajav) +* Update: Added comments support to .eslintignore (fixes #1084) (Vitaly Puzrin) +* Update: enabled 'no-trailing-spaces' rule by default (fixes #1051) (Vitaly Puzrin) +* Breaking: Ignore children of all patterns by adding "/**" (Fixes #1069) (jrajav) +* Fix: skip dot files and ignored dirs on traverse (fixes #1077, related to #814) (Vitaly Puzrin) +* Docs: Added Gruntjs plugin on integrations page (Gyandeep Singh) +* Fix: don't break node offsets if hasbang present (fixes #1078) (Vitaly Puzrin) +* Build: Exclude readme/index from rules Resources generation (Fixes #1072) (jrajav) +* Docs: Change eol-last examples to `
` (Fixes #1068) (jrajav)
+* 0.7.4 (Nicholas C. Zakas)
+* New: space-in-parens rule (Closes #627) (jrajav)
+
+v0.7.4 - July 10, 2014
+
+* 0.7.4 (Nicholas C. Zakas)
+* Docs: Fix 'lintinging' typo and ref links (Tom Vincent)
+* Fix: Transform envs option to object in Config (Fixes #1064) (jrajav)
+* 0.7.3 (Nicholas C. Zakas)
+
+v0.7.3 - July 9, 2014
+
+* 0.7.3 (Nicholas C. Zakas)
+* Update: Address code review comment for strict rule (refs #1011) (Nicholas C. Zakas)
+* Docs: Update copyright policy (Nicholas C. Zakas)
+* Docs: Update documentation for max-len to include description of second option (fixes #1006) (Nicholas C. Zakas)
+* Fix: Avoid double warnings for strict rule (fixes #1011) (Nicholas C. Zakas)
+* Fix: Check envs for true/false (Fixes #1059) (jrajav)
+* 0.7.2 (Nicholas C. Zakas)
+
+v0.7.2 - July 8, 2014
+
+* 0.7.2 (Nicholas C. Zakas)
+* Fix: no-mixed-spaces-and-tabs incorrectly flagging multiline comments (fixes #1055) (Nicholas C. Zakas)
+* Fix: new-cap error that throws on non-string member (fixes #1056) (Nicholas C. Zakas)
+* Fix: Always make globals an object (Fixes #1049) (jrajav)
+* 0.7.1 (Nicholas C. Zakas)
+
+v0.7.1 - July 7, 2014
+
+* 0.7.1 (Nicholas C. Zakas)
+* Docs: Add Related Rules sections (Fixes #990) (jrajav)
+* Fix: Check output file isn't dir, fix tests (Fixes #1034) (jrajav)
+* Docs: Updated documentation for several rules (Nicholas C. Zakas)
+* Docs: Updated contributor guide and dev env setup guide (Nicholas C. Zakas)
+* Breaking: Implement configuration hierarchy (fixes #963) (Nicholas C. Zakas)
+* Update: greatly simplify eqeqeq's operator finding logic (fixes #1037) (Michael Ficarra)
+* New: Add getSourceLines() to core and rule context (fixed #1005) (Jary)
+* Build + Docs: Adding generated resource links to rule docs (Fixes #1021) (jrajav)
+* Fix: Ignore unused params for args: 'none' (Fixes #1026) (jrajav)
+* Fix: Point eqeqeq error at operator (Fixes #1029) (jrajav)
+* New: report output to a file (fixes #1027) (Gyandeep Singh)
+* Breaking: CLIEngine abstraction for CLI operations; formatters no longer are passed configs (fixes #935) (Nicholas C. Zakas)
+* Fix: Allow stdout to drain before exiting (fixes #317) (Nicholas C. Zakas)
+* New: add no-undefined rule (fixes #1020) (Michael Ficarra)
+* New: Added no-mixed-spaces-and-tabs rule (fixes #1003) (Jary)
+* New: Added no-trailing-spaces rule (fixes #995) (Vitaly Puzrin)
+* Update: Factor ignores out of Config (fixes #958) (jrajav)
+* Fix: rewrite eol-last rule (fixes #1007) (fixes #1008) (Michael Ficarra)
+* Fix: add additional IIFE exception in no-extra-parens (fixes #1004) (Michael Ficarra)
+* Docs: Removed reference to brace-style Stroustrup default (fixes #1000) (Caleb Troughton)
+* New: Added eol-last rule (Fixes #996) (Vitaly Puzrin)
+* Fix: Put rule severity in messages (Fixes #984); deprecates passing full config to Formatters (jrajav)
+* Fix: no-unused-vars to check only file globals (fixes #975) (Aliaksei Shytkin)
+* Build: Makefile - Check for rule ids in docs titles (Fixes #969) (Delapouite)
+* Docs: guard-for-in - added missing id in title (Fixes #969) (Delapouite)
+* Breaking: Change 'no-yoda' rule to 'yoda' and add "always" option (Fixes #959) (jrajav)
+* Fix: Fixes no-unused-vars to check /*globals*/ (Fixes #955) (jrajav)
+* Update: no-eval to also warn on setTimeout and setInterval (fixes #721) (Nicholas C. Zakas)
+* Remove: experimental match() method (Nicholas C. Zakas)
+* Update: space-in-brackets now always allows empty object and array literals to have no spaces (fixes #797) (Nicholas C. Zakas)
+* New: Allow the cli parameter "color" and "no-color" (fixes #954) (Tom Gallacher)
+* Fix: valid-jsdoc no more warning for multi-level params (Fixes #925) (Delapouite)
+* Update: Search parent directories for .eslintignore (Fixes #933) (jrajav)
+* Fix: Correct order of arguments passed to assert.equal (fixes #945) (Michał Gołębiowski)
+* Update: Write the summary in stylish formatter in yellow if no errors (fixes #906); test coloring of messages (Michał Gołębiowski)
+* Fix: Corrects configs merging into base config (Fixes #838) (jrajav)
+* Fix: Adding check if char is non-alphabetic to new-cap (Fixes #940) (jrajav)
+* Docs: Update about page description (fixes #936) (Nicholas C. Zakas)
+* Docs: Add '/', forgotten in first commit (Fixes #931) (jrajav)
+* Update: Rule `new-cap` checks capitalized functions (fixes #904) (Aliaksei Shytkin)
+* Docs: Mention allowed semicolons in "never" mode for 'semi' rule (fixes #931) (jrajav)
+* Docs: Mention Yeoman generator in dev setup (fixes #914) (Nicholas C. Zakas)
+* Build: Remove flaky perf test from Travis (Nicholas C. Zakas)
+* Breaking: Refactor .eslintignore functionality (refs #928, fixes #901, fixes #837, fixes #853) (Nicholas C. Zakas)
+* 0.6.2 (Nicholas C. Zakas)
+* Breaking: Remove JSON support for .eslintignore (fixes #883) (icebox)
+
+v0.6.2 - May 23, 2014
+
+* 0.6.2 (Nicholas C. Zakas)
+* Fix: Adding per-environment rule configs to docs and doc validation (Fixes #918) (jrajav)
+* Docs: Updated contribution guidelines (Nicholas C. Zakas)
+* Docs: Update description of eqeqeq to mention special cases (fixes #924) (Nicholas C. Zakas)
+* Fix: block-scoped-var CatchClause handling (fixes #922) (Michael Ficarra)
+* Fix: block-scoped-var respects decls in for and for-in (fixes #919) (Michael Ficarra)
+* Update: Implement eqeqeq option "allow-null" (fixes #910) (Michał Gołębiowski)
+* Fix: new-cap should allow non-alpha characters (fixes #897) (Michael Ficarra)
+* Update: Refactor ESLintTester to fix dependency hell (fixes #602) (Nicholas C. Zakas)
+* Fix: Merge configs with ancestors (Fixes #820) (jrajav)
+* Fix: no-fallthrough should respect block statements in case statements (fixes #893) (Nicholas C. Zakas)
+* Docs: Fix layout issue in configuration docs (fixes #889) (Nicholas C. Zakas)
+* Build: Enable default-case rule (fixes #881) (icebox)
+* Build: Enable space-after-keywords (fixes #884) (icebox)
+* Fix api double emit on comment nodes (fixes #876) (Aliaksei Shytkin)
+* 0.6.1 (Nicholas C. Zakas)
+
+v0.6.1 - May 17, 2014
+
+* 0.6.1 (Nicholas C. Zakas)
+* Upgrade: Optionator to 0.4.0 (fixes #885) (Nicholas C. Zakas)
+* 0.6.0 (Nicholas C. Zakas)
+
+v0.6.0 - May 17, 2014
+
+* 0.6.0 (Nicholas C. Zakas)
+* Fix: Remove -r alias for --rule (fixes #882) (Nicholas C. Zakas)
+* Docs: Update dev setup, contributing, default-case descriptions (Nicholas C. Zakas)
+* Update: valid-jsdoc now allows you to optionally turn off parameter description checks (fixes #822) (Nicholas C. Zakas)
+* Breaking: brace-style now disallows block statements where curlies are on the same line (fixes #758) (Nicholas C. Zakas)
+* Add linting Makefile.js (fixes #870) (icebox)
+* add rule flag, closes #692 (George Zahariev)
+* Add check between rules doc and index (fixes #865) (icebox)
+* Add Build Next mention in integrations README. (icebox)
+* document new IIFE exception for no-extra parens added as part of #655 (Michael Ficarra)
+* (fixes #622) Add rule ID on documentation pages (Delapouite)
+* fixes #655: add IIFE exception to no-extra-parens (Michael Ficarra)
+* add new rule "no-new-require" (Wil Moore III)
+* exit with non-zero status when tests fail (fixes #858) (Márton Salomváry)
+* removed unicode zero width space character from messages (fixes #857) (Márton Salomváry)
+* Change: --rulesdir now can be specified multiple times (fixes #830) (Nicholas C. Zakas)
+* Update: Node 0.8 no longer supported (fixes #734) (Nicholas C. Zakas)
+* Update: Add typed arrays into builtin environment globals (fixes #846) (Nicholas C. Zakas)
+* Fix: Add prototype methods to global scope (fixes #700) (Nicholas C. Zakas)
+* Rule: no-restricted-modules (fixes #791) (Christian)
+* Upgrade: Esprima to 1.2 (fixes #842) (Nicholas C. Zakas)
+* Docs: reporting level 2 is an error (fixes #843) (Brandon Mills)
+* Upgrade: Esprima to 1.2, switch to using Esprima comment attachment (fixes #730) (Nicholas C. Zakas)
+* Fix: Semi rule incorrectly flagging extra semicolon (fixes #840) (Nicholas C. Zakas)
+* Build: Update Travis to only test Node 0.10 (refs #734) (Nicholas C. Zakas)
+* Add "nofunc" option (fixes #829) (Conrad Zimmerman)
+* Rule: no-inner-declarations (fixes #587) (Brandon Mills)
+* Rule 'block-scoped-var': correct scope for functions, arguments (fixes #832) (Aliaksei Shytkin)
+* Rule: default-case (fixes #787) (Aliaksei Shytkin)
+* Ignored files are excluded unless --force is passed on the CLI (Nick Fisher)
+* Fixes a typo and a broken link in the documentation (Nick Fisher)
+* Replaces .some() with .indexOf() where appropriate (Nick Fisher)
+* Fix correct config merge for array values (fixes #819) (Aliaksei Shytkin)
+* Remove warning about ESLint being in Alpha (Nick Fisher)
+* Adds `space-after-keywords` rule (fixes #807) (Nick Fisher)
+* Rule: no-lonely-if (fixes #790) (Brandon Mills)
+* Add ignore comments in file (fixes #305) (Aliaksei Shytkin)
+* 0.5.1 (Nicholas C. Zakas)
+* Change: no-unused-vars default to 'all' (fixes #760) (Nicholas C. Zakas)
+
+v0.5.1 - April 17, 2014
+
+* 0.5.1 (Nicholas C. Zakas)
+* Fix general config not to be modified by comment config in files (fixes #806) (Aliaksei Shytkin)
+* SVG badges (Ryuichi Okumura)
+* fixes #804: clean up implementation of #803 (which fixed #781) (Michael Ficarra)
+* Build: Fix perf test to take median of three runs (fixes #781) (Nicholas C. Zakas)
+* Fix: --reset will now properly ignore default rules in environments.json (fixes #800) (Nicholas C. Zakas)
+* Docs: Updated contributor guidelines (Nicholas C. Zakas)
+* Added Mocha global variables for TDD style. Fixes #793. (Golo Roden)
+* Rule: no-sequences (fixes #561) (Brandon Mills)
+* Change .eslintingore to plain text (fixes #761) (Brandon Mills)
+* Change 'no-spaced-func' message (fixes #762) (Aliaksei Shytkin)
+* Rule 'block-scoped-var' works correct when object inits (fixes #783) (Aliaksei Shytkin)
+* Build: Always build docs site on top of origin/master (Nicholas C. Zakas)
+* 0.5.0 (Nicholas C. Zakas)
+
+v0.5.0 - April 10, 2014
+
+* 0.5.0 (Nicholas C. Zakas)
+* Build: Bump perf limit so Travis won't fail every time (fixes #780) (Nicholas C. Zakas)
+* Add tests to cover 100% of eslint.js (Aliaksei Shytkin)
+* Fix: Make sure no-path-concat doesn't flag non-concat operations (fixes #776) (Nicholas C. Zakas)
+* Rule 'no-unused-var' in functional expression with identifier (fixes #775) (Aliaksei Shytkin)
+* Rule: valid-typeof (Ian Christian Myers)
+* Add global cli flag (ref #692) (Brandon Mills)
+* update to latest Optionator (George Zahariev)
+* Add options for rule 'no-unused-vars' to check all arguments in functions (fixes #728) (Aliaksei Shytkin)
+* Fix: Cleanup package.json (Nicholas C. Zakas)
+* New: Experimental support for CSS Auron (fixes #765) (Nicholas C. Zakas)
+* Lint tests on build (fixes #764) (Aliaksei Shytkin)
+* Rule block-scoped-var works correct with object properties (fixes #755) (Aliaksei Shytkin)
+* Breaking: implement eslint-env and remove jshint/jslint environment comment support (fixes #759) (Aliaksei Shytkin)
+* readme: npm i -> npm install (Linus Unnebäck)
+* Add env flag to cli options summary (fixes #752) (Brandon Mills)
+* Fix: Give the perf test a better calculated budget (fixes #749) (Nicholas C. Zakas)
+* give the `env` flag type `[String]`, improve code (fixes #748) (George Zahariev)
+* fixes #735: add new, more efficient getTokens interfaces (Michael Ficarra)
+* Add --env cli flag (ref #692) (Brandon Mills)
+* Fixes #740 - Make sure callbacks exist before marking them as 'handled'. (mstuart)
+* fixes #743: wrap-regex rule warns on regex used in dynamic member access (Michael Ficarra)
+* replace tab indents with 4 spaces in lib/rules/handle-callback-err.js (Michael Ficarra)
+* Adding homepage and bugs links to package.json (Peter deHaan)
+* JSDoc for rules (Anton Rudeshko)
+* 0.4.5 (Nicholas C. Zakas)
+
+v0.4.5 - March 29, 2014
+
+* 0.4.5 (Nicholas C. Zakas)
+* Build: Add perf check into Travis build to better monitor performance regressions (fixes #732) (Nicholas C. Zakas)
+* Fix: Make sure semi reports correct location of missing semicolon (fixes #726) (Nicholas C. Zakas)
+* Add --no-eslintrc cli flag (ref #717) (Brandon Mills)
+* Fix #716 crash with reset flag (Brandon Mills)
+* Fixed JSON formatting and highlighting (Anton Rudeshko (Tesla))
+* fixes #723: block-scoped-var throws on unnamed function expression (Michael Ficarra)
+* Fix: Make stroustrup brace-style closing message make sense (fixes #719) (Nicholas C. Zakas)
+* no-comma-dangle reports correct line number (Andrey Popp)
+* Upgrade: Esprima to 1.1.1 and EScope to 1.0.1 (fixes #718) (Nicholas C. Zakas)
+* Add reset cli flag (refs #692) (Brandon Mills)
+* Relax eqeqeq null check (fixes #669) (Brandon Mills)
+* 0.4.4 (Nicholas C. Zakas)
+* New Rule: handle-callback-err (fixes #567) (Jamund Ferguson)
+
+v0.4.4 - March 25, 2014
+
+* 0.4.4 (Nicholas C. Zakas)
+* Fix no-used-vars to report FunctionExpression params (fixes #697). (Andrey Popp)
+* fixes #711: eslint reports wrong line number for files with shebang (Michael Ficarra)
+* Fix for no-unused-vars and MemberExpression (Andrey Popp)
+* added no-warning-comments rule (Alexander Schmidt)
+* fixes #699: brace-style does not check function expressions (Michael Ficarra)
+* rewrite block-scoped-var (Michael Ficarra)
+* recommend using hasOwnProperty from Object.prototype in guard-for-in docs (Michael Ficarra)
+* change conf/environments.json spacing to be simpler and more consistent (Michael Ficarra)
+* Update API to use context.getFilename() instead of .filename. (Loren Segal)
+* Small changes, JSDoc is clarified (Aliaksei Shytkin)
+* Move FileFinder to separate file (Aliaksei Shytkin)
+* Cache if file is not found (Aliaksei Shytkin)
+* Use cache on config files seach (Aliaksei Shytkin)
+* Added .eslintignore to load from parents folders (fixes #681) (Aliaksei Shytkin)
+* fix 'node-modules' typo in docs (Fred K. Schott)
+* Upgrade to the latest version of doctrine. (Brian Di Palma)
+* Document optional filename and default it to `input`. (Loren Segal)
+* Fix: Compatibility for Node 0.8 (Nicholas C. Zakas)
+* Update: Makefile.js now uses shelljs-nodecli (Nicholas C. Zakas)
+* #681 apply all .eslintignore exclusions (Aliaksei Shytkin)
+* Add RuleContext.filename property (for eslint/eslint#468). (Loren Segal)
+* 0.4.3 (Nicholas C. Zakas)
+
+v0.4.3 - March 18, 2014
+
+* 0.4.3 (Nicholas C. Zakas)
+* fixes #682: rewrite no-constant-condition rule (Michael Ficarra)
+* Fixes #673 allow configuration of @return errors via requireReturn - (fixes #673) (Brian Di Palma)
+* Tweaking inline code formatting for "if, while, dowhile" (Peter deHaan)
+* Fixes #677 getJSDocComment() should not search beyond FunctionExpression or FunctionDeclaration parent nodes. (Brian Di Palma)
+* Relaxed enforcement of camelcase rule (Ian Christian Myers)
+* Fixing issue #675. Incorrect triggering of no-else-return rule. (Brian Di Palma)
+* Added style option for wrap-iife (Mathias Schreck)
+* Fix: Issues with named function expressions in no-unused-vars and no-shadow (fixes #662) (Nicholas C. Zakas)
+* Update: camelcase rule now doesn't flag function calls (fixes #656) (Nicholas C. Zakas)
+* Updating documentation description for: no-space-before-semi rule, changing rules to exempt strings with semicolons and test for that condition. Fixes #629. (Jonathan Kingston)
+* Adding in rule no-space-before-semi to prevent spaces before semicolons. fixes #629 (Jonathan Kingston)
+* show NPM version (Paul Verest)
+* adapt code formatting (Mathias Schreck)
+* Added a TextMate 2 integration to the docs (Nate Silva)
+* 0.4.2 (Nicholas C. Zakas)
+
+v0.4.2 - March 3, 2014
+
+* 0.4.2 (Nicholas C. Zakas)
+* fixes #651: disable no-catch-shadow rule in node environment (Michael Ficarra)
+* Fixed context.report message parsing (Ian Christian Myers)
+* fixe #648: wrap-iife rule should actually check that IIFEs are wrapped (Michael Ficarra)
+* Added "stroustrup" option for brace-style (Ian Christian Myers)
+* 0.4.1 (Nicholas C. Zakas)
+
+v0.4.1 - February 27, 2014
+
+* 0.4.1 (Nicholas C. Zakas)
+* Created space-in-brackets rule (Ian Christian Myers)
+* Update: Allow valid-jsdoc to specify replacement tags (fixes #637) (Nicholas C. Zakas)
+* Fix: Ensure getJSDocComment() works for all function declarations (fixes #638) (Nicholas C. Zakas)
+* Added broccoli-eslint to integration docs (Christian)
+* fixes #634: getters/setters shouldn't trigger no-dupe-keys (Michael Ficarra)
+* Update: semi to also enforce not using semicolons (fixes #618) (Nicholas C. Zakas)
+* New Rule: no-constant-condition  - removed SwitchStatement discriminant check  - removed AssignmentExpression with right Identifier  - fixed copy paste error  - added DoWhileStatement, ForStatement based on discussion: https://github.com/eslint/eslint/pull/624 (fixes #621) (Christian)
+* New Rule: no-constant-condition (fixes #621) (Christian)
+* Adding mimosa-eslint to Build System list (dbashford)
+* Fix: Make sure semi flags return statements without a semicolon (fixes #616) (Nicholas C. Zakas)
+* Fix: stylish formatter blue text -> white text (fixes #607) (Nicholas C. Zakas)
+* Fix: radix rule should warn (not throw error) when parseInt() is called without arguments (fixes #611) (Nicholas C. Zakas)
+* Update README.md (Dmitry)
+* Adding JSDoc comments for TAP format helper functions (Jonathan Kingston)
+* Updating documentation to include TAP format option (Jonathan Kingston)
+* Fixing validation issues to TAP formatter (Jonathan Kingston)
+* Adding TAP formatter and basic tests (Jonathan Kingston)
+* Docs: Updated integrations page (Nicholas C. Zakas)
+* 0.4.0 (Nicholas C. Zakas)
+
+v0.4.0 - February 12, 2014
+
+* 0.4.0 (Nicholas C. Zakas)
+* Change: Switch :after to :exit (fixes #605) (Nicholas C. Zakas)
+* Fix: Make sure no-unused-vars doesn't get confused by nested functions (fixes #584) (Nicholas C. Zakas)
+* Update: .eslintrc to check more things (Nicholas C. Zakas)
+* Fix: Make sure JSDoc parser accepts JSDoc3-style optional parameters (Nicholas C. Zakas)
+* Docs: Update documentation with linking instructions for ESLintTester (Nicholas C. Zakas)
+* New Rule: valid-jsdoc (fixes #536) (Nicholas C. Zakas)
+* #595 improved func-names documentation (Kyle Nunery)
+* #595 added more func-names tests (Kyle Nunery)
+* #595 fix rule message and add more tests (Kyle Nunery)
+* use optionator for option parsing, not optimist (George Zahariev)
+* Include instructions for working with ESLintTester (Nicholas C. Zakas)
+* #595 remove needless 'function Foo() {}' in tests (Kyle Nunery)
+* #595 fix whitespace (Kyle Nunery)
+* #595 fix markdown for js code blocks (Kyle Nunery)
+* Adding information about Yeomen generator (Ilya Volodin)
+* #595 add docs for rule func-names (Kyle Nunery)
+* #595 add func-names rule (Kyle Nunery)
+* migrate variables array to map (Brandon Mills)
+* Perf: Move try-catch out of verify() function to allow V8 optimization (refs #574) (Nicholas C. Zakas)
+* Docs: Added instructions for running npm run profile (Nicholas C. Zakas)
+* refactor variable name lookup into a separate function (Brandon Mills)
+* optimize findVariable() in no-unused-vars (Brandon Mills)
+* move to tests/bench (Chris Dickinson)
+* add `npm run profile`. (Chris Dickinson)
+* #586 refactor based on https://github.com/eslint/eslint/pull/590#discussion_r9476367 (Christian)
+* #586 added no-unreachable jsdoc, documentation note on hoisting case (Christian)
+* #586 add hoisting check to no-unreachable (Christian)
+* readme: Remove stray asterisk (Timo Tijhof)
+* #580 Remove eslint.getAllComments(), related docs, related tests (Christian)
+* Added test for bug fix #582. Test Passes (Shmueli Englard)
+* Added curly braces to if statment (Shmueli Englard)
+* Added new test for fix to #582 (fixes 582) (Shmueli Englard)
+* Bug #582: Added check if node.value isn't a string just exit (Shmueli Englard)
+* Update Rule: implement curly options for single-statement bodies (fixes #511) (Nicholas C. Zakas)
+* New Rule: no-extra-boolean-cast (fixes #557) (Brandon Mills)
+* New Rule: no-sparse-arrays (fixes #499) (Nicholas C. Zakas)
+* Fix: no-spaced-func is now an error (Nicholas C. Zakas)
+* New Rule: no-process-exit (fixes #568) (Nicholas C. Zakas)
+* New Rule: no-labels (fixes #550) (Nicholas C. Zakas)
+* New Rule: no-lone-blocks (fixes #512) (Brandon Mills)
+* Added Emacs/Flycheck integration (Nikolai Prokoschenko)
+* Build: Add perf test (Nicholas C. Zakas)
+* Fix: no-cond-assign shouldn't throw error when there's a for loop with an empty conditional (fixes #53) (Nicholas C. Zakas)
+* Docs: Add docs for no-regex-spaces and all doc errors now break build (closes #562) (Nicholas C. Zakas)
+* Rename: regex-spaces to no-regex-spaces (Nicholas C. Zakas)
+* Docs: Add docs for no-underscore-dangle (refs #562) (Nicholas C. Zakas)
+* Docs: Add docs for no-undef-init (refs #562) (Nicholas C. Zakas)
+* Docs: Add docs for no-return-assign (refs #562) (Nicholas C. Zakas)
+* Fix: Misspelling in no-return-assign message (Nicholas C. Zakas)
+* Docs: Add docs for no-new-wrappers (refs #562) (Nicholas C. Zakas)
+* Docs: Add docs for no-new-object (refs #562) (Nicholas C. Zakas)
+* Docs: Add docs for no-implied-eval (refs #562) (Nicholas C. Zakas)
+* Docs: Updated documentation for developing rules (Nicholas C. Zakas)
+* Testing: Move ESLintTester to be external dependency (fixes #480) (Nicholas C. Zakas)
+* Docs: Add list of known integrations (Nicholas C. Zakas)
+* Fix #570 (dmp42)
+* document no-array-constructor rule (Michael Ficarra)
+* fixes #500: no-array-constructor should not flag 1-argument construction (Michael Ficarra)
+* fixes #501: no-array-constructor recognises CallExpression form (Michael Ficarra)
+* rename no-new-array rule to no-array-constructor; ref #501 (Michael Ficarra)
+* Fix: Make radix rule warn on invalid second parameter (fixes #563) (Nicholas C. Zakas)
+* Docs: Added no-floating-decimal docs (refs #562) (Nicholas C. Zakas)
+* New Rule: no-path-concat (fixes #540) (Nicholas C. Zakas)
+* Docs: Add some missing rule docs (refs #562) (Nicholas C. Zakas)
+* Fix: CLI should not output anything when there are no warnings (fixes #558) (Nicholas C. Zakas)
+* New Rule: no-yoda (fixes #504) (Nicholas C. Zakas)
+* New Rule: consistent-return (fixes #481) (Nicholas C. Zakas)
+* Rewrite configuration documentation to include information about globals (fixes #555) (Nicholas C. Zakas)
+* Allow YAML configuration files (fixes #491) (Nicholas C. Zakas)
+* 0.3.0 (Nicholas C. Zakas)
+
+v0.3.0 - January 20, 2014
+
+* 0.3.0 (Nicholas C. Zakas)
+* Config: Allow comments in JSON configuration files (fixes #492) (Nicholas C. Zakas)
+* Bug: max-len fix to report correct line number (fixes #552) (Nicholas C. Zakas)
+* Build: Use browserify to create browser-ready ESLint (fixes #119) (Nicholas C. Zakas)
+* Docs: Ensure all rules have entry on top-level rules index page (Nicholas C. Zakas)
+* Docs: Add docs for no-fallthrough rule (Nicholas C. Zakas)
+* Update README.md (Peter deHaan)
+* Update README.md (Peter deHaan)
+* Update package.json (Peter deHaan)
+* Docs: Added documentation for semi rule (Nicholas C. Zakas)
+* Build: Reset branch coverage target (Nicholas C. Zakas)
+* Update build system to generate eslint.org during release (Nicholas C. Zakas)
+* Updated setup doc (Nicholas C. Zakas)
+* Fix #525 & #528 (Mangled Deutz)
+* Improve no-negated-in-lhs description (David Bruant)
+* Fixing typo (David Bruant)
+* Update no-new.md (Tamas Fodor)
+* Update no-extra-semi.md (Tamas Fodor)
+* Fixing broken links in documentation (Ilya Volodin)
+* Update about page (Nicholas C. Zakas)
+* Site generation build step and documentation updates to support it (fixes #478) (Nicholas C. Zakas)
+* Change message for brace-style rule (fixes #490) (Nicholas C. Zakas)
+* Add question about ES6 support to FAQ (fixes #530) (Nicholas C. Zakas)
+* Set unlimited number of listeners for event emitter (fixes #524) (Nicholas C. Zakas)
+* Add support for comment events (fixes #531) Add :after events for comments (Nicholas C. Zakas)
+* Add :after events for comments (Nicholas C. Zakas)
+* Allow config files to have any name (fixes #486). (Aparajita Fishman)
+* List available formatters (fixes #533). (Aparajita Fishman)
+* Add support for comment events (fixes #531) (Nicholas C. Zakas)
+* Add Stylish formatter and make it default. Fixes #517 (Sindre Sorhus)
+* Fix missing code exit (Mangled Deutz)
+* Added unit test for calling Config.getConfig with no arguments. (Aparajita Fishman)
+* Typo (Mangled Deutz)
+* Fixed docs typo (Nicholas C. Zakas)
+* Mark functions as used when any method is called on them (Nicholas C. Zakas)
+* Fixed: Config.getConfig is called either with a file path or with no args (fixes #520) (Aparajita Fishman)
+* Fix minor bug in no-empty rule (Nicholas C. Zakas)
+* add more info for failure messages (Nicholas C. Zakas)
+* Add ruleId to all formatters output (fixes #472) (Nicholas C. Zakas)
+* Remove unused code (Nicholas C. Zakas)
+* Correctly handle case with both finally and catch in no-empty (Nicholas C. Zakas)
+* Update documentation for no-unused-vars (Nicholas C. Zakas)
+* Ensure that bound function expressions are reported as being used (fixes #510) (Nicholas C. Zakas)
+* Allow empty catch/finally blocks (fixes #514) and update documentation (fixes #513) (Nicholas C. Zakas)
+* Updated contribution guidelines (Nicholas C. Zakas)
+* Add default setting for no-cond-assign (Nicholas C. Zakas)
+* Add build step to check rule consistency (Nicholas C. Zakas)
+* update docs: explicit cli args are exempt from eslintignore exclusions (Michael Ficarra)
+* fixes #505: no-cond-assign should ignore doubly parenthesised tests (Michael Ficarra)
+* Renamed unnecessary-strict to no-extra-strict (Nicholas C. Zakas)
+* Fixed missing documentation links (Nicholas C. Zakas)
+* Add build task to check for missing docs and tests for rules (Nicholas C. Zakas)
+* Slight reorganization of rule groups (Nicholas C. Zakas)
+* Added one-var and sorted some rules (Nicholas C. Zakas)
+* Updated Travis badge for new location (Nicholas C. Zakas)
+* fixes #494: allow shebangs in processed JS files (Michael Ficarra)
+* fixes #496: lint ignored files when explicitly specified via the CLI (Michael Ficarra)
+* More tests (Ilya Volodin)
+* Upgrade Istanbul (Ilya Volodin)
+* fixes #495: holey arrays cause no-comma-dangle rule to throw (Michael Ficarra)
+* Documentation and minor changes (Ilya Volodin)
+* Adding missing package registration (Ilya Volodin)
+* Adding support for .eslintignore and .jshintignore (Closes #484) (Ilya Volodin)
+* fixes #482: brace-style bug with multiline conditions (Michael Ficarra)
+* Switching Travis to use ESLint (Closes #462) (Ilya Volodin)
+* 0.2.0 (Nicholas C. Zakas)
+
+v0.2.0 - January 1, 2014
+
+* 0.2.0 (Nicholas C. Zakas)
+* Bump code coverage checks (Nicholas C. Zakas)
+* Take care of unreachable code in case statement (Nicholas C. Zakas)
+* Updated rule messaging and added extra tests (Nicholas C. Zakas)
+* Fixing eslint errors and unittests (Ilya Volodin)
+* Rule: max-nested-callbacks (Ian Christian Myers)
+* Fix fall-through rule with nested switch statements (fixes #430) (Nicholas C. Zakas)
+* Fixed trailing comma (Nicholas C. Zakas)
+* Added more tests for func-style (Nicholas C. Zakas)
+* Fixed documentation for func-style (Nicholas C. Zakas)
+* Fixed linting error (Nicholas C. Zakas)
+* Rule to enforce function style (fixes #460) (Nicholas C. Zakas)
+* Rule is off by default. Updated documentation (Ilya Volodin)
+* Rule: sort variables. Closes #457 (Ilya Volodin)
+* Update architecture.md (Nicholas C. Zakas)
+* Change quotes option to avoid-escapes and update docs (fixes #199) (Brandon Payton)
+* Add allow-avoiding-escaped-quotes option to quotes rule (fixes #199) (Brandon Payton)
+* Update no-empty-class.md (Nicholas C. Zakas)
+* Updated titles on all rule documentation (fixes #348) (Nicholas C. Zakas)
+* Fixing eslint errors in codebase (Ilya Volodin)
+* fixes #464: space-infix-ops checks for VariableDeclarator init spacing (Michael Ficarra)
+* Add options to no-unused-vars. Fixes #367 (Ilya Volodin)
+* rename escape function to xmlEscape in checkstyle formatter (Michael Ficarra)
+* The semi rule now reports correct line number (Ian Christian Myers)
+* context.report now takes optional location (Ian Christian Myers)
+* fixes #454: escape values for XML in checkstyle formatter (Michael Ficarra)
+* Add color to Mocha test reporting (Ian Christian Myers)
+* Rule no-nested-ternary (Ian Christian Myers)
+* Fixing no-unused-var and no-redeclare (Ilya Volodin)
+* fixes #449: no-mixed-requires throws TypeError when grouping is enabled (Michael Ficarra)
+* Fixed reported line number for trailing comma error (Ian Christian Myers)
+* Update doc title for quote (Matthew DuVall)
+* fixes #446: join paths without additional delimiters (Michael Ficarra)
+* docs: add documentation for quotes rule (Matthew DuVall)
+* minor style changes to lib/rules/space-infix-ops.js as requested in #444 (Michael Ficarra)
+* remove "function invalid(){ return D }" from some tests (Michael Ficarra)
+* fixes #429: require spaces around infix operators; enabled by default (Michael Ficarra)
+* simplify fix for #442 (Michael Ficarra)
+* Fix broken test, ensure tests get run before a release is pushed (Nicholas C. Zakas)
+* 0.1.4 (Nicholas C. Zakas)
+
+v0.1.4 - December 5, 2013
+
+* 0.1.4 (Nicholas C. Zakas)
+* Add release scripts to package.json (Nicholas C. Zakas)
+* Fixed release error in Makefile (Nicholas C. Zakas)
+* Fix JSHint warnings (Nicholas C. Zakas)
+* Make sure 'default' isn't flagged by no-space-returns-throw rule (fixes #442) (Nicholas C. Zakas)
+* Fixing documentation (Ilya Volodin)
+* Fixing disabling rules with invalid comments Closes #435 (Ilya Volodin)
+* improve assertion on wrong number of errors (Christoph Neuroth)
+* fixes #431: no-unused-expressions should not flag statement level void (Michael Ficarra)
+* fixes #437: fragile no-extend-native rule (Michael Ficarra)
+* change space-* rule documentation headers to be more descriptive (Michael Ficarra)
+* Moved to tabs, added comments, a few more tests (Jamund Ferguson)
+* split GH-332 rule into space-unary-word-ops and space-return-throw-case (Michael Ficarra)
+* fixes #346: validate strings passed to the RegExp constructor (Michael Ficarra)
+* change some documentation extensions from js to md (Michael Ficarra)
+* fixes #332: unary word operators must be followed by whitespace (Michael Ficarra)
+* Add some docs (Jamund Ferguson)
+* DRYing cli tests and improving code coverage (Ilya Volodin)
+* fixes #371: add no-shadow-restricted-names rule (Michael Ficarra)
+* Added Support for Object.defineProperty() checking (Jamund Ferguson)
+* fixes #333: add rule to disallow gratuitously parenthesised expressions (Michael Ficarra)
+* improve rule test coverage (Michael Ficarra)
+* No Extend Native (Jamund Ferguson)
+* change getTokens 2nd/3rd arguments to count tokens, not characters (Michael Ficarra)
+* fixes #416: no-fallthrough flagging last case + reporting wrong line num (Michael Ficarra)
+* fixes #415: fix unnecessary-strict rule false positives (Michael Ficarra)
+* Add missing dependency (Nicholas C. Zakas)
+* Update docs related to running unit tests (Nicholas C. Zakas)
+* Add JSHint as missing dependency (Nicholas C. Zakas)
+* Switch to using ShellJS makefile (fixes #418) (Nicholas C. Zakas)
+* Updated documentation to reflect test changes (refs #417) (Nicholas C. Zakas)
+* Change to eslintTester.addRuleTest (fixes #417) (Nicholas C. Zakas)
+* Fix false positives for no-script-url (fixes #400) (Nicholas C. Zakas)
+* Fix lint warning (Nicholas C. Zakas)
+* Fixing ESLint warnings, introducing Makefile.js (not yet wired in) (Nicholas C. Zakas)
+* fixes #384: include builtin module list to avoid repl dependency (Michael Ficarra)
+* 0.1.3 (Nicholas C. Zakas)
+
+v0.1.3 - November 25, 2013
+
+* 0.1.3 (Nicholas C. Zakas)
+* Updated changelog (Nicholas C. Zakas)
+* Vows is gone. Mocha is now default (Ilya Volodin)
+* fixes #412: remove last remaining false positives in no-spaced-func (Michael Ficarra)
+* fixes #407: no-spaced-func rule flagging non-argument-list spaced parens (Michael Ficarra)
+* Add no-extra-semi to configuration (fixes #386) (Nicholas C. Zakas)
+* Converting formatter tests and core (Ilya Volodin)
+* Don't output anything when there are no errors in compact formatter (fixes #408) (Nicholas C. Zakas)
+* Removing Node 0.11 test - it fails all the time (Nicholas C. Zakas)
+* Completing conversion of rule's tests to mocha (Ilya Volodin)
+* added mocha conversion tests for strict, quote-props and one-var; enhanced one of the invalid one-var tests that was expecting two messages (Michael Paulukonis)
+
+
+v0.1.2 - November 23, 2013
+
+* 0.1.2 (Nicholas C. Zakas)
+* added mocha tests for radix and quotes; fixed some of the internals on quotes from vows annotations (Michael Paulukonis)
+* added tests for regex-spaces, strict, unnecessary-strict; fixed some types in overview/author notes in other tests. (Michael Paulukonis)
+* Converting unittests to mocha (Ilya Volodin)
+* mocha conversions of tests for 'use-isnan' and 'wrap-iife' (Michael Paulukonis)
+* added mocha tests semi.js and wrap-regex.js (Michael Paulukonis)
+* Converting more tests to mocha (Ilya Volodin)
+* Update CONTRIBUTING.md (Nicholas C. Zakas)
+* Cleaning up eslintTester (Ilya Volodin)
+* DRYing unittests and converting them to mocha (Ilya Volodin)
+* Reformatted Gruntfile (Nicholas C. Zakas)
+* Add tests to config load order: base, env, user. (icebox)
+* Fixing indent in gruntfile (Ilya Volodin)
+* Removing jake, adding Grunt, Travis now runs grunt (Ilya Volodin)
+* Add rules per environments to config. (icebox)
+* Add globals property to the environments. (icebox)
+* Fix error about IIFE if the function is in a new (Marsup)
+* Fix a broken link in the docs (Brian J Brennan)
+* Add test coverage for additional cases, fix open paren at beginning of expr (Matthew DuVall)
+* Fixing no-undef for eval use case (Ilya Volodin)
+* fixes #372: disallow negated left operand in `in` operator (Michael Ficarra)
+* Fixing no-self-compare rule to check for operator (Ilya Volodin)
+* bug: open parens in args causes no-spaced-func to trigger (Matthew DuVall)
+* fixes #369: restrict UnaryExpressions to delete in no-unused-expressions (Michael Ficarra)
+* Make sure delete operator isn't flagged as unused expression (fixes #364) (Nicholas C. Zakas)
+* Don't flag ++ or -- as unused expressions (fixes #366) (Nicholas C. Zakas)
+* Ensure that 'use strict' isn't flagged as an unused expression (fixes #361) (Nicholas C. Zakas)
+* Increase test coverage for strict-related rules (refs #361) (Nicholas C. Zakas)
+* Up code coverage numbers (Nicholas C. Zakas)
+* Fixes error in new-cap rule when 'new' is used without a constructor (fixes #360) (Nicholas C. Zakas)
+* added files array in package json (Christian)
+* removed unused jshint dependency (Christian)
+* Add test coverage for new Foo constructor usage (Matt DuVall)
+* Pull code coverage up by removing unused method (Matt DuVall)
+* recognise CallExpression variant of RegExp ctor in no-control-regex rule (Michael Ficarra)
+* Merge smart-eqeqeq into eqeqeq (Matt DuVall)
+* Catch additional cases for a.b, new F, iife (Matt DuVall)
+* 0.2.0-dev (Nicholas C. Zakas)
+* Version 0.1.0 (Nicholas C. Zakas)
+* rule: no-spaced-func disallow spaces between function identifier and application (Matt DuVall)
+
+v0.1.1 - November 09, 2013
+
+* Ensure mergeConfigs() doesn't thrown an error when keys are missing in base config (fixes #358) (Nicholas C. Zakas)
+
+v0.1.0 - November 03, 2013
+
+* Version 0.1.0 (Nicholas C. Zakas)
+* Updated Readme for v0.1.0 (Nicholas C. Zakas)
+* Bump code coverage verification to 95% across the board (Nicholas C. Zakas)
+* Fixed broken links (Nicholas C. Zakas)
+* Added information about runtime rules (Nicholas C. Zakas)
+* Added documentation about configuration files (Nicholas C. Zakas)
+* Added description of -v option (Nicholas C. Zakas)
+* Updated architecture documentation (Nicholas C. Zakas)
+* Fix bug in no-control-regex (fixes #347) (Nicholas C. Zakas)
+* Fix link to architecture doc in readme (azu)
+* Rule: No control characters in regular expressions (fixes #338) (Nicholas C. Zakas)
+* Add escaping \= test (Matt DuVall)
+* Add docs for rule (Matt DuVall)
+* rule: no-div-regex for catching ambiguous division operators in regexes (Matt DuVall)
+* Change context-var to block-scoped-var (Matt DuVall)
+* Implement config.globals (Oleg Grenrus)
+* Add 'config-declared global' test (Oleg Grenrus)
+* Adding ability to separate rules with comma (Ilya Volodin)
+* Added rule for missing 'use strict' (fixes #321) (Nicholas C. Zakas)
+* Fixing unittests and finishing code (Ilya Volodin)
+* Disabling/enabling rules through comments (Ilya Volodin)
+* Rename rule to context-var and add documentation (Matt DuVall)
+* Added link to no-global-strict doc in readme (Nicholas C. Zakas)
+* Add try-catch scoping with tests (Matt DuVall)
+* Fix linting error (Matt DuVall)
+* Store FunctionDeclarations in scope as they can be used as literals (Matt DuVall)
+* Fix to use getTokens and add test for MemberExpression usage (Matt DuVall)
+* rule: block-scope-var to check for variables declared in block-scope (Matt DuVall)
+* no-unused-expressions rule: add test and doc mention for `a && b()` (Michael Ficarra)
+* rule: wrap-regex for parens around regular expression literals (Matt DuVall)
+* fixes #308: implement no-unused-expressions rule; ref. jshint rule W030 (Michael Ficarra)
+* Updated change log script to filter out merge messages (Nicholas C. Zakas)
+* Updated changelog (Nicholas C. Zakas)
+* 0.1.0-dev (Nicholas C. Zakas)
+
+v0.0.9 - October 5, 2013
+
+* Version 0.0.9 release (Nicholas C. Zakas)
+* Added rule for no global strict mode (fixes #322) (Nicholas C. Zakas)
+* Change default on to be errors instead of warnings (fixes #326) (Nicholas C. Zakas)
+* Fixed bug where JSHint was using the wrong file in lint task (Nicholas C. Zakas)
+* Updated docs for no-unused vars rule. (Andrew de Andrade)
+* Removed console.log in tests. (Andrew de Andrade)
+* Added link to roadmap and JSHint feature parity list. (Andrew de Andrade)
+* Fixed warning when unused var declared as param in FunctionExpression/Declaration can be ignored because later param is used (Andrew de Andrade)
+* Rename test for smartereqeqeq.js to smarter-eqeqeq.js (Andrew de Andrade)
+* Keep test filename inline with rule name (Andrew de Andrade)
+* Added further instructions for multiline test cases. (Andrew de Andrade)
+* Protecting private method (Seth McLaughlin)
+* Updating look up algorithm for local config files (Seth McLaughlin)
+* Fixing ESLint errors (Ilya Volodin)
+* Implemented local default config file (Seth McLaughlin)
+* Upgrading escope version and fixing related bugs (Ilya Volodin)
+* Fixing assignment during initialization issue (Ilya Volodin)
+* add plain-English regexp description to no-empty-class rule (Michael Ficarra)
+* fixes #289: no-empty-class flags regexps with... flags (Michael Ficarra)
+* Rule: no-catch-shadow (Ian Christian Myers)
+* Update no-empty for compatibility with esprima@1.0.4 (fixes #290) (Mark Macdonald)
+* Fixing bug with _ in MemberExpression (Ilya Volodin)
+* Rule: no-func-assign (Ian Christian Myers)
+* Fix false warning from no-undef rule (fixes #283) (Mark Macdonald)
+* Adding eslint to jake (Ilya Volodin)
+* Rule no redeclare (Ilya Volodin)
+* Fixing no use before define issues (Ilya Volodin)
+* Rule: no-octal-escape (Ian Christian Myers)
+* Fix for `no-proto` and `no-iterator` false positive (Ian Christian Myers)
+* Rule: no-iterator (Ian Christian Myers)
+* Fixing type in guard-for-in documentation (Ilya Volodin)
+* Rule No use before define (Ilya Volodin)
+* Added documentation for the `no-new` rule (Ian Christian Myers)
+* Added documentation for the `no-eval` rule (Ian Christian Myers)
+* Added documentation for the `no-caller` rule (Ian Christian Myers)
+* Added documentation for the `no-bitwise` rule (Ian Christian Myers)
+* simplify no-empty-class rule (Michael Ficarra)
+* Fix `no-empty-class` false negatives (Ian Christian Myers)
+* Added documentation for the `no-alert` rule (Ian Christian Myers)
+* Added documentation for the `new-parens` rule (Ian Christian Myers)
+* Added documentation for the `max-params` rule (Ian Christian Myers)
+* Added documentation for `max-len` rule (Ian Christian Myers)
+* Created link from rules README.md to no-plusplus.md documentation (Ian Christian Myers)
+* Added documentation for `guard-for-in` rule (Ian Christian Myers)
+* Added documentation for `dot-notation` rule (Ian Christian Myers)
+* Added documentation for `curly` rule (Ian Christian Myers)
+* Updated `camelcase` rule documentation (Ian Christian Myers)
+* Added documentation for `complexity` rule (Ian Christian Myers)
+* Changed `no-dangle` documentation to `no-comma-dangle` (Ian Christian Myers)
+* Rule: no-empty-class (Ian Christian Myers)
+* Increased test coverage for max-depth (Ian Christian Myers)
+* Increased test coverage for no-shadow (Ian Christian Myers)
+* Increased test coverage on no-mixed-requires (Ian Christian Myers)
+* Added docs for eqeqeq and no-with (fixes #262) (Raphael Pigulla)
+* Create camelcase.md (Micah Eschbacher)
+* Fix issues with function in no-unused-vars (Ilya Volodin)
+* Rule: No shadow (Ilya Volodin)
+* fixes #252: semi rule errors on VariableDeclarations in ForInStatements (Michael Ficarra)
+* rule: max-len to lint maximum length of a line (Matt DuVall)
+* Fixes #249 (Raphael Pigulla)
+* Merge branch 'master' of https://github.com/beardtwizzle/eslint (Jonathan Mahoney)
+* Re-add lines that were accidentally deleted from config (Jonathan Mahoney)
+* Add support for pre-defined environment globals (re: #228) (Jonathan Mahoney)
+* Rule: no-else-return (Ian Christian Myers)
+* Re-add lines that were accidentally deleted from config (Jonathan Mahoney)
+* Add support for pre-defined environment globals (re: #228) (Jonathan Mahoney)
+* Fix no-unused-vars to report correct line numbers (Ilya Volodin)
+* Rule: no proto (Ilya Volodin)
+* Rule: No Script URL (Ilya Volodin)
+* Rule: max-depth (Ian Christian Myers)
+* Fix: Error severity for rules with options. (Ian Christian Myers)
+* Rule: No wrap func (Ilya Volodin)
+* bug: Fixes semi rule for VariableDeclaration in ForStatement (Matt DuVall)
+* Individual perf tests for rules (Ilya Volodin)
+* Fix loading rules from a rules directory (Ian Christian Myers)
+* Rule no-mixed-requires (fixes #221) (Raphael Pigulla)
+* bug: Add ForStatement for no-cond-assign check (Matthew DuVall)
+* JSLint XML formatter now escapes special characters in the evidence and reason attributes. (Ian Christian Myers)
+* Formatter: JSLint XML (Ian Christian Myers)
+* Refactored `max-statements` rule. (Ian Christian Myers)
+* Fix tests broken due to new rule message text (James Allardice)
+* Merge branch 'master' into match-jshint-messages (James Allardice)
+* Refactored `one-var` rule. (Ian Christian Myers)
+* split eslint.define into eslint.defineRule and eslint.defineRules (Michael Ficarra)
+* Removed unnecessary rules.js test. (Ian Christian Myers)
+* Rule: one-var (Ian Christian Myers)
+* Rule: No unused variables (Ilya Volodin)
+* expose interface for defining new rules at runtime without fs access (Michael Ficarra)
+* disallow 00 in no-octal rule (Michael Ficarra)
+* Increased test coverage for `lib/cli.js`. (Ian Christian Myers)
+* Increased test coverage for `lib/rules.js` (Ian Christian Myers)
+* Increased test coverage for jUnit formatter. (Ian Christian Myers)
+* scripts/bundle: output bundle+map to /build directory (Michael Ficarra)
+* add test for 0X... hex literals in no-octal tests (Michael Ficarra)
+* fixes #200: no-octals should not see leading-0 floats as violations (Michael Ficarra)
+* add back tests for loading rules from a directory (Michael Ficarra)
+* add back in ability to load rules from a directory (Michael Ficarra)
+* Increased test coverage for `complexity` rule. (Ian Christian Myers)
+* Increased test coverage for `max-params` rule. (Ian Christian Myers)
+* also output source map when generating bundle (Michael Ficarra)
+* Rule: unnecessary-strict (Ian Christian Myers)
+* Improve performance of getTokens (Ilya Volodin)
+* Performance jake task (Ilya Volodin)
+* don't force explicit listing of rules; generate listing for bundle (Michael Ficarra)
+* Rule: no-dupe-keys (Ian Christian Myers)
+* fixes #145: create a browser bundle (Michael Ficarra)
+* Fixing no-caller bug (Ilya Volodin)
+* Check for use of underscore library as an exception for var declarations (Matthew DuVall)
+* Merge branch 'master' of https://github.com/nzakas/eslint into no-underscore-dangle (Matthew DuVall)
+* Fixing spelling (Ilya Volodin)
+* Rule: no-empty-label (Ilya Volodin)
+* Add builtin globals to the global scope (fixes #185) (Mark Macdonald)
+* Rule: no-loop-func (Ilya Volodin)
+* Merge branch 'master' of https://github.com/nzakas/eslint into no-underscore-dangle (Matt DuVall)
+* Use proper node declarations and __proto__ exception (Matt DuVall)
+* Updating no-undef patch (see pull request #164) - Simplify parseBoolean() - Make knowledge of```/*jshint*/``` and ```/*global */``` internal to eslint object - Put user-declared globals in Program scope (Mark Macdonald)
+* Rule: no-eq-null (Ian Christian Myers)
+* fixed broken merge (Raphael Pigulla)
+* fixes #143 (Raphael Pigulla)
+* added consistent-this rule (Raphael Pigulla)
+* Rule: no-sync to encourage async usage (Matt DuVall)
+* Update eslint.json with no-underscore-dangle rule (Matt DuVall)
+* Rule: no-underscore-dangle for func/var declarations (Matt DuVall)
+* Warn on finding the bitwise NOT operator (James Allardice)
+* Updating no-undef patch (see pull request #164) 3. Move parsing of ```/*global */``` and ```/*jshint */``` to eslint.js (Mark Macdonald)
+* Warn on finding a bitwise shift operator (fixes #170) (James Allardice)
+* Fix broken test (James Allardice)
+* Add support for the do-while statement to the curly rule (closes #167) (James Allardice)
+* Removing nasty leading underscores (Patrick Brosset)
+* Added tests and test cases for a few files (Patrick Brosset)
+* CLI: -f now accepts a file path (Ian Christian Myers)
+* Updating no-undef patch (see pull request #164) 1. Move predefined globals to ```conf/environments.json``` 2. Move mixin() to ```lib/util.js``` (Mark Macdonald)
+* Match messages to JS[LH]int where appropriate, and ensure consistent message formatting (closes #163) (James Allardice)
+* Add support for the do-while statement to the curly rule (closes #167) (James Allardice)
+* Removing nasty leading underscores (Patrick Brosset)
+* Added tests and test cases for a few files (Patrick Brosset)
+* Merge branch 'master' of github.com:nzakas/jscheck (Nicholas C. Zakas)
+* Added acceptance criteria for rules to docs (Nicholas C. Zakas)
+* Add no-undef (fixes #6) (Mark Macdonald)
+* Fixing no-self-compare (Ilya Volodin)
+* Rule: No multiline strings (Ilya Volodin)
+* CLI refactor to remove process.exit(), file not found now a regular error message, updated formatters to handle this case (Nicholas C. Zakas)
+* Rule: no-self-compare (Ilya Volodin)
+* Rule: No unnecessary semicolons (fixes #158) (Nicholas C. Zakas)
+* Fixed error in no-ex-assign when return statement as found in catch clause (Nicholas C. Zakas)
+* Rename no-exc-assign to no-ex-assign and add to config (Nicholas C. Zakas)
+* Renamed count-spaces to regex-spaces (Nicholas C. Zakas)
+* Documentation updates (Nicholas C. Zakas)
+* Put all rules into strict mode and update docs accordingly (Nicholas C. Zakas)
+* Merge branch 'master' of github.com:nzakas/jscheck (Nicholas C. Zakas)
+* Ensure getScope() works properly when called from Program node (fixes #148) (Nicholas C. Zakas)
+* Rule: wrap-iife (Ilya Volodin)
+* add additional test for no-cond-assign rule (Stephen Murray)
+* Merge branch 'master' of github.com:nzakas/jscheck (Nicholas C. Zakas)
+* Experimental support for Jake as a build system (fixes #151) (Nicholas C. Zakas)
+* fixes #152 (Stephen Murray)
+* add docs for no-exc-assign (Stephen Murray)
+* Merge branch 'master' of https://github.com/nzakas/eslint into no-new-object-array-literals (Matt DuVall)
+* Merge branch 'master' of https://github.com/nzakas/eslint into count-spaces (Matt DuVall)
+* Added a test for getting global scope from Program node (refs #148) (Nicholas C. Zakas)
+* Add positive test case for `object.Array` (Matthew DuVall)
+* Only support space characters for repetitions (Matthew DuVall)
+* fix line length per code conventions (Stephen Murray)
+* fix indentation per code conventions (Stephen Murray)
+* fixes #149 (Stephen Murray)
+* Rule: no-ternary (Ian Christian Myers)
+* Check that the return statement has an argument before checking its type (James Allardice)
+* Rule: count-spaces for multiple spaces in regular expressions (Matt DuVall)
+* Update eslint.json configuration file for literal rules (Matt DuVall)
+* Created no-label-var rule. (Ian Christian Myers)
+* Rule: no-new-array and no-new-object (Matt DuVall)
+* Added ability to retrieve scope using escope. (Ian Christian Myers)
+* Corrected unused arguments (Patrick Brosset)
+* Reporting function complexity on function:after and using array push/pop to handle nesting (Patrick Brosset)
+* Fixing style issues discovered while npm testing (Patrick Brosset)
+* First draft proposal for a cyclomatic complexity ESLint rule (Patrick Brosset)
+* Corrected file extension on no-plusplus rule documentation. (Ian Christian Myers)
+* Documentation for no-delete-var rule. Closes #129 (Ilya Volodin)
+* Rule: max-statements (Ian Christian Myers)
+* Better documentation for the `no-plusplus` rule. (Ian Christian Myers)
+* Rule: no-plusplus (Ian Christian Myers)
+* Rule: no assignment in return statement (Ilya Volodin)
+* Updating max-params rule name (Ilya Volodin)
+* Rule: Function has too many parameters (Ilya Volodin)
+* Removing merge originals (Ilya Volodin)
+* Rebasing on master (Ilya Volodin)
+* Rule: Variables should not be deleted (Ilya Volodin)
+* Fixes incorrect reporting of missing semicolon (Ian Christian Myers)
+* Rebase against master branch (Mathias Bynens)
+* Rule to warn on use of Math and JSON as functions (James Allardice)
+* Formatter: Checkstyle (Ian Christian Myers)
+* docs: Clean up structure (Mathias Bynens)
+* Merging no-native-reassign and no-redefine (Ilya Volodin)
+* Rule: no native reassignment (Ilya Volodin)
+* 0.0.8-dev (Nicholas C. Zakas)
+* v0.0.7 released (Nicholas C. Zakas)
+* Updated Tests, etc. (Jamund Ferguson)
+* Added jUnit Support (Fixes #16) (Jamund Ferguson)
+
+v0.0.7 - July 22, 2013
+
+* 0.0.7 (Nicholas C. Zakas)
+* Add code coverage checks to npm test and update rule tests to have better coverage (Nicholas C. Zakas)
+* Fixed CLI output on serial programatic executions (Ian Christian Myers)
+* Removes line length from code style convention docs (Josh Perez)
+* Adds escapeRegExp and fixes documentation (Josh Perez)
+* Add quotes rule and test coverage for configuration options (Matt DuVall)
+* Adds templating for lint messages and refactors rules to use it (Josh Perez)
+* Fixes lint rules for unchecked test file (Josh Perez)
+* Changes dotnotation rule to match JSHint style (Josh Perez)
+* Change configInfo to options and add test coverage (Matt DuVall)
+* Merge branch 'master' of https://github.com/nzakas/eslint into optional-args-for-rule (Matt DuVall)
+* Adds dot notation lint rule (Josh Perez)
+* Strip trailing underscores in camelcase rule - Fixes #94 (Patrick Brosset)
+* add mailing list link (Douglas Campos)
+* Strip leading underscores in camelcase rule - Fixes #94 (Patrick Brosset)
+* Created no-dangle rule. (Ian Christian Myers)
+* Fixed rule name (James Allardice)
+* Make sure the callee type is Identifier (James Allardice)
+* Add rule for implied eval via setTimeout/Interval (James Allardice)
+* Fix rule name in config (James Allardice)
+* Fixes #90 -- updates docstrings (Stephen Murray)
+* Fixes issue with fs.existsSync on NodeJS 0.6 (Ian Christian Myers)
+* Fixing -c config option. (Ian Christian Myers)
+* Allow arrays to be passed as multiple args to rule (Matt DuVall)
+* Test to make sure empty case with one line break is safe (Matt DuVall)
+* Rule: The Function constructor is eval (Ilya Volodin)
+* Enabled require("eslint") and exposed out CLI. (Ian Christian Myers)
+* Adds test and fix for issue #82 (Mark Macdonald)
+* Merge branch 'master' of https://github.com/nzakas/eslint into ok (Yusuke Suzuki)
+* Created brace-style rule. (Ian Christian Myers)
+* Formatters can now process multiple files at once (Jamund Ferguson)
+* Rule: Do not use 'new' for side effects (Ilya Volodin)
+* Adds smarter-eqeqeq rule (Josh Perez)
+* Add EditorConfig file for consistent editor/IDE behavior (Jed Hunsaker)
+* Fix the positive case for no-unreachable where there is no return statement at all, or if the return is at the end. Those cases should not return any errors. The error condition was not be checked before throwing the rule error. (Joel Feenstra)
+* Adds test and fix for no-octal on 0 literal (Mark Macdonald)
+* Don't report no-empty warnings when a parent is FunctionExpression / FunctionDeclaration (Yusuke Suzuki)
+* Add api.getAncestors (Yusuke Suzuki)
+* Ensure estraverse version 1.2.0 or later (Yusuke Suzuki)
+* Fixes no-alert lint rule for non identifier calls (Josh Perez)
+* Fixes exception when init is null (Josh Perez)
+* Fixes no-octal check to only check for numbers (Josh Perez)
+* 0.0.7-dev (Nicholas C. Zakas)
+* 0.0.6 (Nicholas C. Zakas)
+* Follow the rule naming conventions (James Allardice)
+* Add rule for missing radix argument to parseInt (James Allardice)
+* Allow return, falls-through comment, and throw for falls-through (Matt DuVall)
+* Merge branch 'master' of https://github.com/nzakas/eslint into rule-fall-through (Matt DuVall)
+* Globals are not good, declare len (Matt DuVall)
+* Rule to add no-fall-through (Matt DuVall)
+
+v0.0.6 - July 16, 2013
+
+* 0.0.6 (Nicholas C. Zakas)
+* Changed semi rule to use tokens instead of source (Nicholas C. Zakas)
+* Renaming new-parens rule (Ilya Volodin)
+* Renaming no-new-wrappers rule and adding tests (Ilya Volodin)
+* Add license URL (Nick Schonning)
+* Remove unused sinon requires (Nick Schonning)
+* Remove redundant JSHint directives (Nick Schonning)
+* Rule: Do not use constructor for wrapper objects (Ilya Volodin)
+* Test node 0.11 unstable but allow it to fail (Nick Schonning)
+* Rule: Constructor should use parentheses (Ilya Volodin)
+* Fix reference to "CSS Lint" in Contributing documentation (Brian McKenna)
+* Add git attributes file for line endings (Andy Hu)
+* Rename to create an 'index' file in GH web view (Evan Goer)
+* Avoid accidentally creating a markdown link (Evan Goer)
+* Add headings and correct internal links (Evan Goer)
+* Add wiki files to docs directory (Evan Goer)
+* Add rules for leading/trailing decimal points (James Allardice)
+* Add rule to prevent comparisons with value NaN (James Allardice)
+* Fixing jshint error (Ilya Volodin)
+* Rule: no octal literals (Ilya Volodin)
+* Rule: no undefined when initializing variables (Ilya Volodin)
+* Updated CONTRIBUTING.md (Nicholas C. Zakas)
+* Make sure namespaces are honored in new-cap (Nicholas C. Zakas)
+* Make sure no-empty also checks for ';;' (Nicholas C. Zakas)
+* Add CLI option to output version (Nicholas C. Zakas)
+* Updated contribution guidelines (Nicholas C. Zakas)
+* Fixing jshint complaints. (Joel Feenstra)
+* Converting to a switch statement and declaring variables. (Joel Feenstra)
+* Added .jshintrc file (until ESLint can lint itself) and cleaned up JSHint warnings (Nicholas C. Zakas)
+* Merge branch 'master' of github.com:nzakas/jscheck (Nicholas C. Zakas)
+* A bit of cleanup (Nicholas C. Zakas)
+* Add unreachable code detection for switch cases and after continue/break. (Joel Feenstra)
+* Add support for detecting unreachable code after a throw or return statement. (Joel Feenstra)
+* Fix curly brace check when an if statement is the alternate. (Joel Feenstra)
+* Check for empty switch statements with no cases. (Matt DuVall)
+* Added CONTRIBUTING.md (Nicholas C. Zakas)
+* Added rule to check for missing semicolons (fixes #9) (Nicholas C. Zakas)
+* Verify that file paths exist before reading the file (Matt DuVall)
+* Added guard-for-in rule (fixes #1) (Nicholas C. Zakas)
+* Run linting with npm test as well (Nicholas C. Zakas)
+* Removed foo.txt (Nicholas C. Zakas)
+* Updated config file with new no-caller ID (Nicholas C. Zakas)
+* Changed name of no-arg to no-caller (Nicholas C. Zakas)
+* Increased test coverage (Nicholas C. Zakas)
+* Got npm test to work with istanbul, huzzah\! (Nicholas C. Zakas)
+* Moved /config to /conf (Nicholas C. Zakas)
+* Added script to auto-generate changelog (Nicholas C. Zakas)
+* Add `quote-props` rule (Mathias Bynens)
+* Cleaned up relationship between bin/eslint, lib/cli.js, and lib/eslint.js (Nicholas C. Zakas)
+* Add problem count to compact formatter (Nicholas C. Zakas)
+* Fix merge conflict (Nicholas C. Zakas)
+* Change reporters to formatters, add format command line option. Also added tests for compact format. (Nicholas C. Zakas)
+* Change reporters to formatters, add format command line option (Nicholas C. Zakas)
+* Start development of 0.0.6-dev (Nicholas C. Zakas)
diff --git a/tools/eslint/README.md b/tools/eslint/README.md
index dcd42cff46685a..1ccdbb9bfd4262 100644
--- a/tools/eslint/README.md
+++ b/tools/eslint/README.md
@@ -112,6 +112,7 @@ These folks keep the project moving and are resources for help.
 * Toru Nagashima ([@mysticatea](https://github.com/mysticatea))
 * Alberto Rodríguez ([@alberto](https://github.com/alberto))
 * Kai Cataldo ([@kaicataldo](https://github.com/kaicataldo))
+* Teddy Katz ([@not-an-aardvark](https://github.com/not-an-aardvark))
 
 ### Development Team
 
@@ -129,7 +130,7 @@ These folks keep the project moving and are resources for help.
 * Kevin Partington ([@platinumazure](https://github.com/platinumazure))
 * Vitor Balocco ([@vitorbal](https://github.com/vitorbal))
 * James Henry ([@JamesHenry](https://github.com/JamesHenry))
-* Teddy Katz ([@not-an-aardvark](https://github.com/not-an-aardvark))
+* Reyad Attiyat ([@soda0289](https://github.com/soda0289))
 
 ## Releases
 
diff --git a/tools/eslint/conf/eslint.json b/tools/eslint/conf/eslint-recommended.js
similarity index 93%
rename from tools/eslint/conf/eslint.json
rename to tools/eslint/conf/eslint-recommended.js
index 81f5bb8aa5ee82..63c2fc770d214a 100755
--- a/tools/eslint/conf/eslint.json
+++ b/tools/eslint/conf/eslint-recommended.js
@@ -1,7 +1,81 @@
-{
-    "parser": "espree",
-    "ecmaFeatures": {},
-    "rules": {
+/**
+ * @fileoverview Configuration applied when a user configuration extends from
+ * eslint:recommended.
+ * @author Nicholas C. Zakas
+ */
+
+"use strict";
+
+/* eslint sort-keys: ["error", "asc"], quote-props: ["error", "consistent"] */
+/* eslint-disable sort-keys */
+
+module.exports = {
+    parser: "espree",
+    ecmaFeatures: {},
+
+    rules: {
+
+        /* eslint-enable sort-keys */
+        "accessor-pairs": "off",
+        "array-bracket-spacing": "off",
+        "array-callback-return": "off",
+        "arrow-body-style": "off",
+        "arrow-parens": "off",
+        "arrow-spacing": "off",
+        "block-scoped-var": "off",
+        "block-spacing": "off",
+        "brace-style": "off",
+        "callback-return": "off",
+        "camelcase": "off",
+        "capitalized-comments": "off",
+        "class-methods-use-this": "off",
+        "comma-dangle": "off",
+        "comma-spacing": "off",
+        "comma-style": "off",
+        "complexity": "off",
+        "computed-property-spacing": "off",
+        "consistent-return": "off",
+        "consistent-this": "off",
+        "constructor-super": "error",
+        "curly": "off",
+        "default-case": "off",
+        "dot-location": "off",
+        "dot-notation": "off",
+        "eol-last": "off",
+        "eqeqeq": "off",
+        "func-call-spacing": "off",
+        "func-name-matching": "off",
+        "func-names": "off",
+        "func-style": "off",
+        "generator-star-spacing": "off",
+        "global-require": "off",
+        "guard-for-in": "off",
+        "handle-callback-err": "off",
+        "id-blacklist": "off",
+        "id-length": "off",
+        "id-match": "off",
+        "indent": "off",
+        "init-declarations": "off",
+        "jsx-quotes": "off",
+        "key-spacing": "off",
+        "keyword-spacing": "off",
+        "line-comment-position": "off",
+        "linebreak-style": "off",
+        "lines-around-comment": "off",
+        "lines-around-directive": "off",
+        "max-depth": "off",
+        "max-len": "off",
+        "max-lines": "off",
+        "max-nested-callbacks": "off",
+        "max-params": "off",
+        "max-statements": "off",
+        "max-statements-per-line": "off",
+        "multiline-ternary": "off",
+        "new-cap": "off",
+        "new-parens": "off",
+        "newline-after-var": "off",
+        "newline-before-return": "off",
+        "newline-per-chained-call": "off",
         "no-alert": "off",
         "no-array-constructor": "off",
         "no-await-in-loop": "off",
@@ -10,6 +84,7 @@
         "no-case-declarations": "error",
         "no-catch-shadow": "off",
         "no-class-assign": "error",
+        "no-compare-neg-zero": "off",
         "no-cond-assign": "error",
         "no-confusing-arrow": "off",
         "no-console": "error",
@@ -61,6 +136,7 @@
         "no-mixed-operators": "off",
         "no-mixed-requires": "off",
         "no-mixed-spaces-and-tabs": "error",
+        "no-multi-assign": "off",
         "no-multi-spaces": "off",
         "no-multi-str": "off",
         "no-multiple-empty-lines": "off",
@@ -99,20 +175,20 @@
         "no-sequences": "off",
         "no-shadow": "off",
         "no-shadow-restricted-names": "off",
-        "no-whitespace-before-property": "off",
         "no-spaced-func": "off",
         "no-sparse-arrays": "error",
         "no-sync": "off",
         "no-tabs": "off",
+        "no-template-curly-in-string": "off",
         "no-ternary": "off",
-        "no-trailing-spaces": "off",
         "no-this-before-super": "error",
         "no-throw-literal": "off",
+        "no-trailing-spaces": "off",
         "no-undef": "error",
         "no-undef-init": "off",
         "no-undefined": "off",
-        "no-unexpected-multiline": "error",
         "no-underscore-dangle": "off",
+        "no-unexpected-multiline": "error",
         "no-unmodified-loop-condition": "off",
         "no-unneeded-ternary": "off",
         "no-unreachable": "error",
@@ -129,70 +205,12 @@
         "no-useless-escape": "off",
         "no-useless-rename": "off",
         "no-useless-return": "off",
-        "no-void": "off",
         "no-var": "off",
+        "no-void": "off",
         "no-warning-comments": "off",
+        "no-whitespace-before-property": "off",
         "no-with": "off",
-        "array-bracket-spacing": "off",
-        "array-callback-return": "off",
-        "arrow-body-style": "off",
-        "arrow-parens": "off",
-        "arrow-spacing": "off",
-        "accessor-pairs": "off",
-        "block-scoped-var": "off",
-        "block-spacing": "off",
-        "brace-style": "off",
-        "callback-return": "off",
-        "camelcase": "off",
-        "capitalized-comments": "off",
-        "class-methods-use-this": "off",
-        "comma-dangle": "off",
-        "comma-spacing": "off",
-        "comma-style": "off",
-        "complexity": "off",
-        "computed-property-spacing": "off",
-        "consistent-return": "off",
-        "consistent-this": "off",
-        "constructor-super": "error",
-        "curly": "off",
-        "default-case": "off",
-        "dot-location": "off",
-        "dot-notation": "off",
-        "eol-last": "off",
-        "eqeqeq": "off",
-        "func-call-spacing": "off",
-        "func-names": "off",
-        "func-name-matching": "off",
-        "func-style": "off",
-        "generator-star-spacing": "off",
-        "global-require": "off",
-        "guard-for-in": "off",
-        "handle-callback-err": "off",
-        "id-blacklist": "off",
-        "id-length": "off",
-        "id-match": "off",
-        "indent": "off",
-        "init-declarations": "off",
-        "jsx-quotes": "off",
-        "key-spacing": "off",
-        "keyword-spacing": "off",
-        "linebreak-style": "off",
-        "line-comment-position": "off",
-        "lines-around-comment": "off",
-        "lines-around-directive": "off",
-        "max-depth": "off",
-        "max-len": "off",
-        "max-lines": "off",
-        "max-nested-callbacks": "off",
-        "max-params": "off",
-        "max-statements": "off",
-        "max-statements-per-line": "off",
-        "multiline-ternary": "off",
-        "new-cap": "off",
-        "new-parens": "off",
-        "newline-after-var": "off",
-        "newline-before-return": "off",
-        "newline-per-chained-call": "off",
+        "nonblock-statement-body-position": "off",
         "object-curly-newline": "off",
         "object-curly-spacing": ["off", "never"],
         "object-property-newline": "off",
@@ -206,6 +224,7 @@
         "prefer-const": "off",
         "prefer-destructuring": "off",
         "prefer-numeric-literals": "off",
+        "prefer-promise-reject-errors": "off",
         "prefer-reflect": "off",
         "prefer-rest-params": "off",
         "prefer-spread": "off",
@@ -219,8 +238,8 @@
         "rest-spread-spacing": "off",
         "semi": "off",
         "semi-spacing": "off",
-        "sort-keys": "off",
         "sort-imports": "off",
+        "sort-keys": "off",
         "sort-vars": "off",
         "space-before-blocks": "off",
         "space-before-function-paren": "off",
@@ -231,6 +250,7 @@
         "strict": "off",
         "symbol-description": "off",
         "template-curly-spacing": "off",
+        "template-tag-spacing": "off",
         "unicode-bom": "off",
         "use-isnan": "error",
         "valid-jsdoc": "off",
@@ -238,8 +258,7 @@
         "vars-on-top": "off",
         "wrap-iife": "off",
         "wrap-regex": "off",
-        "no-template-curly-in-string": "off",
         "yield-star-spacing": "off",
         "yoda": "off"
     }
-}
+};
diff --git a/tools/eslint/lib/ast-utils.js b/tools/eslint/lib/ast-utils.js
index 46dfebe101caa2..0f2f3d6af539e3 100644
--- a/tools/eslint/lib/ast-utils.js
+++ b/tools/eslint/lib/ast-utils.js
@@ -10,7 +10,6 @@
 //------------------------------------------------------------------------------
 
 const esutils = require("esutils");
-const lodash = require("lodash");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -24,6 +23,14 @@ const bindOrCallOrApplyPattern = /^(?:bind|call|apply)$/;
 const breakableTypePattern = /^(?:(?:Do)?While|For(?:In|Of)?|Switch)Statement$/;
 const thisTagPattern = /^[\s*]*@this/m;
 
+
+const COMMENTS_IGNORE_PATTERN = /^\s*(?:eslint|jshint\s+|jslint\s+|istanbul\s+|globals?\s+|exported\s+|jscs)/;
+const LINEBREAKS = new Set(["\r\n", "\r", "\n", "\u2028", "\u2029"]);
+const LINEBREAK_MATCHER = /\r\n|[\r\n\u2028\u2029]/;
+
+// A set of node types that can contain a list of statements
+const STATEMENT_LIST_PARENTS = new Set(["Program", "BlockStatement", "SwitchCase"]);
+
 /**
  * Checks reference if is non initializer and writable.
  * @param {Reference} reference - A reference to check.
@@ -142,7 +149,7 @@ function isInLoop(node) {
  */
 function isNullOrUndefined(node) {
     return (
-        (node.type === "Literal" && node.value === null) ||
+        module.exports.isNullLiteral(node) ||
         (node.type === "Identifier" && node.name === "undefined") ||
         (node.type === "UnaryExpression" && node.operator === "void")
     );
@@ -158,9 +165,9 @@ function isCallee(node) {
 }
 
 /**
- * Checks whether or not a node is `Reclect.apply`.
+ * Checks whether or not a node is `Reflect.apply`.
  * @param {ASTNode} node - A node to check.
- * @returns {boolean} Whether or not the node is a `Reclect.apply`.
+ * @returns {boolean} Whether or not the node is a `Reflect.apply`.
  */
 function isReflectApply(node) {
     return (
@@ -210,6 +217,15 @@ function isMethodWhichHasThisArg(node) {
     return false;
 }
 
+/**
+ * Creates the negate function of the given function.
+ * @param {Function} f - The function to negate.
+ * @returns {Function} Negated function.
+ */
+function negate(f) {
+    return token => !f(token);
+}
+
 /**
  * Checks whether or not a node has a `@this` tag in its comments.
  * @param {ASTNode} node - A node to check.
@@ -247,56 +263,145 @@ function isParenthesised(sourceCode, node) {
 }
 
 /**
- * Gets the `=>` token of the given arrow function node.
+ * Checks if the given token is an arrow token or not.
  *
- * @param {ASTNode} node - The arrow function node to get.
- * @param {SourceCode} sourceCode - The source code object to get tokens.
- * @returns {Token} `=>` token.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an arrow token.
  */
-function getArrowToken(node, sourceCode) {
-    let token = sourceCode.getTokenBefore(node.body);
+function isArrowToken(token) {
+    return token.value === "=>" && token.type === "Punctuator";
+}
 
-    while (token.value !== "=>") {
-        token = sourceCode.getTokenBefore(token);
-    }
+/**
+ * Checks if the given token is a comma token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comma token.
+ */
+function isCommaToken(token) {
+    return token.value === "," && token.type === "Punctuator";
+}
 
-    return token;
+/**
+ * Checks if the given token is a semicolon token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a semicolon token.
+ */
+function isSemicolonToken(token) {
+    return token.value === ";" && token.type === "Punctuator";
 }
 
 /**
- * Gets the `(` token of the given function node.
+ * Checks if the given token is a colon token or not.
  *
- * @param {ASTNode} node - The function node to get.
- * @param {SourceCode} sourceCode - The source code object to get tokens.
- * @returns {Token} `(` token.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a colon token.
  */
-function getOpeningParenOfParams(node, sourceCode) {
-    let token = node.id ? sourceCode.getTokenAfter(node.id) : sourceCode.getFirstToken(node);
+function isColonToken(token) {
+    return token.value === ":" && token.type === "Punctuator";
+}
 
-    while (token.value !== "(") {
-        token = sourceCode.getTokenAfter(token);
-    }
+/**
+ * Checks if the given token is an opening parenthesis token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening parenthesis token.
+ */
+function isOpeningParenToken(token) {
+    return token.value === "(" && token.type === "Punctuator";
+}
+
+/**
+ * Checks if the given token is a closing parenthesis token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing parenthesis token.
+ */
+function isClosingParenToken(token) {
+    return token.value === ")" && token.type === "Punctuator";
+}
 
-    return token;
+/**
+ * Checks if the given token is an opening square bracket token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening square bracket token.
+ */
+function isOpeningBracketToken(token) {
+    return token.value === "[" && token.type === "Punctuator";
 }
 
-const lineIndexCache = new WeakMap();
+/**
+ * Checks if the given token is a closing square bracket token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing square bracket token.
+ */
+function isClosingBracketToken(token) {
+    return token.value === "]" && token.type === "Punctuator";
+}
 
 /**
- * Gets the range index for the first character in each of the lines of `sourceCode`.
- * @param {SourceCode} sourceCode A sourceCode object
- * @returns {number[]} The indices of the first characters in the each of the lines of the code
+ * Checks if the given token is an opening brace token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is an opening brace token.
  */
-function getLineIndices(sourceCode) {
+function isOpeningBraceToken(token) {
+    return token.value === "{" && token.type === "Punctuator";
+}
 
-    if (!lineIndexCache.has(sourceCode)) {
-        const lineIndices = (sourceCode.text.match(/[^\r\n\u2028\u2029]*(\r\n|\r|\n|\u2028|\u2029)/g) || [])
-            .reduce((indices, line) => indices.concat(indices[indices.length - 1] + line.length), [0]);
+/**
+ * Checks if the given token is a closing brace token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a closing brace token.
+ */
+function isClosingBraceToken(token) {
+    return token.value === "}" && token.type === "Punctuator";
+}
 
-        // Store the sourceCode object in a WeakMap to avoid iterating over all of the lines every time a sourceCode object is passed in.
-        lineIndexCache.set(sourceCode, lineIndices);
-    }
-    return lineIndexCache.get(sourceCode);
+/**
+ * Checks if the given token is a comment token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a comment token.
+ */
+function isCommentToken(token) {
+    return token.type === "Line" || token.type === "Block" || token.type === "Shebang";
+}
+
+/**
+ * Checks if the given token is a keyword token or not.
+ *
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a keyword token.
+ */
+function isKeywordToken(token) {
+    return token.type === "Keyword";
+}
+
+/**
+ * Gets the `(` token of the given function node.
+ *
+ * @param {ASTNode} node - The function node to get.
+ * @param {SourceCode} sourceCode - The source code object to get tokens.
+ * @returns {Token} `(` token.
+ */
+function getOpeningParenOfParams(node, sourceCode) {
+    return node.id
+        ? sourceCode.getTokenAfter(node.id, isOpeningParenToken)
+        : sourceCode.getFirstToken(node, isOpeningParenToken);
+}
+
+/**
+ * Creates a version of the LINEBREAK_MATCHER regex with the global flag.
+ * Global regexes are mutable, so this needs to be a function instead of a constant.
+ * @returns {RegExp} A global regular expression that matches line terminators
+ */
+function createGlobalLinebreakMatcher() {
+    return new RegExp(LINEBREAK_MATCHER.source, "g");
 }
 
 //------------------------------------------------------------------------------
@@ -304,6 +409,10 @@ function getLineIndices(sourceCode) {
 //------------------------------------------------------------------------------
 
 module.exports = {
+    COMMENTS_IGNORE_PATTERN,
+    LINEBREAKS,
+    LINEBREAK_MATCHER,
+    STATEMENT_LIST_PARENTS,
 
     /**
      * Determines whether two adjacent tokens are on the same line.
@@ -325,6 +434,29 @@ module.exports = {
     isInLoop,
     isArrayFromMethod,
     isParenthesised,
+    createGlobalLinebreakMatcher,
+
+    isArrowToken,
+    isClosingBraceToken,
+    isClosingBracketToken,
+    isClosingParenToken,
+    isColonToken,
+    isCommaToken,
+    isCommentToken,
+    isKeywordToken,
+    isNotClosingBraceToken: negate(isClosingBraceToken),
+    isNotClosingBracketToken: negate(isClosingBracketToken),
+    isNotClosingParenToken: negate(isClosingParenToken),
+    isNotColonToken: negate(isColonToken),
+    isNotCommaToken: negate(isCommaToken),
+    isNotOpeningBraceToken: negate(isOpeningBraceToken),
+    isNotOpeningBracketToken: negate(isOpeningBracketToken),
+    isNotOpeningParenToken: negate(isOpeningParenToken),
+    isNotSemicolonToken: negate(isSemicolonToken),
+    isOpeningBraceToken,
+    isOpeningBracketToken,
+    isOpeningParenToken,
+    isSemicolonToken,
 
     /**
      * Checks whether or not a given node is a string literal.
@@ -658,6 +790,8 @@ module.exports = {
                     case "/":
                     case "%":
                         return 13;
+                    case "**":
+                        return 15;
 
                     // no default
                 }
@@ -666,10 +800,10 @@ module.exports = {
 
             case "UnaryExpression":
             case "AwaitExpression":
-                return 14;
+                return 16;
 
             case "UpdateExpression":
-                return 15;
+                return 17;
 
             case "CallExpression":
 
@@ -677,14 +811,14 @@ module.exports = {
                 if (node.callee.type === "FunctionExpression") {
                     return -1;
                 }
-                return 16;
+                return 18;
 
             case "NewExpression":
-                return 17;
+                return 19;
 
             // no default
         }
-        return 18;
+        return 20;
     },
 
     /**
@@ -1023,7 +1157,7 @@ module.exports = {
         let end = null;
 
         if (node.type === "ArrowFunctionExpression") {
-            const arrowToken = getArrowToken(node, sourceCode);
+            const arrowToken = sourceCode.getTokenBefore(node.body, isArrowToken);
 
             start = arrowToken.loc.start;
             end = arrowToken.loc.end;
@@ -1037,42 +1171,10 @@ module.exports = {
 
         return {
             start: Object.assign({}, start),
-            end: Object.assign({}, end),
+            end: Object.assign({}, end)
         };
     },
 
-    /*
-    * Converts a range index into a (line, column) pair.
-    * @param {SourceCode} sourceCode A SourceCode object
-    * @param {number} rangeIndex The range index of a character in a file
-    * @returns {Object} A {line, column} location object with a 0-indexed column
-    */
-    getLocationFromRangeIndex(sourceCode, rangeIndex) {
-        const lineIndices = getLineIndices(sourceCode);
-
-        /*
-         * lineIndices is a sorted list of indices of the first character of each line.
-         * To figure out which line rangeIndex is on, determine the last index at which rangeIndex could
-         * be inserted into lineIndices to keep the list sorted.
-         */
-        const lineNumber = lodash.sortedLastIndex(lineIndices, rangeIndex);
-
-        return { line: lineNumber, column: rangeIndex - lineIndices[lineNumber - 1] };
-
-    },
-
-    /**
-    * Converts a (line, column) pair into a range index.
-    * @param {SourceCode} sourceCode A SourceCode object
-    * @param {Object} loc A line/column location
-    * @param {number} loc.line The line number of the location (1-indexed)
-    * @param {number} loc.column The column number of the location (0-indexed)
-    * @returns {number} The range index of the location in the file.
-    */
-    getRangeIndexFromLocation(sourceCode, loc) {
-        return getLineIndices(sourceCode)[loc.line - 1] + loc.column;
-    },
-
     /**
     * Gets the parenthesized text of a node. This is similar to sourceCode.getText(node), but it also includes any parentheses
     * surrounding the node.
@@ -1097,5 +1199,58 @@ module.exports = {
         }
 
         return sourceCode.getText().slice(leftToken.range[0], rightToken.range[1]);
+    },
+
+    /*
+     * Determine if a node has a possiblity to be an Error object
+     * @param  {ASTNode} node  ASTNode to check
+     * @returns {boolean} True if there is a chance it contains an Error obj
+     */
+    couldBeError(node) {
+        switch (node.type) {
+            case "Identifier":
+            case "CallExpression":
+            case "NewExpression":
+            case "MemberExpression":
+            case "TaggedTemplateExpression":
+            case "YieldExpression":
+            case "AwaitExpression":
+                return true; // possibly an error object.
+
+            case "AssignmentExpression":
+                return module.exports.couldBeError(node.right);
+
+            case "SequenceExpression": {
+                const exprs = node.expressions;
+
+                return exprs.length !== 0 && module.exports.couldBeError(exprs[exprs.length - 1]);
+            }
+
+            case "LogicalExpression":
+                return module.exports.couldBeError(node.left) || module.exports.couldBeError(node.right);
+
+            case "ConditionalExpression":
+                return module.exports.couldBeError(node.consequent) || module.exports.couldBeError(node.alternate);
+
+            default:
+                return false;
+        }
+    },
+
+    /**
+     * Determines whether the given node is a `null` literal.
+     * @param {ASTNode} node The node to check
+     * @returns {boolean} `true` if the node is a `null` literal
+     */
+    isNullLiteral(node) {
+
+        /*
+         * Checking `node.value === null` does not guarantee that a literal is a null literal.
+         * When parsing values that cannot be represented in the current environment (e.g. unicode
+         * regexes in Node 4), `node.value` is set to `null` because it wouldn't be possible to
+         * set `node.value` to a unicode regex. To make sure a literal is actually `null`, check
+         * `node.regex` instead. Also see: https://github.com/eslint/eslint/issues/8020
+         */
+        return node.type === "Literal" && node.value === null && !node.regex;
     }
 };
diff --git a/tools/eslint/lib/cli.js b/tools/eslint/lib/cli.js
index 9fdcfc701e7167..640bd81baba6ea 100644
--- a/tools/eslint/lib/cli.js
+++ b/tools/eslint/lib/cli.js
@@ -188,9 +188,9 @@ const cli = {
                 }
 
                 return (report.errorCount || tooManyWarnings) ? 1 : 0;
-            } else {
-                return 1;
             }
+            return 1;
+
 
         }
 
diff --git a/tools/eslint/lib/code-path-analysis/code-path-analyzer.js b/tools/eslint/lib/code-path-analysis/code-path-analyzer.js
index cb8b1e1bf8ce8c..539b5e18b3cff7 100644
--- a/tools/eslint/lib/code-path-analysis/code-path-analyzer.js
+++ b/tools/eslint/lib/code-path-analysis/code-path-analyzer.js
@@ -512,13 +512,8 @@ function processCodePathToExit(analyzer, node) {
             break;
     }
 
-    /*
-     * Skip updating the current segment to avoid creating useless segments if
-     * the node type is the same as the parent node type.
-     */
-    if (!dontForward && (!node.parent || node.type !== node.parent.type)) {
-
-        // Emits onCodePathSegmentStart events if updated.
+    // Emits onCodePathSegmentStart events if updated.
+    if (!dontForward) {
         forwardCurrentToHead(analyzer, node);
     }
     debug.dumpState(node, state, true);
diff --git a/tools/eslint/lib/code-path-analysis/code-path-state.js b/tools/eslint/lib/code-path-analysis/code-path-state.js
index 64779c0d3c8b12..3faff3ebb85970 100644
--- a/tools/eslint/lib/code-path-analysis/code-path-state.js
+++ b/tools/eslint/lib/code-path-analysis/code-path-state.js
@@ -467,8 +467,8 @@ class CodePathState {
              * Creates the next path from own true/false fork context.
              */
             const prevForkContext =
-                context.kind === "&&" ? context.trueForkContext :
-                /* kind === "||" */ context.falseForkContext;
+                context.kind === "&&" ? context.trueForkContext
+                /* kind === "||" */ : context.falseForkContext;
 
             forkContext.replaceHead(prevForkContext.makeNext(0, -1));
             prevForkContext.clear();
diff --git a/tools/eslint/lib/code-path-analysis/debug-helpers.js b/tools/eslint/lib/code-path-analysis/debug-helpers.js
index 622bd6081fa546..9af985ce85f56e 100644
--- a/tools/eslint/lib/code-path-analysis/debug-helpers.js
+++ b/tools/eslint/lib/code-path-analysis/debug-helpers.js
@@ -107,22 +107,23 @@ module.exports = {
                 text += "style=\"rounded,dashed,filled\",fillcolor=\"#FF9800\",label=\"<>\\n";
             }
 
-            if (segment.internal.nodes.length > 0) {
-                text += segment.internal.nodes.map(node => {
-                    switch (node.type) {
-                        case "Identifier": return `${node.type} (${node.name})`;
-                        case "Literal": return `${node.type} (${node.value})`;
-                        default: return node.type;
-                    }
-                }).join("\\n");
-            } else if (segment.internal.exitNodes.length > 0) {
-                text += segment.internal.exitNodes.map(node => {
-                    switch (node.type) {
-                        case "Identifier": return `${node.type}:exit (${node.name})`;
-                        case "Literal": return `${node.type}:exit (${node.value})`;
-                        default: return `${node.type}:exit`;
-                    }
-                }).join("\\n");
+            if (segment.internal.nodes.length > 0 || segment.internal.exitNodes.length > 0) {
+                text += [].concat(
+                    segment.internal.nodes.map(node => {
+                        switch (node.type) {
+                            case "Identifier": return `${node.type} (${node.name})`;
+                            case "Literal": return `${node.type} (${node.value})`;
+                            default: return node.type;
+                        }
+                    }),
+                    segment.internal.exitNodes.map(node => {
+                        switch (node.type) {
+                            case "Identifier": return `${node.type}:exit (${node.name})`;
+                            case "Literal": return `${node.type}:exit (${node.value})`;
+                            default: return `${node.type}:exit`;
+                        }
+                    })
+                ).join("\\n");
             } else {
                 text += "????";
             }
diff --git a/tools/eslint/lib/config.js b/tools/eslint/lib/config.js
index 9c56e7ad988e28..03fda87c973c3b 100644
--- a/tools/eslint/lib/config.js
+++ b/tools/eslint/lib/config.js
@@ -234,8 +234,9 @@ class Config {
     }
 
     /**
-     * Build a config object merging the base config (conf/eslint.json), the
-     * environments config (conf/environments.js) and eventually the user config.
+     * Build a config object merging the base config (conf/eslint-recommended),
+     * the environments config (conf/environments.js) and eventually the user
+     * config.
      * @param {string} filePath a file in whose directory we start looking for a local config
      * @returns {Object} config object
      */
diff --git a/tools/eslint/lib/config/autoconfig.js b/tools/eslint/lib/config/autoconfig.js
index 23fdbe69803afc..4a50ce25cdd248 100644
--- a/tools/eslint/lib/config/autoconfig.js
+++ b/tools/eslint/lib/config/autoconfig.js
@@ -13,7 +13,7 @@ const lodash = require("lodash"),
     eslint = require("../eslint"),
     configRule = require("./config-rule"),
     ConfigOps = require("./config-ops"),
-    recConfig = require("../../conf/eslint.json");
+    recConfig = require("../../conf/eslint-recommended");
 
 const debug = require("debug")("eslint:autoconfig");
 
@@ -65,17 +65,16 @@ function makeRegistryItems(rulesConfig) {
 * Unless a rulesConfig is provided at construction, the registry will not contain
 * any rules, only methods.  This will be useful for building up registries manually.
 *
-* @constructor
-* @class   Registry
-* @param   {rulesConfig} [rulesConfig] Hash of rule names and arrays of possible configurations
+* Registry class
 */
-function Registry(rulesConfig) {
-    this.rules = (rulesConfig) ? makeRegistryItems(rulesConfig) : {};
-}
-
-Registry.prototype = {
+class Registry {
 
-    constructor: Registry,
+    /**
+     * @param {rulesConfig} [rulesConfig] Hash of rule names and arrays of possible configurations
+     */
+    constructor(rulesConfig) {
+        this.rules = (rulesConfig) ? makeRegistryItems(rulesConfig) : {};
+    }
 
     /**
      * Populate the registry with core rule configs.
@@ -89,7 +88,7 @@ Registry.prototype = {
         const rulesConfig = configRule.createCoreRuleConfigs();
 
         this.rules = makeRegistryItems(rulesConfig);
-    },
+    }
 
     /**
      * Creates sets of rule configurations which can be used for linting
@@ -156,7 +155,7 @@ Registry.prototype = {
         }
 
         return ruleSets;
-    },
+    }
 
     /**
      * Remove all items from the registry with a non-zero number of errors
@@ -182,7 +181,7 @@ Registry.prototype = {
         });
 
         return newRegistry;
-    },
+    }
 
     /**
      * Removes rule configurations which were not included in a ruleSet
@@ -199,7 +198,7 @@ Registry.prototype = {
         });
 
         return newRegistry;
-    },
+    }
 
     /**
      * Creates a registry of rules which had no error-free configs.
@@ -221,7 +220,7 @@ Registry.prototype = {
         });
 
         return failingRegistry;
-    },
+    }
 
     /**
      * Create an eslint config for any rules which only have one configuration
@@ -240,7 +239,7 @@ Registry.prototype = {
         });
 
         return config;
-    },
+    }
 
     /**
      * Return a cloned registry containing only configs with a desired specificity
@@ -258,7 +257,7 @@ Registry.prototype = {
         });
 
         return newRegistry;
-    },
+    }
 
     /**
      * Lint SourceCodes against all configurations in the registry, and record results
@@ -297,8 +296,13 @@ Registry.prototype = {
 
                     // It is possible that the error is from a configuration comment
                     // in a linted file, in which case there may not be a config
-                    // set in this ruleSetIdx. (https://github.com/eslint/eslint/issues/5992)
-                    if (lintedRegistry.rules[result.ruleId][ruleSetIdx]) {
+                    // set in this ruleSetIdx.
+                    // (https://github.com/eslint/eslint/issues/5992)
+                    // (https://github.com/eslint/eslint/issues/7860)
+                    if (
+                        lintedRegistry.rules[result.ruleId] &&
+                        lintedRegistry.rules[result.ruleId][ruleSetIdx]
+                    ) {
                         lintedRegistry.rules[result.ruleId][ruleSetIdx].errorCount += 1;
                     }
                 });
@@ -316,7 +320,7 @@ Registry.prototype = {
 
         return lintedRegistry;
     }
-};
+}
 
 /**
  * Extract rule configuration into eslint:recommended where possible.
diff --git a/tools/eslint/lib/config/config-file.js b/tools/eslint/lib/config/config-file.js
index 90015097a3db97..4e886b8af27b67 100644
--- a/tools/eslint/lib/config/config-file.js
+++ b/tools/eslint/lib/config/config-file.js
@@ -23,7 +23,7 @@ const fs = require("fs"),
     stripBom = require("strip-bom"),
     stripComments = require("strip-json-comments"),
     stringify = require("json-stable-stringify"),
-    defaultOptions = require("../../conf/eslint.json"),
+    defaultOptions = require("../../conf/eslint-recommended"),
     requireUncached = require("require-uncached");
 
 const debug = require("debug")("eslint:config-file");
@@ -183,6 +183,22 @@ function loadPackageJSONConfigFile(filePath) {
     }
 }
 
+/**
+ * Creates an error to notify about a missing config to extend from.
+ * @param {string} configName The name of the missing config.
+ * @returns {Error} The error object to throw
+ * @private
+ */
+function configMissingError(configName) {
+    const error = new Error(`Failed to load config "${configName}" to extend from.`);
+
+    error.messageTemplate = "extend-config-missing";
+    error.messageData = {
+        configName
+    };
+    return error;
+}
+
 /**
  * Loads a configuration file regardless of the source. Inspects the file path
  * to determine the correctly way to load the config file.
@@ -199,6 +215,9 @@ function loadConfigFile(file) {
             config = loadJSConfigFile(filePath);
             if (file.configName) {
                 config = config.configs[file.configName];
+                if (!config) {
+                    throw configMissingError(file.configFullName);
+                }
             }
             break;
 
@@ -340,6 +359,33 @@ function getLookupPath(configFilePath) {
     return path.join(basedir, "node_modules");
 }
 
+/**
+ * Resolves a eslint core config path
+ * @param {string} name The eslint config name.
+ * @returns {string} The resolved path of the config.
+ * @private
+ */
+function getEslintCoreConfigPath(name) {
+    if (name === "eslint:recommended") {
+
+       /*
+        * Add an explicit substitution for eslint:recommended to
+        * conf/eslint-recommended.js.
+        */
+        return path.resolve(__dirname, "../../conf/eslint-recommended.js");
+    }
+
+    if (name === "eslint:all") {
+
+       /*
+        * Add an explicit substitution for eslint:all to conf/eslint-all.js
+        */
+        return path.resolve(__dirname, "../../conf/eslint-all.js");
+    }
+
+    throw configMissingError(name);
+}
+
 /**
  * Applies values from the "extends" field in a configuration file.
  * @param {Object} config The configuration information.
@@ -360,33 +406,20 @@ function applyExtends(config, filePath, relativeTo) {
 
     // Make the last element in an array take the highest precedence
     config = configExtends.reduceRight((previousValue, parentPath) => {
-
-        if (parentPath === "eslint:recommended") {
-
-            /*
-             * Add an explicit substitution for eslint:recommended to conf/eslint.json
-             * this lets us use the eslint.json file as the recommended rules
-             */
-            parentPath = path.resolve(__dirname, "../../conf/eslint.json");
-        } else if (parentPath === "eslint:all") {
-
-            /*
-             * Add an explicit substitution for eslint:all to conf/eslint-all.js
-             */
-            parentPath = path.resolve(__dirname, "../../conf/eslint-all.js");
-        } else if (isFilePath(parentPath)) {
-
-            /*
-             * If the `extends` path is relative, use the directory of the current configuration
-             * file as the reference point. Otherwise, use as-is.
-             */
-            parentPath = (!path.isAbsolute(parentPath) ?
-                path.join(relativeTo || path.dirname(filePath), parentPath) :
-                parentPath
-            );
-        }
-
         try {
+            if (parentPath.startsWith("eslint:")) {
+                parentPath = getEslintCoreConfigPath(parentPath);
+            } else if (isFilePath(parentPath)) {
+
+                /*
+                 * If the `extends` path is relative, use the directory of the current configuration
+                 * file as the reference point. Otherwise, use as-is.
+                 */
+                parentPath = (path.isAbsolute(parentPath)
+                    ? parentPath
+                    : path.join(relativeTo || path.dirname(filePath), parentPath)
+                );
+            }
             debug(`Loading ${parentPath}`);
             return ConfigOps.merge(load(parentPath, false, relativeTo), previousValue);
         } catch (e) {
@@ -455,30 +488,34 @@ function normalizePackageName(name, prefix) {
  * or package name.
  * @param {string} filePath The filepath to resolve.
  * @param {string} [relativeTo] The path to resolve relative to.
- * @returns {Object} A path that can be used directly to load the configuration.
+ * @returns {Object} An object containing 3 properties:
+ * - 'filePath' (required) the resolved path that can be used directly to load the configuration.
+ * - 'configName' the name of the configuration inside the plugin.
+ * - 'configFullName' the name of the configuration as used in the eslint config (e.g. 'plugin:node/recommended').
  * @private
  */
 function resolve(filePath, relativeTo) {
     if (isFilePath(filePath)) {
         return { filePath: path.resolve(relativeTo || "", filePath) };
-    } else {
-        let normalizedPackageName;
-
-        if (filePath.indexOf("plugin:") === 0) {
-            const packagePath = filePath.substr(7, filePath.lastIndexOf("/") - 7);
-            const configName = filePath.substr(filePath.lastIndexOf("/") + 1, filePath.length - filePath.lastIndexOf("/") - 1);
-
-            normalizedPackageName = normalizePackageName(packagePath, "eslint-plugin");
-            debug(`Attempting to resolve ${normalizedPackageName}`);
-            filePath = resolver.resolve(normalizedPackageName, getLookupPath(relativeTo));
-            return { filePath, configName };
-        } else {
-            normalizedPackageName = normalizePackageName(filePath, "eslint-config");
-            debug(`Attempting to resolve ${normalizedPackageName}`);
-            filePath = resolver.resolve(normalizedPackageName, getLookupPath(relativeTo));
-            return { filePath };
-        }
     }
+    let normalizedPackageName;
+
+    if (filePath.startsWith("plugin:")) {
+        const configFullName = filePath;
+        const pluginName = filePath.substr(7, filePath.lastIndexOf("/") - 7);
+        const configName = filePath.substr(filePath.lastIndexOf("/") + 1, filePath.length - filePath.lastIndexOf("/") - 1);
+
+        normalizedPackageName = normalizePackageName(pluginName, "eslint-plugin");
+        debug(`Attempting to resolve ${normalizedPackageName}`);
+        filePath = resolver.resolve(normalizedPackageName, getLookupPath(relativeTo));
+        return { filePath, configName, configFullName };
+    }
+    normalizedPackageName = normalizePackageName(filePath, "eslint-config");
+    debug(`Attempting to resolve ${normalizedPackageName}`);
+    filePath = resolver.resolve(normalizedPackageName, getLookupPath(relativeTo));
+    return { filePath };
+
+
 
 }
 
diff --git a/tools/eslint/lib/config/config-initializer.js b/tools/eslint/lib/config/config-initializer.js
index 502a73bd6c3ed1..0062a46504fdf5 100644
--- a/tools/eslint/lib/config/config-initializer.js
+++ b/tools/eslint/lib/config/config-initializer.js
@@ -17,7 +17,7 @@ const util = require("util"),
     ConfigOps = require("./config-ops"),
     getSourceCodeOfFiles = require("../util/source-code-util").getSourceCodeOfFiles,
     npmUtil = require("../util/npm-util"),
-    recConfig = require("../../conf/eslint.json"),
+    recConfig = require("../../conf/eslint-recommended"),
     log = require("../logging");
 
 const debug = require("debug")("eslint:config-initializer");
@@ -317,7 +317,7 @@ function promptUser(callback) {
             default: false,
             when(answers) {
                 return answers.styleguide === "airbnb";
-            },
+            }
         },
         {
             type: "input",
diff --git a/tools/eslint/lib/config/config-rule.js b/tools/eslint/lib/config/config-rule.js
index d495198aed454b..a8a073caa3707d 100644
--- a/tools/eslint/lib/config/config-rule.js
+++ b/tools/eslint/lib/config/config-rule.js
@@ -176,22 +176,21 @@ function combinePropertyObjects(objArr1, objArr2) {
   *
   * ruleConfigSet.ruleConfigs // -> [[2], [2, "always"], [2, "never"]]
   *
-  * @param {ruleConfig[]} configs Valid rule configurations
-  * @constructor
+  * Rule configuration set class
   */
-function RuleConfigSet(configs) {
+class RuleConfigSet {
 
     /**
-    * Stored valid rule configurations for this instance
-    * @type {array}
-    */
-    this.ruleConfigs = configs || [];
-
-}
-
-RuleConfigSet.prototype = {
-
-    constructor: RuleConfigSet,
+     * @param {ruleConfig[]} configs Valid rule configurations
+     */
+    constructor(configs) {
+
+        /**
+        * Stored valid rule configurations for this instance
+        * @type {array}
+        */
+        this.ruleConfigs = configs || [];
+    }
 
     /**
     * Add a severity level to the front of all configs in the instance.
@@ -210,7 +209,7 @@ RuleConfigSet.prototype = {
 
         // Add a single config at the beginning consisting of only the severity
         this.ruleConfigs.unshift(severity);
-    },
+    }
 
     /**
     * Add rule configs from an array of strings (schema enums)
@@ -219,12 +218,12 @@ RuleConfigSet.prototype = {
     */
     addEnums(enums) {
         this.ruleConfigs = this.ruleConfigs.concat(combineArrays(this.ruleConfigs, enums));
-    },
+    }
 
     /**
     * Add rule configurations from a schema object
     * @param  {Object} obj Schema item with type === "object"
-    * @returns {void}
+    * @returns {boolean} true if at least one schema for the object could be generated, false otherwise
     */
     addObject(obj) {
         const objectConfigSet = {
@@ -259,9 +258,12 @@ RuleConfigSet.prototype = {
 
         if (objectConfigSet.objectConfigs.length > 0) {
             this.ruleConfigs = this.ruleConfigs.concat(combineArrays(this.ruleConfigs, objectConfigSet.objectConfigs));
+            return true;
         }
+
+        return false;
     }
-};
+}
 
 /**
 * Generate valid rule configurations based on a schema object
@@ -272,20 +274,21 @@ function generateConfigsFromSchema(schema) {
     const configSet = new RuleConfigSet();
 
     if (Array.isArray(schema)) {
-        schema.forEach(opt => {
+        for (const opt of schema) {
             if (opt.enum) {
                 configSet.addEnums(opt.enum);
-            }
-
-            if (opt.type && opt.type === "object") {
-                configSet.addObject(opt);
-            }
+            } else if (opt.type && opt.type === "object") {
+                if (!configSet.addObject(opt)) {
+                    break;
+                }
 
-            if (opt.oneOf) {
+            // TODO (IanVS): support oneOf
+            } else {
 
-                // TODO (IanVS): not yet implemented
+                // If we don't know how to fill in this option, don't fill in any of the following options.
+                break;
             }
-        });
+        }
     }
     configSet.addErrorSeverity();
     return configSet.ruleConfigs;
diff --git a/tools/eslint/lib/config/config-validator.js b/tools/eslint/lib/config/config-validator.js
index c5268169b92356..36e0e9fddb32ae 100644
--- a/tools/eslint/lib/config/config-validator.js
+++ b/tools/eslint/lib/config/config-validator.js
@@ -40,13 +40,13 @@ function getRuleOptionsSchema(id) {
                 minItems: 0,
                 maxItems: schema.length
             };
-        } else {
-            return {
-                type: "array",
-                minItems: 0,
-                maxItems: 0
-            };
         }
+        return {
+            type: "array",
+            minItems: 0,
+            maxItems: 0
+        };
+
     }
 
     // Given a full schema, leave it alone
diff --git a/tools/eslint/lib/config/plugins.js b/tools/eslint/lib/config/plugins.js
index 5073d564a04e79..e28a77929c0b5f 100644
--- a/tools/eslint/lib/config/plugins.js
+++ b/tools/eslint/lib/config/plugins.js
@@ -127,14 +127,25 @@ module.exports = {
         if (!plugins[shortName]) {
             try {
                 plugin = require(longName);
-            } catch (err) {
-                debug(`Failed to load plugin ${longName}.`);
-                err.message = `Failed to load plugin ${pluginName}: ${err.message}`;
-                err.messageTemplate = "plugin-missing";
-                err.messageData = {
-                    pluginName: longName
-                };
-                throw err;
+            } catch (pluginLoadErr) {
+                try {
+
+                    // Check whether the plugin exists
+                    require.resolve(longName);
+                } catch (missingPluginErr) {
+
+                    // If the plugin can't be resolved, display the missing plugin error (usually a config or install error)
+                    debug(`Failed to load plugin ${longName}.`);
+                    missingPluginErr.message = `Failed to load plugin ${pluginName}: ${missingPluginErr.message}`;
+                    missingPluginErr.messageTemplate = "plugin-missing";
+                    missingPluginErr.messageData = {
+                        pluginName: longName
+                    };
+                    throw missingPluginErr;
+                }
+
+                // Otherwise, the plugin exists and is throwing on module load for some reason, so print the stack trace.
+                throw pluginLoadErr;
             }
 
             this.define(pluginName, plugin);
diff --git a/tools/eslint/lib/eslint.js b/tools/eslint/lib/eslint.js
index 3ae7cfe9c68103..a9066c4c8b6884 100755
--- a/tools/eslint/lib/eslint.js
+++ b/tools/eslint/lib/eslint.js
@@ -14,7 +14,7 @@ const assert = require("assert"),
     escope = require("escope"),
     levn = require("levn"),
     blankScriptAST = require("../conf/blank-script.json"),
-    DEFAULT_PARSER = require("../conf/eslint.json").parser,
+    DEFAULT_PARSER = require("../conf/eslint-recommended").parser,
     replacements = require("../conf/replacements.json"),
     CodePathAnalyzer = require("./code-path-analysis/code-path-analyzer"),
     ConfigOps = require("./config/config-ops"),
@@ -528,9 +528,9 @@ function createStubRule(message) {
 
     if (message) {
         return createRuleModule;
-    } else {
-        throw new Error("No message passed to stub rule");
     }
+    throw new Error("No message passed to stub rule");
+
 }
 
 /**
@@ -660,9 +660,9 @@ module.exports = (function() {
         try {
             if (typeof parser.parseForESLint === "function") {
                 return parser.parseForESLint(text, parserOptions);
-            } else {
-                return parser.parse(text, parserOptions);
             }
+            return parser.parse(text, parserOptions);
+
         } catch (ex) {
 
             // If the message includes a leading line number, strip it:
@@ -695,9 +695,9 @@ module.exports = (function() {
             return ruleConfig;
         } else if (Array.isArray(ruleConfig)) {
             return ruleConfig[0];
-        } else {
-            return 0;
         }
+        return 0;
+
     }
 
     /**
@@ -708,9 +708,9 @@ module.exports = (function() {
     function getRuleOptions(ruleConfig) {
         if (Array.isArray(ruleConfig)) {
             return ruleConfig.slice(1);
-        } else {
-            return [];
         }
+        return [];
+
     }
 
     // set unlimited listeners (see https://github.com/eslint/eslint/issues/524)
@@ -778,17 +778,18 @@ module.exports = (function() {
         // search and apply "eslint-env *".
         const envInFile = findEslintEnv(text || textOrSourceCode.text);
 
+        config = Object.assign({}, config);
+
         if (envInFile) {
-            if (!config || !config.env) {
-                config = Object.assign({}, config || {}, { env: envInFile });
-            } else {
-                config = Object.assign({}, config);
+            if (config.env) {
                 config.env = Object.assign({}, config.env, envInFile);
+            } else {
+                config.env = envInFile;
             }
         }
 
         // process initial config to make it safe to extend
-        config = prepareConfig(config || {});
+        config = prepareConfig(config);
 
         // only do this for text
         if (text !== null) {
@@ -864,14 +865,14 @@ module.exports = (function() {
                         (parseResult && parseResult.services ? parseResult.services : {})
                     );
 
-                    const rule = ruleCreator.create ? ruleCreator.create(ruleContext) :
-                        ruleCreator(ruleContext);
+                    const rule = ruleCreator.create ? ruleCreator.create(ruleContext)
+                        : ruleCreator(ruleContext);
 
-                    // add all the node types as listeners
-                    Object.keys(rule).forEach(nodeType => {
-                        api.on(nodeType, timing.enabled
-                            ? timing.time(key, rule[nodeType])
-                            : rule[nodeType]
+                    // add all the selectors from the rule as listeners
+                    Object.keys(rule).forEach(selector => {
+                        api.on(selector, timing.enabled
+                            ? timing.time(key, rule[selector])
+                            : rule[selector]
                         );
                     });
                 } catch (ex) {
@@ -939,9 +940,9 @@ module.exports = (function() {
 
             if (lineDiff === 0) {
                 return a.column - b.column;
-            } else {
-                return lineDiff;
             }
+            return lineDiff;
+
         });
 
         return messages;
@@ -1109,9 +1110,9 @@ module.exports = (function() {
                 if (scope) {
                     if (scope.type === "function-expression-name") {
                         return scope.childScopes[0];
-                    } else {
-                        return scope;
                     }
+                    return scope;
+
                 }
 
             }
@@ -1161,9 +1162,9 @@ module.exports = (function() {
     api.getFilename = function() {
         if (typeof currentFilename === "string") {
             return currentFilename;
-        } else {
-            return "";
         }
+        return "";
+
     };
 
     /**
@@ -1192,7 +1193,7 @@ module.exports = (function() {
      * @returns {Object} Object mapping rule IDs to their default configurations
      */
     api.defaults = function() {
-        return require("../conf/eslint.json");
+        return require("../conf/eslint-recommended");
     };
 
     /**
diff --git a/tools/eslint/lib/formatters/checkstyle.js b/tools/eslint/lib/formatters/checkstyle.js
index 5985ad0eff5752..c807871930bdec 100644
--- a/tools/eslint/lib/formatters/checkstyle.js
+++ b/tools/eslint/lib/formatters/checkstyle.js
@@ -19,9 +19,9 @@ const xmlEscape = require("../util/xml-escape");
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "error";
-    } else {
-        return "warning";
     }
+    return "warning";
+
 }
 
 //------------------------------------------------------------------------------
diff --git a/tools/eslint/lib/formatters/codeframe.js b/tools/eslint/lib/formatters/codeframe.js
index e8cd59bb94b3a8..1191ccb8efaae9 100644
--- a/tools/eslint/lib/formatters/codeframe.js
+++ b/tools/eslint/lib/formatters/codeframe.js
@@ -56,7 +56,7 @@ function formatMessage(message, parentResult) {
         `${type}:`,
         `${msg}`,
         ruleId ? `${ruleId}` : "",
-        sourceCode ? `at ${filePath}:` : `at ${filePath}`,
+        sourceCode ? `at ${filePath}:` : `at ${filePath}`
     ].filter(String).join(" ");
 
     const result = [firstLine];
@@ -101,15 +101,10 @@ module.exports = function(results) {
     const resultsWithMessages = results.filter(result => result.messages.length > 0);
 
     let output = resultsWithMessages.reduce((resultsOutput, result) => {
-        const messages = result.messages.map(message => {
-            if (message.fatal || message.severity === 2) {
-                errors++;
-            } else {
-                warnings++;
-            }
-
-            return `${formatMessage(message, result)}\n\n`;
-        });
+        const messages = result.messages.map(message => `${formatMessage(message, result)}\n\n`);
+
+        errors += result.errorCount;
+        warnings += result.warningCount;
 
         return resultsOutput.concat(messages);
     }, []).join("\n");
diff --git a/tools/eslint/lib/formatters/compact.js b/tools/eslint/lib/formatters/compact.js
index c641039ff284c6..2b540bde2361c1 100644
--- a/tools/eslint/lib/formatters/compact.js
+++ b/tools/eslint/lib/formatters/compact.js
@@ -17,9 +17,9 @@
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "Error";
-    } else {
-        return "Warning";
     }
+    return "Warning";
+
 }
 
 
diff --git a/tools/eslint/lib/formatters/junit.js b/tools/eslint/lib/formatters/junit.js
index 35b03bf9ffc139..c41a2a4dd8b962 100644
--- a/tools/eslint/lib/formatters/junit.js
+++ b/tools/eslint/lib/formatters/junit.js
@@ -19,9 +19,9 @@ const xmlEscape = require("../util/xml-escape");
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "Error";
-    } else {
-        return "Warning";
     }
+    return "Warning";
+
 }
 
 //------------------------------------------------------------------------------
diff --git a/tools/eslint/lib/formatters/stylish.js b/tools/eslint/lib/formatters/stylish.js
index a176d03ab83e0b..c19b95d6e3b7be 100644
--- a/tools/eslint/lib/formatters/stylish.js
+++ b/tools/eslint/lib/formatters/stylish.js
@@ -28,7 +28,6 @@ function pluralize(word, count) {
 module.exports = function(results) {
 
     let output = "\n",
-        total = 0,
         errors = 0,
         warnings = 0,
         summaryColor = "yellow";
@@ -40,7 +39,9 @@ module.exports = function(results) {
             return;
         }
 
-        total += messages.length;
+        errors += result.errorCount;
+        warnings += result.warningCount;
+
         output += `${chalk.underline(result.filePath)}\n`;
 
         output += `${table(
@@ -50,10 +51,8 @@ module.exports = function(results) {
                 if (message.fatal || message.severity === 2) {
                     messageType = chalk.red("error");
                     summaryColor = "red";
-                    errors++;
                 } else {
                     messageType = chalk.yellow("warning");
-                    warnings++;
                 }
 
                 return [
@@ -74,6 +73,8 @@ module.exports = function(results) {
         ).split("\n").map(el => el.replace(/(\d+)\s+(\d+)/, (m, p1, p2) => chalk.dim(`${p1}:${p2}`))).join("\n")}\n\n`;
     });
 
+    const total = errors + warnings;
+
     if (total > 0) {
         output += chalk[summaryColor].bold([
             "\u2716 ", total, pluralize(" problem", total),
diff --git a/tools/eslint/lib/formatters/tap.js b/tools/eslint/lib/formatters/tap.js
index 27825d0ba996e7..06699257b583c3 100644
--- a/tools/eslint/lib/formatters/tap.js
+++ b/tools/eslint/lib/formatters/tap.js
@@ -18,9 +18,9 @@ const yaml = require("js-yaml");
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "error";
-    } else {
-        return "warning";
     }
+    return "warning";
+
 }
 
 /**
diff --git a/tools/eslint/lib/formatters/unix.js b/tools/eslint/lib/formatters/unix.js
index a5635278bc3fa9..c6c4ebbdb9f4cc 100644
--- a/tools/eslint/lib/formatters/unix.js
+++ b/tools/eslint/lib/formatters/unix.js
@@ -16,9 +16,9 @@
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "Error";
-    } else {
-        return "Warning";
     }
+    return "Warning";
+
 }
 
 
diff --git a/tools/eslint/lib/formatters/visualstudio.js b/tools/eslint/lib/formatters/visualstudio.js
index feb7fb4bef382b..0d49431db87926 100644
--- a/tools/eslint/lib/formatters/visualstudio.js
+++ b/tools/eslint/lib/formatters/visualstudio.js
@@ -18,9 +18,9 @@
 function getMessageType(message) {
     if (message.fatal || message.severity === 2) {
         return "error";
-    } else {
-        return "warning";
     }
+    return "warning";
+
 }
 
 
diff --git a/tools/eslint/lib/ignored-paths.js b/tools/eslint/lib/ignored-paths.js
index bace73db6a394b..cfca7fa4ff1c3b 100644
--- a/tools/eslint/lib/ignored-paths.js
+++ b/tools/eslint/lib/ignored-paths.js
@@ -201,6 +201,12 @@ class IgnoredPaths {
 
         const ig = ignore().add(DEFAULT_IGNORE_DIRS);
 
+        if (this.options.dotfiles !== true) {
+
+            // Ignore hidden folders.  (This cannot be ".*", or else it's not possible to unignore hidden files)
+            ig.add([".*/*", "!../"]);
+        }
+
         if (this.options.ignore) {
             ig.add(this.ig.custom);
         }
diff --git a/tools/eslint/lib/internal-rules/internal-consistent-docs-description.js b/tools/eslint/lib/internal-rules/internal-consistent-docs-description.js
index a4a5dca03fbbf2..55e2a6c7645a21 100644
--- a/tools/eslint/lib/internal-rules/internal-consistent-docs-description.js
+++ b/tools/eslint/lib/internal-rules/internal-consistent-docs-description.js
@@ -71,7 +71,7 @@ function checkMetaDocsDescription(context, exportsNode) {
     if (description === "") {
         context.report({
             node: metaDocsDescription.value,
-            message: "`meta.docs.description` should not be empty.",
+            message: "`meta.docs.description` should not be empty."
         });
         return;
     }
diff --git a/tools/eslint/lib/internal-rules/internal-no-invalid-meta.js b/tools/eslint/lib/internal-rules/internal-no-invalid-meta.js
index d1c78efa61e557..d13df358bfeb94 100644
--- a/tools/eslint/lib/internal-rules/internal-no-invalid-meta.js
+++ b/tools/eslint/lib/internal-rules/internal-no-invalid-meta.js
@@ -94,16 +94,6 @@ function hasMetaSchema(metaPropertyNode) {
     return getPropertyFromObject("schema", metaPropertyNode.value);
 }
 
-/**
- * Whether this `meta` ObjectExpression has a `fixable` property defined or not.
- *
- * @param {ASTNode} metaPropertyNode The `meta` ObjectExpression for this rule.
- * @returns {boolean} `true` if a `fixable` property exists.
- */
-function hasMetaFixable(metaPropertyNode) {
-    return getPropertyFromObject("fixable", metaPropertyNode.value);
-}
-
 /**
  * Checks the validity of the meta definition of this rule and reports any errors found.
  *
@@ -112,7 +102,7 @@ function hasMetaFixable(metaPropertyNode) {
  * @param {boolean} ruleIsFixable whether the rule is fixable or not.
  * @returns {void}
  */
-function checkMetaValidity(context, exportsNode, ruleIsFixable) {
+function checkMetaValidity(context, exportsNode) {
     const metaProperty = getMetaPropertyFromExportsNode(exportsNode);
 
     if (!metaProperty) {
@@ -142,11 +132,6 @@ function checkMetaValidity(context, exportsNode, ruleIsFixable) {
 
     if (!hasMetaSchema(metaProperty)) {
         context.report(metaProperty, "Rule is missing a meta.schema property.");
-        return;
-    }
-
-    if (ruleIsFixable && !hasMetaFixable(metaProperty)) {
-        context.report(metaProperty, "Rule is fixable, but is missing a meta.fixable property.");
     }
 }
 
@@ -177,7 +162,6 @@ module.exports = {
 
     create(context) {
         let exportsNode;
-        let ruleIsFixable = false;
 
         return {
             AssignmentExpression(node) {
@@ -191,35 +175,13 @@ module.exports = {
                 }
             },
 
-            CallExpression(node) {
-
-                // If the rule has a call for `context.report` and a property `fix`
-                // is being passed in, then we consider that the rule is fixable.
-                //
-                // Note that we only look for context.report() calls in the new
-                // style (with single MessageDescriptor argument), because only
-                // calls in the new style can specify a fix.
-                if (node.callee.type === "MemberExpression" &&
-                    node.callee.object.type === "Identifier" &&
-                    node.callee.object.name === "context" &&
-                    node.callee.property.type === "Identifier" &&
-                    node.callee.property.name === "report" &&
-                    node.arguments.length === 1 &&
-                    node.arguments[0].type === "ObjectExpression") {
-
-                    if (getPropertyFromObject("fix", node.arguments[0])) {
-                        ruleIsFixable = true;
-                    }
-                }
-            },
-
             "Program:exit"() {
                 if (!isCorrectExportsFormat(exportsNode)) {
                     context.report({ node: exportsNode, message: "Rule does not export an Object. Make sure the rule follows the new rule format." });
                     return;
                 }
 
-                checkMetaValidity(context, exportsNode, ruleIsFixable);
+                checkMetaValidity(context, exportsNode);
             }
         };
     }
diff --git a/tools/eslint/lib/rule-context.js b/tools/eslint/lib/rule-context.js
index 9c80d2e1a31cc6..99221666af8847 100644
--- a/tools/eslint/lib/rule-context.js
+++ b/tools/eslint/lib/rule-context.js
@@ -8,7 +8,7 @@
 // Requirements
 //------------------------------------------------------------------------------
 
-const RuleFixer = require("./util/rule-fixer");
+const ruleFixer = require("./util/rule-fixer");
 
 //------------------------------------------------------------------------------
 // Constants
@@ -124,7 +124,7 @@ class RuleContext {
 
             // if there's a fix specified, get it
             if (typeof descriptor.fix === "function") {
-                fix = descriptor.fix(new RuleFixer());
+                fix = descriptor.fix(ruleFixer);
             }
 
             this.eslint.report(
diff --git a/tools/eslint/lib/rules.js b/tools/eslint/lib/rules.js
index 80f83882d331cb..9244c96c7a1ab3 100644
--- a/tools/eslint/lib/rules.js
+++ b/tools/eslint/lib/rules.js
@@ -70,9 +70,9 @@ function importPlugin(plugin, pluginName) {
 function getHandler(ruleId) {
     if (typeof rules[ruleId] === "string") {
         return require(rules[ruleId]);
-    } else {
-        return rules[ruleId];
     }
+    return rules[ruleId];
+
 }
 
 /**
diff --git a/tools/eslint/lib/rules/array-callback-return.js b/tools/eslint/lib/rules/array-callback-return.js
index 1713125a7a722d..cf64a98e327e7e 100644
--- a/tools/eslint/lib/rules/array-callback-return.js
+++ b/tools/eslint/lib/rules/array-callback-return.js
@@ -9,6 +9,8 @@
 // Requirements
 //------------------------------------------------------------------------------
 
+const lodash = require("lodash");
+
 const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
@@ -147,7 +149,8 @@ module.exports = {
             upper: null,
             codePath: null,
             hasReturn: false,
-            shouldCheck: false
+            shouldCheck: false,
+            node: null
         };
 
         /**
@@ -168,8 +171,11 @@ module.exports = {
                     node,
                     loc: getLocation(node, context.getSourceCode()).loc.start,
                     message: funcInfo.hasReturn
-                        ? "Expected to return a value at the end of this function."
-                        : "Expected to return a value in this function."
+                        ? "Expected to return a value at the end of {{name}}."
+                        : "Expected to return a value in {{name}}.",
+                    data: {
+                        name: astUtils.getFunctionNameWithKind(funcInfo.node)
+                    }
                 });
             }
         }
@@ -187,7 +193,8 @@ module.exports = {
                         node.body.type === "BlockStatement" &&
                         isCallbackOfArrayMethod(node) &&
                         !node.async &&
-                        !node.generator
+                        !node.generator,
+                    node
                 };
             },
 
@@ -204,7 +211,10 @@ module.exports = {
                     if (!node.argument) {
                         context.report({
                             node,
-                            message: "Expected a return value."
+                            message: "{{name}} expected a return value.",
+                            data: {
+                                name: lodash.upperFirst(astUtils.getFunctionNameWithKind(funcInfo.node))
+                            }
                         });
                     }
                 }
diff --git a/tools/eslint/lib/rules/arrow-body-style.js b/tools/eslint/lib/rules/arrow-body-style.js
index 9778a6776f5e1f..f2f14245be97dc 100644
--- a/tools/eslint/lib/rules/arrow-body-style.js
+++ b/tools/eslint/lib/rules/arrow-body-style.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -94,7 +100,7 @@ module.exports = {
                             const firstValueToken = sourceCode.getTokenAfter(returnKeyword);
                             let lastValueToken = sourceCode.getLastToken(blockBody[0]);
 
-                            if (lastValueToken.type === "Punctuator" && lastValueToken.value === ";") {
+                            if (astUtils.isSemicolonToken(lastValueToken)) {
 
                                 /* The last token of the returned value is the last token of the ReturnExpression (if
                                  * the ReturnExpression has no semicolon), or the second-to-last token (if the ReturnExpression
@@ -114,7 +120,7 @@ module.exports = {
                             const textBeforeReturn = sourceText.slice(arrowBody.range[0] + 1, returnKeyword.range[0]);
                             const textBetweenReturnAndValue = sourceText.slice(returnKeyword.range[1], firstValueToken.range[0]);
                             const rawReturnValueText = sourceText.slice(firstValueToken.range[0], lastValueToken.range[1]);
-                            const returnValueText = firstValueToken.value === "{" ? `(${rawReturnValueText})` : rawReturnValueText;
+                            const returnValueText = astUtils.isOpeningBraceToken(firstValueToken) ? `(${rawReturnValueText})` : rawReturnValueText;
                             const textAfterValue = sourceText.slice(lastValueToken.range[1], blockBody[0].range[1] - 1);
                             const textAfterReturnStatement = sourceText.slice(blockBody[0].range[1], arrowBody.range[1] - 1);
 
@@ -136,10 +142,7 @@ module.exports = {
                         loc: arrowBody.loc.start,
                         message: "Expected block statement surrounding arrow body.",
                         fix(fixer) {
-                            const lastTokenBeforeBody = sourceCode.getTokensBetween(sourceCode.getFirstToken(node), arrowBody)
-                                .reverse()
-                                .find(token => token.value !== "(");
-
+                            const lastTokenBeforeBody = sourceCode.getLastTokenBetween(sourceCode.getFirstToken(node), arrowBody, astUtils.isNotOpeningParenToken);
                             const firstBodyToken = sourceCode.getTokenAfter(lastTokenBeforeBody);
 
                             return fixer.replaceTextRange(
diff --git a/tools/eslint/lib/rules/arrow-parens.js b/tools/eslint/lib/rules/arrow-parens.js
index e069e307eb2040..c292d1b492979c 100644
--- a/tools/eslint/lib/rules/arrow-parens.js
+++ b/tools/eslint/lib/rules/arrow-parens.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -62,7 +68,7 @@ module.exports = {
                 node.body.type !== "BlockStatement" &&
                 !node.returnType
             ) {
-                if (token.type === "Punctuator" && token.value === "(") {
+                if (astUtils.isOpeningParenToken(token)) {
                     context.report({
                         node,
                         message: requireForBlockBodyMessage,
@@ -84,7 +90,7 @@ module.exports = {
                 requireForBlockBody &&
                 node.body.type === "BlockStatement"
             ) {
-                if (token.type !== "Punctuator" || token.value !== "(") {
+                if (!astUtils.isOpeningParenToken(token)) {
                     context.report({
                         node,
                         message: requireForBlockBodyNoParensMessage,
@@ -103,7 +109,7 @@ module.exports = {
                 !node.params[0].typeAnnotation &&
                 !node.returnType
             ) {
-                if (token.type === "Punctuator" && token.value === "(") {
+                if (astUtils.isOpeningParenToken(token)) {
                     context.report({
                         node,
                         message: asNeededMessage,
diff --git a/tools/eslint/lib/rules/arrow-spacing.js b/tools/eslint/lib/rules/arrow-spacing.js
index 3bc9017630ba72..37e03907cb9f27 100644
--- a/tools/eslint/lib/rules/arrow-spacing.js
+++ b/tools/eslint/lib/rules/arrow-spacing.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -51,12 +57,7 @@ module.exports = {
          * @returns {Object} Tokens of arrow and before/after arrow.
          */
         function getTokens(node) {
-            let arrow = sourceCode.getTokenBefore(node.body);
-
-            // skip '(' tokens.
-            while (arrow.value !== "=>") {
-                arrow = sourceCode.getTokenBefore(arrow);
-            }
+            const arrow = sourceCode.getTokenBefore(node.body, astUtils.isArrowToken);
 
             return {
                 before: sourceCode.getTokenBefore(arrow),
diff --git a/tools/eslint/lib/rules/block-spacing.js b/tools/eslint/lib/rules/block-spacing.js
index 9c0a7f388ba3bb..f18381a31034c3 100644
--- a/tools/eslint/lib/rules/block-spacing.js
+++ b/tools/eslint/lib/rules/block-spacing.js
@@ -74,8 +74,8 @@ module.exports = {
             // Gets braces and the first/last token of content.
             const openBrace = getOpenBrace(node);
             const closeBrace = sourceCode.getLastToken(node);
-            const firstToken = sourceCode.getTokenOrCommentAfter(openBrace);
-            const lastToken = sourceCode.getTokenOrCommentBefore(closeBrace);
+            const firstToken = sourceCode.getTokenAfter(openBrace, { includeComments: true });
+            const lastToken = sourceCode.getTokenBefore(closeBrace, { includeComments: true });
 
             // Skip if the node is invalid or empty.
             if (openBrace.type !== "Punctuator" ||
diff --git a/tools/eslint/lib/rules/brace-style.js b/tools/eslint/lib/rules/brace-style.js
index 197767b07c19a5..bb4433cc45cc36 100644
--- a/tools/eslint/lib/rules/brace-style.js
+++ b/tools/eslint/lib/rules/brace-style.js
@@ -5,6 +5,8 @@
 
 "use strict";
 
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -52,215 +54,86 @@ module.exports = {
         //--------------------------------------------------------------------------
 
         /**
-         * Determines if a given node is a block statement.
-         * @param {ASTNode} node The node to check.
-         * @returns {boolean} True if the node is a block statement, false if not.
-         * @private
-         */
-        function isBlock(node) {
-            return node && node.type === "BlockStatement";
-        }
-
-        /**
-         * Check if the token is an punctuator with a value of curly brace
-         * @param {Object} token - Token to check
-         * @returns {boolean} true if its a curly punctuator
-         * @private
-         */
-        function isCurlyPunctuator(token) {
-            return token.value === "{" || token.value === "}";
-        }
-
-        /**
-        * Reports a place where a newline unexpectedly appears
-        * @param {ASTNode} node The node to report
-        * @param {string} message The message to report
+        * Fixes a place where a newline unexpectedly appears
         * @param {Token} firstToken The token before the unexpected newline
-        * @returns {void}
+        * @param {Token} secondToken The token after the unexpected newline
+        * @returns {Function} A fixer function to remove the newlines between the tokens
         */
-        function reportExtraNewline(node, message, firstToken) {
-            context.report({
-                node,
-                message,
-                fix(fixer) {
-                    const secondToken = sourceCode.getTokenAfter(firstToken);
-                    const textBetween = sourceCode.getText().slice(firstToken.range[1], secondToken.range[0]);
-                    const NEWLINE_REGEX = /\r\n|\r|\n|\u2028|\u2029/g;
+        function removeNewlineBetween(firstToken, secondToken) {
+            const textRange = [firstToken.range[1], secondToken.range[0]];
+            const textBetween = sourceCode.text.slice(textRange[0], textRange[1]);
+            const NEWLINE_REGEX = astUtils.createGlobalLinebreakMatcher();
 
-                    // Don't do a fix if there is a comment between the tokens.
-                    return textBetween.trim() ? null : fixer.replaceTextRange([firstToken.range[1], secondToken.range[0]], textBetween.replace(NEWLINE_REGEX, ""));
-                }
-            });
+            // Don't do a fix if there is a comment between the tokens
+            return fixer => fixer.replaceTextRange(textRange, textBetween.trim() ? null : textBetween.replace(NEWLINE_REGEX, ""));
         }
 
         /**
-         * Binds a list of properties to a function that verifies that the opening
-         * curly brace is on the same line as its controlling statement of a given
-         * node.
-         * @param {...string} The properties to check on the node.
-         * @returns {Function} A function that will perform the check on a node
-         * @private
-         */
-        function checkBlock() {
-            const blockProperties = arguments;
-
-            return function(node) {
-                Array.prototype.forEach.call(blockProperties, blockProp => {
-                    const block = node[blockProp];
-
-                    if (!isBlock(block)) {
-                        return;
-                    }
-
-                    const previousToken = sourceCode.getTokenBefore(block);
-                    const curlyToken = sourceCode.getFirstToken(block);
-                    const curlyTokenEnd = sourceCode.getLastToken(block);
-                    const allOnSameLine = previousToken.loc.start.line === curlyTokenEnd.loc.start.line;
-
-                    if (allOnSameLine && params.allowSingleLine) {
-                        return;
-                    }
-
-                    if (style !== "allman" && previousToken.loc.start.line !== curlyToken.loc.start.line) {
-                        reportExtraNewline(node, OPEN_MESSAGE, previousToken);
-                    } else if (style === "allman" && previousToken.loc.start.line === curlyToken.loc.start.line) {
-                        context.report({
-                            node,
-                            message: OPEN_MESSAGE_ALLMAN,
-                            fix: fixer => fixer.insertTextBefore(curlyToken, "\n")
-                        });
-                    }
-
-                    if (!block.body.length) {
-                        return;
-                    }
-
-                    if (curlyToken.loc.start.line === block.body[0].loc.start.line) {
-                        context.report({
-                            node: block.body[0],
-                            message: BODY_MESSAGE,
-                            fix: fixer => fixer.insertTextAfter(curlyToken, "\n")
-                        });
-                    }
+        * Validates a pair of curly brackets based on the user's config
+        * @param {Token} openingCurly The opening curly bracket
+        * @param {Token} closingCurly The closing curly bracket
+        * @returns {void}
+        */
+        function validateCurlyPair(openingCurly, closingCurly) {
+            const tokenBeforeOpeningCurly = sourceCode.getTokenBefore(openingCurly);
+            const tokenAfterOpeningCurly = sourceCode.getTokenAfter(openingCurly);
+            const tokenBeforeClosingCurly = sourceCode.getTokenBefore(closingCurly);
+            const singleLineException = params.allowSingleLine && astUtils.isTokenOnSameLine(openingCurly, closingCurly);
 
-                    if (curlyTokenEnd.loc.start.line === block.body[block.body.length - 1].loc.end.line) {
-                        context.report({
-                            node: block.body[block.body.length - 1],
-                            message: CLOSE_MESSAGE_SINGLE,
-                            fix: fixer => fixer.insertTextBefore(curlyTokenEnd, "\n")
-                        });
-                    }
+            if (style !== "allman" && !astUtils.isTokenOnSameLine(tokenBeforeOpeningCurly, openingCurly)) {
+                context.report({
+                    node: openingCurly,
+                    message: OPEN_MESSAGE,
+                    fix: removeNewlineBetween(tokenBeforeOpeningCurly, openingCurly)
                 });
-            };
-        }
-
-        /**
-         * Enforces the configured brace style on IfStatements
-         * @param {ASTNode} node An IfStatement node.
-         * @returns {void}
-         * @private
-         */
-        function checkIfStatement(node) {
-            checkBlock("consequent", "alternate")(node);
-
-            if (node.alternate) {
-
-                const tokens = sourceCode.getTokensBefore(node.alternate, 2);
-
-                if (style === "1tbs") {
-                    if (tokens[0].loc.start.line !== tokens[1].loc.start.line &&
-                        node.consequent.type === "BlockStatement" &&
-                        isCurlyPunctuator(tokens[0])) {
-                        reportExtraNewline(node.alternate, CLOSE_MESSAGE, tokens[0]);
-                    }
-                } else if (tokens[0].loc.start.line === tokens[1].loc.start.line) {
-                    context.report({
-                        node: node.alternate,
-                        message: CLOSE_MESSAGE_STROUSTRUP_ALLMAN,
-                        fix: fixer => fixer.insertTextAfter(tokens[0], "\n")
-                    });
-                }
-
             }
-        }
-
-        /**
-         * Enforces the configured brace style on TryStatements
-         * @param {ASTNode} node A TryStatement node.
-         * @returns {void}
-         * @private
-         */
-        function checkTryStatement(node) {
-            checkBlock("block", "finalizer")(node);
 
-            if (isBlock(node.finalizer)) {
-                const tokens = sourceCode.getTokensBefore(node.finalizer, 2);
-
-                if (style === "1tbs") {
-                    if (tokens[0].loc.start.line !== tokens[1].loc.start.line) {
-                        reportExtraNewline(node.finalizer, CLOSE_MESSAGE, tokens[0]);
-                    }
-                } else if (tokens[0].loc.start.line === tokens[1].loc.start.line) {
-                    context.report({
-                        node: node.finalizer,
-                        message: CLOSE_MESSAGE_STROUSTRUP_ALLMAN,
-                        fix: fixer => fixer.insertTextAfter(tokens[0], "\n")
-                    });
-                }
+            if (style === "allman" && astUtils.isTokenOnSameLine(tokenBeforeOpeningCurly, openingCurly) && !singleLineException) {
+                context.report({
+                    node: openingCurly,
+                    message: OPEN_MESSAGE_ALLMAN,
+                    fix: fixer => fixer.insertTextBefore(openingCurly, "\n")
+                });
             }
-        }
-
-        /**
-         * Enforces the configured brace style on CatchClauses
-         * @param {ASTNode} node A CatchClause node.
-         * @returns {void}
-         * @private
-         */
-        function checkCatchClause(node) {
-            const previousToken = sourceCode.getTokenBefore(node),
-                firstToken = sourceCode.getFirstToken(node);
 
-            checkBlock("body")(node);
+            if (astUtils.isTokenOnSameLine(openingCurly, tokenAfterOpeningCurly) && tokenAfterOpeningCurly !== closingCurly && !singleLineException) {
+                context.report({
+                    node: openingCurly,
+                    message: BODY_MESSAGE,
+                    fix: fixer => fixer.insertTextAfter(openingCurly, "\n")
+                });
+            }
 
-            if (isBlock(node.body)) {
-                if (style === "1tbs") {
-                    if (previousToken.loc.start.line !== firstToken.loc.start.line) {
-                        reportExtraNewline(node, CLOSE_MESSAGE, previousToken);
-                    }
-                } else {
-                    if (previousToken.loc.start.line === firstToken.loc.start.line) {
-                        context.report({
-                            node,
-                            message: CLOSE_MESSAGE_STROUSTRUP_ALLMAN,
-                            fix: fixer => fixer.insertTextAfter(previousToken, "\n")
-                        });
-                    }
-                }
+            if (tokenBeforeClosingCurly !== openingCurly && !singleLineException && astUtils.isTokenOnSameLine(tokenBeforeClosingCurly, closingCurly)) {
+                context.report({
+                    node: closingCurly,
+                    message: CLOSE_MESSAGE_SINGLE,
+                    fix: fixer => fixer.insertTextBefore(closingCurly, "\n")
+                });
             }
         }
 
         /**
-         * Enforces the configured brace style on SwitchStatements
-         * @param {ASTNode} node A SwitchStatement node.
-         * @returns {void}
-         * @private
-         */
-        function checkSwitchStatement(node) {
-            let tokens;
+        * Validates the location of a token that appears before a keyword (e.g. a newline before `else`)
+        * @param {Token} curlyToken The closing curly token. This is assumed to precede a keyword token (such as `else` or `finally`).
+        * @returns {void}
+        */
+        function validateCurlyBeforeKeyword(curlyToken) {
+            const keywordToken = sourceCode.getTokenAfter(curlyToken);
 
-            if (node.cases && node.cases.length) {
-                tokens = sourceCode.getTokensBefore(node.cases[0], 2);
-            } else {
-                tokens = sourceCode.getLastTokens(node, 3);
+            if (style === "1tbs" && !astUtils.isTokenOnSameLine(curlyToken, keywordToken)) {
+                context.report({
+                    node: curlyToken,
+                    message: CLOSE_MESSAGE,
+                    fix: removeNewlineBetween(curlyToken, keywordToken)
+                });
             }
 
-            if (style !== "allman" && tokens[0].loc.start.line !== tokens[1].loc.start.line) {
-                reportExtraNewline(node, OPEN_MESSAGE, tokens[0]);
-            } else if (style === "allman" && tokens[0].loc.start.line === tokens[1].loc.start.line) {
+            if (style !== "1tbs" && astUtils.isTokenOnSameLine(curlyToken, keywordToken)) {
                 context.report({
-                    node,
-                    message: OPEN_MESSAGE_ALLMAN,
-                    fix: fixer => fixer.insertTextBefore(tokens[1], "\n")
+                    node: curlyToken,
+                    message: CLOSE_MESSAGE_STROUSTRUP_ALLMAN,
+                    fix: fixer => fixer.insertTextAfter(curlyToken, "\n")
                 });
             }
         }
@@ -270,20 +143,38 @@ module.exports = {
         //--------------------------------------------------------------------------
 
         return {
-            FunctionDeclaration: checkBlock("body"),
-            FunctionExpression: checkBlock("body"),
-            ArrowFunctionExpression: checkBlock("body"),
-            IfStatement: checkIfStatement,
-            TryStatement: checkTryStatement,
-            CatchClause: checkCatchClause,
-            DoWhileStatement: checkBlock("body"),
-            WhileStatement: checkBlock("body"),
-            WithStatement: checkBlock("body"),
-            ForStatement: checkBlock("body"),
-            ForInStatement: checkBlock("body"),
-            ForOfStatement: checkBlock("body"),
-            SwitchStatement: checkSwitchStatement
-        };
+            BlockStatement(node) {
+                if (!astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)) {
+                    validateCurlyPair(sourceCode.getFirstToken(node), sourceCode.getLastToken(node));
+                }
+            },
+            ClassBody(node) {
+                validateCurlyPair(sourceCode.getFirstToken(node), sourceCode.getLastToken(node));
+            },
+            SwitchStatement(node) {
+                const closingCurly = sourceCode.getLastToken(node);
+                const openingCurly = sourceCode.getTokenBefore(node.cases.length ? node.cases[0] : closingCurly);
+
+                validateCurlyPair(openingCurly, closingCurly);
+            },
+            IfStatement(node) {
+                if (node.consequent.type === "BlockStatement" && node.alternate) {
+
+                    // Handle the keyword after the `if` block (before `else`)
+                    validateCurlyBeforeKeyword(sourceCode.getLastToken(node.consequent));
+                }
+            },
+            TryStatement(node) {
+
+                // Handle the keyword after the `try` block (before `catch` or `finally`)
+                validateCurlyBeforeKeyword(sourceCode.getLastToken(node.block));
 
+                if (node.handler && node.finalizer) {
+
+                    // Handle the keyword after the `catch` block (before `finally`)
+                    validateCurlyBeforeKeyword(sourceCode.getLastToken(node.handler.body));
+                }
+            }
+        };
     }
 };
diff --git a/tools/eslint/lib/rules/capitalized-comments.js b/tools/eslint/lib/rules/capitalized-comments.js
index 29cff4450b535a..b8d5b8cd612d1e 100644
--- a/tools/eslint/lib/rules/capitalized-comments.js
+++ b/tools/eslint/lib/rules/capitalized-comments.js
@@ -9,6 +9,7 @@
 //------------------------------------------------------------------------------
 
 const LETTER_PATTERN = require("../util/patterns/letters");
+const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -16,7 +17,7 @@ const LETTER_PATTERN = require("../util/patterns/letters");
 
 const ALWAYS_MESSAGE = "Comments should not begin with a lowercase character",
     NEVER_MESSAGE = "Comments should not begin with an uppercase character",
-    DEFAULT_IGNORE_PATTERN = /^\s*(?:eslint|istanbul|jscs|jshint|globals?|exported)\b/,
+    DEFAULT_IGNORE_PATTERN = astUtils.COMMENTS_IGNORE_PATTERN,
     WHITESPACE = /\s/g,
     MAYBE_URL = /^\s*[^:/?#\s]+:\/\/[^?#]/,    // TODO: Combine w/ max-len pattern?
     DEFAULTS = {
@@ -163,8 +164,8 @@ module.exports = {
          * otherwise.
          */
         function isInlineComment(comment) {
-            const previousToken = sourceCode.getTokenOrCommentBefore(comment),
-                nextToken = sourceCode.getTokenOrCommentAfter(comment);
+            const previousToken = sourceCode.getTokenBefore(comment, { includeComments: true }),
+                nextToken = sourceCode.getTokenAfter(comment, { includeComments: true });
 
             return Boolean(
                 previousToken &&
@@ -181,7 +182,7 @@ module.exports = {
          * @returns {boolean} True if the comment follows a valid comment.
          */
         function isConsecutiveComment(comment) {
-            const previousTokenOrComment = sourceCode.getTokenOrCommentBefore(comment);
+            const previousTokenOrComment = sourceCode.getTokenBefore(comment, { includeComments: true });
 
             return Boolean(
                 previousTokenOrComment &&
@@ -264,9 +265,9 @@ module.exports = {
                 commentValid = isCommentValid(comment, options);
 
             if (!commentValid) {
-                const message = capitalize === "always" ?
-                    ALWAYS_MESSAGE :
-                    NEVER_MESSAGE;
+                const message = capitalize === "always"
+                    ? ALWAYS_MESSAGE
+                    : NEVER_MESSAGE;
 
                 context.report({
                     node: null,         // Intentionally using loc instead
diff --git a/tools/eslint/lib/rules/comma-dangle.js b/tools/eslint/lib/rules/comma-dangle.js
index af7ab2767f5566..17066d94791c6a 100644
--- a/tools/eslint/lib/rules/comma-dangle.js
+++ b/tools/eslint/lib/rules/comma-dangle.js
@@ -10,6 +10,7 @@
 //------------------------------------------------------------------------------
 
 const lodash = require("lodash");
+const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -20,7 +21,7 @@ const DEFAULT_OPTIONS = Object.freeze({
     objects: "never",
     imports: "never",
     exports: "never",
-    functions: "ignore",
+    functions: "ignore"
 });
 
 /**
@@ -53,7 +54,7 @@ function normalizeOptions(optionValue) {
             exports: optionValue,
 
             // For backward compatibility, always ignore functions.
-            functions: "ignore",
+            functions: "ignore"
         };
     }
     if (typeof optionValue === "object" && optionValue !== null) {
@@ -62,7 +63,7 @@ function normalizeOptions(optionValue) {
             objects: optionValue.objects || DEFAULT_OPTIONS.objects,
             imports: optionValue.imports || DEFAULT_OPTIONS.imports,
             exports: optionValue.exports || DEFAULT_OPTIONS.exports,
-            functions: optionValue.functions || DEFAULT_OPTIONS.functions,
+            functions: optionValue.functions || DEFAULT_OPTIONS.functions
         };
     }
 
@@ -121,7 +122,7 @@ module.exports = {
                         additionalProperties: false
                     }
                 ]
-            },
+            }
         ]
     },
 
@@ -178,7 +179,7 @@ module.exports = {
                 default: {
                     const nextToken = sourceCode.getTokenAfter(lastItem);
 
-                    if (nextToken.value === ",") {
+                    if (astUtils.isCommaToken(nextToken)) {
                         return nextToken;
                     }
                     return sourceCode.getLastToken(lastItem);
@@ -224,7 +225,7 @@ module.exports = {
 
             const trailingToken = getTrailingToken(node, lastItem);
 
-            if (trailingToken.value === ",") {
+            if (astUtils.isCommaToken(trailingToken)) {
                 context.report({
                     node: lastItem,
                     loc: trailingToken.loc.start,
@@ -312,7 +313,7 @@ module.exports = {
             "always-multiline": forceTrailingCommaIfMultiline,
             "only-multiline": allowTrailingCommaIfMultiline,
             never: forbidTrailingComma,
-            ignore: lodash.noop,
+            ignore: lodash.noop
         };
 
         return {
@@ -330,7 +331,7 @@ module.exports = {
             FunctionExpression: predicate[options.functions],
             ArrowFunctionExpression: predicate[options.functions],
             CallExpression: predicate[options.functions],
-            NewExpression: predicate[options.functions],
+            NewExpression: predicate[options.functions]
         };
     }
 };
diff --git a/tools/eslint/lib/rules/comma-spacing.js b/tools/eslint/lib/rules/comma-spacing.js
index f571cfa199675a..bb1dd68f63987e 100644
--- a/tools/eslint/lib/rules/comma-spacing.js
+++ b/tools/eslint/lib/rules/comma-spacing.js
@@ -53,16 +53,6 @@ module.exports = {
         // list of comma tokens to ignore for the check of leading whitespace
         const commaTokensToIgnore = [];
 
-        /**
-         * Determines if a given token is a comma operator.
-         * @param {ASTNode} token The token to check.
-         * @returns {boolean} True if the token is a comma, false if not.
-         * @private
-         */
-        function isComma(token) {
-            return !!token && (token.type === "Punctuator") && (token.value === ",");
-        }
-
         /**
          * Reports a spacing error with an appropriate message.
          * @param {ASTNode} node The binary expression node to report.
@@ -78,27 +68,27 @@ module.exports = {
                     if (options[dir]) {
                         if (dir === "before") {
                             return fixer.insertTextBefore(node, " ");
-                        } else {
-                            return fixer.insertTextAfter(node, " ");
                         }
-                    } else {
-                        let start, end;
-                        const newText = "";
+                        return fixer.insertTextAfter(node, " ");
 
-                        if (dir === "before") {
-                            start = otherNode.range[1];
-                            end = node.range[0];
-                        } else {
-                            start = node.range[1];
-                            end = otherNode.range[0];
-                        }
+                    }
+                    let start, end;
+                    const newText = "";
 
-                        return fixer.replaceTextRange([start, end], newText);
+                    if (dir === "before") {
+                        start = otherNode.range[1];
+                        end = node.range[0];
+                    } else {
+                        start = node.range[1];
+                        end = otherNode.range[0];
                     }
+
+                    return fixer.replaceTextRange([start, end], newText);
+
                 },
-                message: options[dir] ?
-                  "A space is required {{dir}} ','." :
-                  "There should be no space {{dir}} ','.",
+                message: options[dir]
+                  ? "A space is required {{dir}} ','."
+                  : "There should be no space {{dir}} ','.",
                 data: {
                     dir
                 }
@@ -147,7 +137,7 @@ module.exports = {
                 if (element === null) {
                     token = sourceCode.getTokenAfter(previousToken);
 
-                    if (isComma(token)) {
+                    if (astUtils.isCommaToken(token)) {
                         commaTokensToIgnore.push(token);
                     }
                 } else {
@@ -166,7 +156,7 @@ module.exports = {
             "Program:exit"() {
                 tokensAndComments.forEach((token, i) => {
 
-                    if (!isComma(token)) {
+                    if (!astUtils.isCommaToken(token)) {
                         return;
                     }
 
@@ -179,8 +169,8 @@ module.exports = {
 
                     validateCommaItemSpacing({
                         comma: token,
-                        left: isComma(previousToken) || commaTokensToIgnore.indexOf(token) > -1 ? null : previousToken,
-                        right: isComma(nextToken) ? null : nextToken
+                        left: astUtils.isCommaToken(previousToken) || commaTokensToIgnore.indexOf(token) > -1 ? null : previousToken,
+                        right: astUtils.isCommaToken(nextToken) ? null : nextToken
                     }, token);
                 });
             },
diff --git a/tools/eslint/lib/rules/comma-style.js b/tools/eslint/lib/rules/comma-style.js
index bb290f90b980d1..fcaecc662bce8c 100644
--- a/tools/eslint/lib/rules/comma-style.js
+++ b/tools/eslint/lib/rules/comma-style.js
@@ -48,7 +48,7 @@ module.exports = {
             FunctionDeclaration: true,
             FunctionExpression: true,
             ImportDeclaration: true,
-            ObjectPattern: true,
+            ObjectPattern: true
         };
 
         if (context.options.length === 2 && context.options[1].hasOwnProperty("exceptions")) {
@@ -63,16 +63,6 @@ module.exports = {
         // Helpers
         //--------------------------------------------------------------------------
 
-        /**
-         * Determines if a given token is a comma operator.
-         * @param {ASTNode} token The token to check.
-         * @returns {boolean} True if the token is a comma, false if not.
-         * @private
-         */
-        function isComma(token) {
-            return !!token && (token.type === "Punctuator") && (token.value === ",");
-        }
-
         /**
          * Modified text based on the style
          * @param {string} styleType Style type
@@ -192,7 +182,7 @@ module.exports = {
                         tokenBeforeComma = sourceCode.getTokenBefore(commaToken);
 
                     // Check if previous token is wrapped in parentheses
-                    if (tokenBeforeComma && tokenBeforeComma.value === ")") {
+                    if (tokenBeforeComma && astUtils.isClosingParenToken(tokenBeforeComma)) {
                         previousItemToken = tokenBeforeComma;
                     }
 
@@ -210,12 +200,16 @@ module.exports = {
                      * All comparisons are done based on these tokens directly, so
                      * they are always valid regardless of an undefined item.
                      */
-                    if (isComma(commaToken)) {
+                    if (astUtils.isCommaToken(commaToken)) {
                         validateCommaItemSpacing(previousItemToken, commaToken,
                                 currentItemToken, reportItem);
                     }
 
-                    previousItemToken = item ? sourceCode.getLastToken(item) : previousItemToken;
+                    if (item) {
+                        const tokenAfterItem = sourceCode.getTokenAfter(item, astUtils.isNotClosingParenToken);
+
+                        previousItemToken = tokenAfterItem ? sourceCode.getTokenBefore(tokenAfterItem) : sourceCode.ast.tokens[sourceCode.ast.tokens.length - 1];
+                    }
                 });
 
                 /*
@@ -229,7 +223,7 @@ module.exports = {
                     const lastToken = sourceCode.getLastToken(node),
                         nextToLastToken = sourceCode.getTokenBefore(lastToken);
 
-                    if (isComma(nextToLastToken)) {
+                    if (astUtils.isCommaToken(nextToLastToken)) {
                         validateCommaItemSpacing(
                             sourceCode.getTokenBefore(nextToLastToken),
                             nextToLastToken,
diff --git a/tools/eslint/lib/rules/complexity.js b/tools/eslint/lib/rules/complexity.js
index 2f3e4040799872..14617bc3537aef 100644
--- a/tools/eslint/lib/rules/complexity.js
+++ b/tools/eslint/lib/rules/complexity.js
@@ -6,6 +6,14 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const lodash = require("lodash");
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -81,17 +89,15 @@ module.exports = {
          * @private
          */
         function endFunction(node) {
+            const name = lodash.upperFirst(astUtils.getFunctionNameWithKind(node));
             const complexity = fns.pop();
-            let name = "anonymous";
-
-            if (node.id) {
-                name = node.id.name;
-            } else if (node.parent.type === "MethodDefinition" || node.parent.type === "Property") {
-                name = node.parent.key.name;
-            }
 
             if (complexity > THRESHOLD) {
-                context.report({ node, message: "Function '{{name}}' has a complexity of {{complexity}}.", data: { name, complexity } });
+                context.report({
+                    node,
+                    message: "{{name}} has a complexity of {{complexity}}.",
+                    data: { name, complexity }
+                });
             }
         }
 
diff --git a/tools/eslint/lib/rules/consistent-return.js b/tools/eslint/lib/rules/consistent-return.js
index 0c1a6a7493f663..20469772a91121 100644
--- a/tools/eslint/lib/rules/consistent-return.js
+++ b/tools/eslint/lib/rules/consistent-return.js
@@ -8,6 +8,8 @@
 // Requirements
 //------------------------------------------------------------------------------
 
+const lodash = require("lodash");
+
 const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
@@ -81,7 +83,7 @@ module.exports = {
          * @returns {void}
          */
         function checkLastSegment(node) {
-            let loc, type;
+            let loc, name;
 
             /*
              * Skip if it expected no return value or unreachable.
@@ -100,12 +102,11 @@ module.exports = {
 
                 // The head of program.
                 loc = { line: 1, column: 0 };
-                type = "program";
+                name = "program";
             } else if (node.type === "ArrowFunctionExpression") {
 
                 // `=>` token
-                loc = context.getSourceCode().getTokenBefore(node.body).loc.start;
-                type = "function";
+                loc = context.getSourceCode().getTokenBefore(node.body, astUtils.isArrowToken).loc.start;
             } else if (
                 node.parent.type === "MethodDefinition" ||
                 (node.parent.type === "Property" && node.parent.method)
@@ -113,33 +114,36 @@ module.exports = {
 
                 // Method name.
                 loc = node.parent.key.loc.start;
-                type = "method";
             } else {
 
                 // Function name or `function` keyword.
                 loc = (node.id || node).loc.start;
-                type = "function";
+            }
+
+            if (!name) {
+                name = astUtils.getFunctionNameWithKind(node);
             }
 
             // Reports.
             context.report({
                 node,
                 loc,
-                message: "Expected to return a value at the end of this {{type}}.",
-                data: { type }
+                message: "Expected to return a value at the end of {{name}}.",
+                data: { name }
             });
         }
 
         return {
 
             // Initializes/Disposes state of each code path.
-            onCodePathStart(codePath) {
+            onCodePathStart(codePath, node) {
                 funcInfo = {
                     upper: funcInfo,
                     codePath,
                     hasReturn: false,
                     hasReturnValue: false,
-                    message: ""
+                    message: "",
+                    node
                 };
             },
             onCodePathEnd() {
@@ -158,8 +162,11 @@ module.exports = {
                 if (!funcInfo.hasReturn) {
                     funcInfo.hasReturn = true;
                     funcInfo.hasReturnValue = hasReturnValue;
-                    funcInfo.message = "Expected {{which}} return value.";
+                    funcInfo.message = "{{name}} expected {{which}} return value.";
                     funcInfo.data = {
+                        name: funcInfo.node.type === "Program"
+                            ? "Program"
+                            : lodash.upperFirst(astUtils.getFunctionNameWithKind(funcInfo.node)),
                         which: hasReturnValue ? "a" : "no"
                     };
                 } else if (funcInfo.hasReturnValue !== hasReturnValue) {
diff --git a/tools/eslint/lib/rules/constructor-super.js b/tools/eslint/lib/rules/constructor-super.js
index e84df7e81da025..d0a238df8edbd3 100644
--- a/tools/eslint/lib/rules/constructor-super.js
+++ b/tools/eslint/lib/rules/constructor-super.js
@@ -209,9 +209,9 @@ module.exports = {
 
                 if (!calledInEveryPaths) {
                     context.report({
-                        message: calledInSomePaths ?
-                            "Lacked a call of 'super()' in some code paths." :
-                            "Expected to call 'super()'.",
+                        message: calledInSomePaths
+                            ? "Lacked a call of 'super()' in some code paths."
+                            : "Expected to call 'super()'.",
                         node: node.parent
                     });
                 }
diff --git a/tools/eslint/lib/rules/curly.js b/tools/eslint/lib/rules/curly.js
index 801552d69e151b..cd15b2d93574df 100644
--- a/tools/eslint/lib/rules/curly.js
+++ b/tools/eslint/lib/rules/curly.js
@@ -76,7 +76,7 @@ module.exports = {
         function isCollapsedOneLiner(node) {
             const before = sourceCode.getTokenBefore(node);
             const last = sourceCode.getLastToken(node);
-            const lastExcludingSemicolon = last.type === "Punctuator" && last.value === ";" ? sourceCode.getTokenBefore(last) : last;
+            const lastExcludingSemicolon = astUtils.isSemicolonToken(last) ? sourceCode.getTokenBefore(last) : last;
 
             return before.loc.start.line === lastExcludingSemicolon.loc.end.line;
         }
@@ -94,19 +94,23 @@ module.exports = {
             return first.loc.start.line === last.loc.end.line;
         }
 
+        /**
+         * Checks if the given token is an `else` token or not.
+         *
+         * @param {Token} token - The token to check.
+         * @returns {boolean} `true` if the token is an `else` token.
+         */
+        function isElseKeywordToken(token) {
+            return token.value === "else" && token.type === "Keyword";
+        }
+
         /**
          * Gets the `else` keyword token of a given `IfStatement` node.
          * @param {ASTNode} node - A `IfStatement` node to get.
          * @returns {Token} The `else` keyword token.
          */
         function getElseKeyword(node) {
-            let token = sourceCode.getTokenAfter(node.consequent);
-
-            while (token.type !== "Keyword" || token.value !== "else") {
-                token = sourceCode.getTokenAfter(token);
-            }
-
-            return token;
+            return node.alternate && sourceCode.getFirstTokenBetween(node.consequent, node.alternate, isElseKeywordToken);
         }
 
         /**
@@ -170,7 +174,7 @@ module.exports = {
             const tokenAfter = sourceCode.getTokenAfter(closingBracket);
             const lastBlockNode = sourceCode.getNodeByRangeIndex(tokenBefore.range[0]);
 
-            if (tokenBefore.value === ";") {
+            if (astUtils.isSemicolonToken(tokenBefore)) {
 
                 // If the last statement already has a semicolon, don't add another one.
                 return false;
diff --git a/tools/eslint/lib/rules/default-case.js b/tools/eslint/lib/rules/default-case.js
index 070ff3c7a9666b..3efcbbced5dcab 100644
--- a/tools/eslint/lib/rules/default-case.js
+++ b/tools/eslint/lib/rules/default-case.js
@@ -31,9 +31,9 @@ module.exports = {
 
     create(context) {
         const options = context.options[0] || {};
-        const commentPattern = options.commentPattern ?
-            new RegExp(options.commentPattern) :
-            DEFAULT_COMMENT_PATTERN;
+        const commentPattern = options.commentPattern
+            ? new RegExp(options.commentPattern)
+            : DEFAULT_COMMENT_PATTERN;
 
         const sourceCode = context.getSourceCode();
 
diff --git a/tools/eslint/lib/rules/dot-notation.js b/tools/eslint/lib/rules/dot-notation.js
index d55b098b25b9b3..abb9b4b4881b34 100644
--- a/tools/eslint/lib/rules/dot-notation.js
+++ b/tools/eslint/lib/rules/dot-notation.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -64,20 +70,20 @@ module.exports = {
                                 propertyValue: JSON.stringify(node.property.value)
                             },
                             fix(fixer) {
-                                const leftBracket = sourceCode.getTokenBefore(node.property);
-                                const rightBracket = sourceCode.getTokenAfter(node.property);
-                                const textBeforeProperty = sourceCode.text.slice(leftBracket.range[1], node.property.range[0]);
-                                const textAfterProperty = sourceCode.text.slice(node.property.range[1], rightBracket.range[0]);
+                                const leftBracket = sourceCode.getTokenAfter(node.object, astUtils.isOpeningBracketToken);
+                                const rightBracket = sourceCode.getLastToken(node);
 
-                                if (textBeforeProperty.trim() || textAfterProperty.trim()) {
+                                if (sourceCode.getFirstTokenBetween(leftBracket, rightBracket, { includeComments: true, filter: astUtils.isCommentToken })) {
 
                                     // Don't perform any fixes if there are comments inside the brackets.
                                     return null;
                                 }
 
+                                const textBeforeDot = astUtils.isDecimalInteger(node.object) ? " " : "";
+
                                 return fixer.replaceTextRange(
                                     [leftBracket.range[0], rightBracket.range[1]],
-                                    `.${node.property.value}`
+                                    `${textBeforeDot}.${node.property.value}`
                                 );
                             }
                         });
diff --git a/tools/eslint/lib/rules/eqeqeq.js b/tools/eslint/lib/rules/eqeqeq.js
index d77607afb5f2aa..8801102e649aa4 100644
--- a/tools/eslint/lib/rules/eqeqeq.js
+++ b/tools/eslint/lib/rules/eqeqeq.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -57,9 +63,9 @@ module.exports = {
         const options = context.options[1] || {};
         const sourceCode = context.getSourceCode();
 
-        const nullOption = (config === "always") ?
-            options.null || "always" :
-            "ignore";
+        const nullOption = (config === "always")
+            ? options.null || "always"
+            : "ignore";
         const enforceRuleForNull = (nullOption === "always");
         const enforceInverseRuleForNull = (nullOption === "never");
 
@@ -100,8 +106,7 @@ module.exports = {
          * @private
          */
         function isNullCheck(node) {
-            return (node.right.type === "Literal" && node.right.value === null) ||
-                    (node.left.type === "Literal" && node.left.value === null);
+            return astUtils.isNullLiteral(node.right) || astUtils.isNullLiteral(node.left);
         }
 
         /**
@@ -134,7 +139,11 @@ module.exports = {
 
                     // If the comparison is a `typeof` comparison or both sides are literals with the same type, then it's safe to fix.
                     if (isTypeOfBinary(node) || areLiteralsAndSameType(node)) {
-                        const operatorToken = sourceCode.getTokensBetween(node.left, node.right).find(token => token.value === node.operator);
+                        const operatorToken = sourceCode.getFirstTokenBetween(
+                            node.left,
+                            node.right,
+                            token => token.value === node.operator
+                        );
 
                         return fixer.replaceText(operatorToken, expectedOperator);
                     }
diff --git a/tools/eslint/lib/rules/func-call-spacing.js b/tools/eslint/lib/rules/func-call-spacing.js
index 5c416f0373fcac..4fd78c864b3890 100644
--- a/tools/eslint/lib/rules/func-call-spacing.js
+++ b/tools/eslint/lib/rules/func-call-spacing.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -67,28 +73,19 @@ module.exports = {
          * @private
          */
         function checkSpacing(node) {
+            const lastToken = sourceCode.getLastToken(node);
             const lastCalleeToken = sourceCode.getLastToken(node.callee);
-            let prevToken = lastCalleeToken;
-            let parenToken = sourceCode.getTokenAfter(lastCalleeToken);
-
-            // advances to an open parenthesis.
-            while (
-                parenToken &&
-                parenToken.range[1] < node.range[1] &&
-                parenToken.value !== "("
-            ) {
-                prevToken = parenToken;
-                parenToken = sourceCode.getTokenAfter(parenToken);
-            }
+            const parenToken = sourceCode.getFirstTokenBetween(lastCalleeToken, lastToken, astUtils.isOpeningParenToken);
+            const prevToken = parenToken && sourceCode.getTokenBefore(parenToken);
 
             // Parens in NewExpression are optional
             if (!(parenToken && parenToken.range[1] < node.range[1])) {
                 return;
             }
 
-            const hasWhitespace = sourceCode.isSpaceBetweenTokens(prevToken, parenToken);
-            const hasNewline = hasWhitespace &&
-                /\n/.test(text.slice(prevToken.range[1], parenToken.range[0]).replace(/\/\*.*?\*\//g, ""));
+            const textBetweenTokens = text.slice(prevToken.range[1], parenToken.range[0]).replace(/\/\*.*?\*\//g, "");
+            const hasWhitespace = /\s/.test(textBetweenTokens);
+            const hasNewline = hasWhitespace && astUtils.LINEBREAK_MATCHER.test(textBetweenTokens);
 
             /*
              * never allowNewlines hasWhitespace hasNewline message
diff --git a/tools/eslint/lib/rules/func-name-matching.js b/tools/eslint/lib/rules/func-name-matching.js
index 4eed7a68ea2b51..db06d5d468d774 100644
--- a/tools/eslint/lib/rules/func-name-matching.js
+++ b/tools/eslint/lib/rules/func-name-matching.js
@@ -132,6 +132,15 @@ module.exports = {
             });
         }
 
+        /**
+         * Determines whether a given node is a string literal
+         * @param {ASTNode} node The node to check
+         * @returns {boolean} `true` if the node is a string literal
+         */
+        function isStringLiteral(node) {
+            return node.type === "Literal" && typeof node.value === "string";
+        }
+
         //--------------------------------------------------------------------------
         // Public
         //--------------------------------------------------------------------------
@@ -139,7 +148,7 @@ module.exports = {
         return {
 
             VariableDeclarator(node) {
-                if (!node.init || node.init.type !== "FunctionExpression") {
+                if (!node.init || node.init.type !== "FunctionExpression" || node.id.type !== "Identifier") {
                     return;
                 }
                 if (node.init.id && shouldWarn(node.id.name, node.init.id.name)) {
@@ -148,14 +157,16 @@ module.exports = {
             },
 
             AssignmentExpression(node) {
-                if (node.right.type !== "FunctionExpression" ||
-                   (node.left.computed && node.left.property.type !== "Literal") ||
-                    (!includeModuleExports && isModuleExports(node.left))
-                   ) {
+                if (
+                    node.right.type !== "FunctionExpression" ||
+                    (node.left.computed && node.left.property.type !== "Literal") ||
+                    (!includeModuleExports && isModuleExports(node.left)) ||
+                    (node.left.type !== "Identifier" && node.left.type !== "MemberExpression")
+                ) {
                     return;
                 }
 
-                const isProp = node.left.type === "MemberExpression" ? true : false;
+                const isProp = node.left.type === "MemberExpression";
                 const name = isProp ? astUtils.getStaticPropertyName(node.left) : node.left.name;
 
                 if (node.right.id && isIdentifier(name) && shouldWarn(name, node.right.id.name)) {
@@ -164,13 +175,13 @@ module.exports = {
             },
 
             Property(node) {
-                if (node.value.type !== "FunctionExpression" || !node.value.id || node.computed && node.key.type !== "Literal") {
+                if (node.value.type !== "FunctionExpression" || !node.value.id || node.computed && !isStringLiteral(node.key)) {
                     return;
                 }
                 if (node.key.type === "Identifier" && shouldWarn(node.key.name, node.value.id.name)) {
                     report(node, node.key.name, node.value.id.name, true);
                 } else if (
-                    node.key.type === "Literal" &&
+                    isStringLiteral(node.key) &&
                     isIdentifier(node.key.value, ecmaVersion) &&
                     shouldWarn(node.key.value, node.value.id.name)
                 ) {
diff --git a/tools/eslint/lib/rules/func-names.js b/tools/eslint/lib/rules/func-names.js
index 0d8567149493dc..e7f950c9ba593d 100644
--- a/tools/eslint/lib/rules/func-names.js
+++ b/tools/eslint/lib/rules/func-names.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 /**
  * Checks whether or not a given variable is a function name.
  * @param {escope.Variable} variable - A variable to check.
@@ -82,15 +88,24 @@ module.exports = {
                     return;
                 }
 
-                const name = node.id && node.id.name;
+                const hasName = Boolean(node.id && node.id.name);
+                const name = astUtils.getFunctionNameWithKind(node);
 
                 if (never) {
-                    if (name) {
-                        context.report({ node, message: "Unexpected function expression name." });
+                    if (hasName) {
+                        context.report({
+                            node,
+                            message: "Unexpected named {{name}}.",
+                            data: { name }
+                        });
                     }
                 } else {
-                    if (!name && (asNeeded ? !hasInferredName(node) : !isObjectOrClassMethod(node))) {
-                        context.report({ node, message: "Missing function expression name." });
+                    if (!hasName && (asNeeded ? !hasInferredName(node) : !isObjectOrClassMethod(node))) {
+                        context.report({
+                            node,
+                            message: "Unexpected unnamed {{name}}.",
+                            data: { name }
+                        });
                     }
                 }
             }
diff --git a/tools/eslint/lib/rules/generator-star-spacing.js b/tools/eslint/lib/rules/generator-star-spacing.js
index fc676d0cbbb85f..9836e4ead9767f 100644
--- a/tools/eslint/lib/rules/generator-star-spacing.js
+++ b/tools/eslint/lib/rules/generator-star-spacing.js
@@ -55,21 +55,26 @@ module.exports = {
         const sourceCode = context.getSourceCode();
 
         /**
-         * Gets `*` token from a given node.
+         * Checks if the given token is a star token or not.
          *
-         * @param {ASTNode} node - A node to get `*` token. This is one of
-         *      FunctionDeclaration, FunctionExpression, Property, and
-         *      MethodDefinition.
-         * @returns {Token} `*` token.
+         * @param {Token} token - The token to check.
+         * @returns {boolean} `true` if the token is a star token.
          */
-        function getStarToken(node) {
-            let token = sourceCode.getFirstToken(node);
-
-            while (token.value !== "*") {
-                token = sourceCode.getTokenAfter(token);
-            }
+        function isStarToken(token) {
+            return token.value === "*" && token.type === "Punctuator";
+        }
 
-            return token;
+        /**
+         * Gets the generator star token of the given function node.
+         *
+         * @param {ASTNode} node - The function node to get.
+         * @returns {Token} Found star token.
+         */
+        function getStarToken(node) {
+            return sourceCode.getFirstToken(
+                (node.parent.method || node.parent.type === "MethodDefinition") ? node.parent : node,
+                isStarToken
+            );
         }
 
         /**
@@ -116,17 +121,11 @@ module.exports = {
          * @returns {void}
          */
         function checkFunction(node) {
-            let starToken;
-
             if (!node.generator) {
                 return;
             }
 
-            if (node.parent.method || node.parent.type === "MethodDefinition") {
-                starToken = getStarToken(node.parent);
-            } else {
-                starToken = getStarToken(node);
-            }
+            const starToken = getStarToken(node);
 
             // Only check before when preceded by `function`|`static` keyword
             const prevToken = sourceCode.getTokenBefore(starToken);
diff --git a/tools/eslint/lib/rules/global-require.js b/tools/eslint/lib/rules/global-require.js
index bfd01433957e3e..367fe590ed2210 100644
--- a/tools/eslint/lib/rules/global-require.js
+++ b/tools/eslint/lib/rules/global-require.js
@@ -29,9 +29,9 @@ function findReference(scope, node) {
     /* istanbul ignore else: correctly returns null */
     if (references.length === 1) {
         return references[0];
-    } else {
-        return null;
     }
+    return null;
+
 }
 
 /**
diff --git a/tools/eslint/lib/rules/id-blacklist.js b/tools/eslint/lib/rules/id-blacklist.js
index f94f6d0a4684d4..d03ee1ec233d07 100644
--- a/tools/eslint/lib/rules/id-blacklist.js
+++ b/tools/eslint/lib/rules/id-blacklist.js
@@ -55,8 +55,8 @@ module.exports = {
          * @returns {boolean} whether an error should be reported or not
          */
         function shouldReport(effectiveParent, name) {
-            return effectiveParent.type !== "CallExpression"
-                && effectiveParent.type !== "NewExpression" &&
+            return effectiveParent.type !== "CallExpression" &&
+                effectiveParent.type !== "NewExpression" &&
                 isInvalid(name);
         }
 
diff --git a/tools/eslint/lib/rules/id-length.js b/tools/eslint/lib/rules/id-length.js
index 6a6c69d1017e8c..341f929cdec27e 100644
--- a/tools/eslint/lib/rules/id-length.js
+++ b/tools/eslint/lib/rules/id-length.js
@@ -104,9 +104,9 @@ module.exports = {
                 if (isValidExpression && (isValidExpression === true || isValidExpression(parent, node))) {
                     context.report({
                         node,
-                        message: isShort ?
-                            "Identifier name '{{name}}' is too short (< {{min}})." :
-                            "Identifier name '{{name}}' is too long (> {{max}}).",
+                        message: isShort
+                            ? "Identifier name '{{name}}' is too short (< {{min}})."
+                            : "Identifier name '{{name}}' is too long (> {{max}}).",
                         data: { name, min: minLength, max: maxLength }
                     });
                 }
diff --git a/tools/eslint/lib/rules/id-match.js b/tools/eslint/lib/rules/id-match.js
index 29d06c36024c57..7536e07b10945a 100644
--- a/tools/eslint/lib/rules/id-match.js
+++ b/tools/eslint/lib/rules/id-match.js
@@ -63,8 +63,8 @@ module.exports = {
          * @returns {boolean} whether an error should be reported or not
          */
         function shouldReport(effectiveParent, name) {
-            return effectiveParent.type !== "CallExpression"
-                && effectiveParent.type !== "NewExpression" &&
+            return effectiveParent.type !== "CallExpression" &&
+                effectiveParent.type !== "NewExpression" &&
                 isInvalid(name);
         }
 
diff --git a/tools/eslint/lib/rules/indent.js b/tools/eslint/lib/rules/indent.js
index 6c3c27c8e1941a..bba1b20bcf4407 100644
--- a/tools/eslint/lib/rules/indent.js
+++ b/tools/eslint/lib/rules/indent.js
@@ -8,6 +8,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -435,15 +441,10 @@ module.exports = {
          * @returns {void}
          */
         function checkLastReturnStatementLineIndent(node, firstLineIndent) {
-            const nodeLastToken = sourceCode.getLastToken(node);
-            let lastToken = nodeLastToken;
 
             // in case if return statement ends with ');' we have traverse back to ')'
             // otherwise we'll measure indent for ';' and replace ')'
-            while (lastToken.value !== ")") {
-                lastToken = sourceCode.getTokenBefore(lastToken);
-            }
-
+            const lastToken = sourceCode.getLastToken(node, astUtils.isClosingParenToken);
             const textBeforeClosingParenthesis = sourceCode.getText(lastToken, lastToken.loc.start.column).slice(0, -1);
 
             if (textBeforeClosingParenthesis.trim()) {
@@ -691,9 +692,9 @@ module.exports = {
         function isFirstArrayElementOnSameLine(node) {
             if (node.type === "ArrayExpression" && node.elements[0]) {
                 return node.elements[0].loc.start.line === node.loc.start.line && node.elements[0].type === "ObjectExpression";
-            } else {
-                return false;
             }
+            return false;
+
         }
 
         /**
@@ -729,7 +730,7 @@ module.exports = {
                         } else if (parent.type === "ObjectExpression" || parent.type === "ArrayExpression") {
                             const parentElements = node.parent.type === "ObjectExpression" ? node.parent.properties : node.parent.elements;
 
-                            if (parentElements[0].loc.start.line === parent.loc.start.line && parentElements[0].loc.end.line !== parent.loc.start.line) {
+                            if (parentElements[0] && parentElements[0].loc.start.line === parent.loc.start.line && parentElements[0].loc.end.line !== parent.loc.start.line) {
 
                                 /*
                                  * If the first element of the array spans multiple lines, don't increase the expected indentation of the rest.
@@ -936,20 +937,20 @@ module.exports = {
 
             if (caseIndentStore[switchNode.loc.start.line]) {
                 return caseIndentStore[switchNode.loc.start.line];
+            }
+            if (typeof switchIndent === "undefined") {
+                switchIndent = getNodeIndent(switchNode).goodChar;
+            }
+
+            if (switchNode.cases.length > 0 && options.SwitchCase === 0) {
+                caseIndent = switchIndent;
             } else {
-                if (typeof switchIndent === "undefined") {
-                    switchIndent = getNodeIndent(switchNode).goodChar;
-                }
+                caseIndent = switchIndent + (indentSize * options.SwitchCase);
+            }
 
-                if (switchNode.cases.length > 0 && options.SwitchCase === 0) {
-                    caseIndent = switchIndent;
-                } else {
-                    caseIndent = switchIndent + (indentSize * options.SwitchCase);
-                }
+            caseIndentStore[switchNode.loc.start.line] = caseIndent;
+            return caseIndent;
 
-                caseIndentStore[switchNode.loc.start.line] = caseIndent;
-                return caseIndent;
-            }
         }
 
         /**
diff --git a/tools/eslint/lib/rules/key-spacing.js b/tools/eslint/lib/rules/key-spacing.js
index 8d7564a5bbf246..ce150753b849b6 100644
--- a/tools/eslint/lib/rules/key-spacing.js
+++ b/tools/eslint/lib/rules/key-spacing.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Helpers
 //------------------------------------------------------------------------------
@@ -15,7 +21,7 @@
  * @returns {boolean} True if str contains a line terminator.
  */
 function containsLineTerminator(str) {
-    return /[\n\r\u2028\u2029]/.test(str);
+    return astUtils.LINEBREAK_MATCHER.test(str);
 }
 
 /**
@@ -364,14 +370,9 @@ module.exports = {
          * @returns {ASTNode} The last token before a colon punctuator.
          */
         function getLastTokenBeforeColon(node) {
-            let prevNode;
+            const colonToken = sourceCode.getTokenAfter(node, astUtils.isColonToken);
 
-            while (node && (node.type !== "Punctuator" || node.value !== ":")) {
-                prevNode = node;
-                node = sourceCode.getTokenAfter(node);
-            }
-
-            return prevNode;
+            return sourceCode.getTokenBefore(colonToken);
         }
 
         /**
@@ -381,12 +382,7 @@ module.exports = {
          * @returns {ASTNode} The colon punctuator.
          */
         function getNextColon(node) {
-
-            while (node && (node.type !== "Punctuator" || node.value !== ":")) {
-                node = sourceCode.getTokenAfter(node);
-            }
-
-            return node;
+            return sourceCode.getTokenAfter(node, astUtils.isColonToken);
         }
 
         /**
@@ -417,8 +413,8 @@ module.exports = {
         function report(property, side, whitespace, expected, mode) {
             const diff = whitespace.length - expected,
                 nextColon = getNextColon(property.key),
-                tokenBeforeColon = sourceCode.getTokenOrCommentBefore(nextColon),
-                tokenAfterColon = sourceCode.getTokenOrCommentAfter(nextColon),
+                tokenBeforeColon = sourceCode.getTokenBefore(nextColon, { includeComments: true }),
+                tokenAfterColon = sourceCode.getTokenAfter(nextColon, { includeComments: true }),
                 isKeySide = side === "key",
                 locStart = isKeySide ? tokenBeforeColon.loc.start : tokenAfterColon.loc.start,
                 isExtra = diff > 0,
@@ -628,15 +624,16 @@ module.exports = {
                 }
             };
 
-        } else { // Obey beforeColon and afterColon in each property as configured
+        }
+
+        // Obey beforeColon and afterColon in each property as configured
+        return {
+            Property(node) {
+                verifySpacing(node, isSingleLine(node.parent) ? singleLineOptions : multiLineOptions);
+            }
+        };
 
-            return {
-                Property(node) {
-                    verifySpacing(node, isSingleLine(node.parent) ? singleLineOptions : multiLineOptions);
-                }
-            };
 
-        }
 
     }
 };
diff --git a/tools/eslint/lib/rules/keyword-spacing.js b/tools/eslint/lib/rules/keyword-spacing.js
index 1dfc291f6e827b..218cfd02be68b9 100644
--- a/tools/eslint/lib/rules/keyword-spacing.js
+++ b/tools/eslint/lib/rules/keyword-spacing.js
@@ -342,11 +342,7 @@ module.exports = {
          */
         function checkSpacingAroundTokenBefore(node) {
             if (node) {
-                let token = sourceCode.getTokenBefore(node);
-
-                while (token.type !== "Keyword") {
-                    token = sourceCode.getTokenBefore(token);
-                }
+                const token = sourceCode.getTokenBefore(node, astUtils.isKeywordToken);
 
                 checkSpacingAround(token);
             }
@@ -363,7 +359,8 @@ module.exports = {
             const firstToken = node && sourceCode.getFirstToken(node);
 
             if (firstToken &&
-                (firstToken.type === "Keyword" || firstToken.value === "async")
+                ((firstToken.type === "Keyword" && firstToken.value === "function") ||
+                firstToken.value === "async")
             ) {
                 checkSpacingBefore(firstToken);
             }
@@ -439,14 +436,7 @@ module.exports = {
          */
         function checkSpacingForForOfStatement(node) {
             checkSpacingAroundFirstToken(node);
-
-            // `of` is not a keyword token.
-            let token = sourceCode.getTokenBefore(node.right);
-
-            while (token.value !== "of") {
-                token = sourceCode.getTokenBefore(token);
-            }
-            checkSpacingAround(token);
+            checkSpacingAround(sourceCode.getTokenBefore(node.right, astUtils.isNotOpeningParenToken));
         }
 
         /**
@@ -506,11 +496,25 @@ module.exports = {
                     node.value.async
                 )
             ) {
-                const token = sourceCode.getFirstToken(
-                    node,
-                    node.static ? 1 : 0
+                const token = sourceCode.getTokenBefore(
+                    node.key,
+                    tok => {
+                        switch (tok.value) {
+                            case "get":
+                            case "set":
+                            case "async":
+                                return true;
+                            default:
+                                return false;
+                        }
+                    }
                 );
 
+                if (!token) {
+                    throw new Error("Failed to find token get, set, or async beside method name");
+                }
+
+
                 checkSpacingAround(token);
             }
         }
diff --git a/tools/eslint/lib/rules/line-comment-position.js b/tools/eslint/lib/rules/line-comment-position.js
index fa2384e88a8583..dd8f2b9ad6aa91 100644
--- a/tools/eslint/lib/rules/line-comment-position.js
+++ b/tools/eslint/lib/rules/line-comment-position.js
@@ -4,6 +4,8 @@
  */
 "use strict";
 
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -33,6 +35,9 @@ module.exports = {
                             },
                             applyDefaultPatterns: {
                                 type: "boolean"
+                            },
+                            applyDefaultIgnorePatterns: {
+                                type: "boolean"
                             }
                         },
                         additionalProperties: false
@@ -43,12 +48,11 @@ module.exports = {
     },
 
     create(context) {
-        const DEFAULT_IGNORE_PATTERN = "^\\s*(?:eslint|jshint\\s+|jslint\\s+|istanbul\\s+|globals?\\s+|exported\\s+|jscs|falls?\\s?through)";
         const options = context.options[0];
 
         let above,
             ignorePattern,
-            applyDefaultPatterns = true;
+            applyDefaultIgnorePatterns = true;
 
         if (!options || typeof options === "string") {
             above = !options || options === "above";
@@ -56,10 +60,16 @@ module.exports = {
         } else {
             above = options.position === "above";
             ignorePattern = options.ignorePattern;
-            applyDefaultPatterns = options.applyDefaultPatterns !== false;
+
+            if (options.hasOwnProperty("applyDefaultIgnorePatterns")) {
+                applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false;
+            } else {
+                applyDefaultIgnorePatterns = options.applyDefaultPatterns !== false;
+            }
         }
 
-        const defaultIgnoreRegExp = new RegExp(DEFAULT_IGNORE_PATTERN);
+        const defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN;
+        const fallThroughRegExp = /^\s*falls?\s?through/;
         const customIgnoreRegExp = new RegExp(ignorePattern);
         const sourceCode = context.getSourceCode();
 
@@ -69,7 +79,7 @@ module.exports = {
 
         return {
             LineComment(node) {
-                if (applyDefaultPatterns && defaultIgnoreRegExp.test(node.value)) {
+                if (applyDefaultIgnorePatterns && (defaultIgnoreRegExp.test(node.value) || fallThroughRegExp.test(node.value))) {
                     return;
                 }
 
@@ -77,7 +87,7 @@ module.exports = {
                     return;
                 }
 
-                const previous = sourceCode.getTokenOrCommentBefore(node);
+                const previous = sourceCode.getTokenBefore(node, { includeComments: true });
                 const isOnSameLine = previous && previous.loc.end.line === node.loc.start.line;
 
                 if (above) {
diff --git a/tools/eslint/lib/rules/linebreak-style.js b/tools/eslint/lib/rules/linebreak-style.js
index 6f1a451cdb47bb..907bc02ec4c6b1 100644
--- a/tools/eslint/lib/rules/linebreak-style.js
+++ b/tools/eslint/lib/rules/linebreak-style.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -60,7 +66,7 @@ module.exports = {
                     expectedLF = linebreakStyle === "unix",
                     expectedLFChars = expectedLF ? "\n" : "\r\n",
                     source = sourceCode.getText(),
-                    pattern = /\r\n|\r|\n|\u2028|\u2029/g;
+                    pattern = astUtils.createGlobalLinebreakMatcher();
                 let match;
 
                 let i = 0;
diff --git a/tools/eslint/lib/rules/lines-around-comment.js b/tools/eslint/lib/rules/lines-around-comment.js
index 83751cd6a50ad6..e37dd8611ddc8b 100644
--- a/tools/eslint/lib/rules/lines-around-comment.js
+++ b/tools/eslint/lib/rules/lines-around-comment.js
@@ -93,6 +93,12 @@ module.exports = {
                     },
                     allowArrayEnd: {
                         type: "boolean"
+                    },
+                    ignorePattern: {
+                        type: "string"
+                    },
+                    applyDefaultIgnorePatterns: {
+                        type: "boolean"
                     }
                 },
                 additionalProperties: false
@@ -103,6 +109,11 @@ module.exports = {
     create(context) {
 
         const options = context.options[0] ? Object.assign({}, context.options[0]) : {};
+        const ignorePattern = options.ignorePattern;
+        const defaultIgnoreRegExp = astUtils.COMMENTS_IGNORE_PATTERN;
+        const customIgnoreRegExp = new RegExp(ignorePattern);
+        const applyDefaultIgnorePatterns = options.applyDefaultIgnorePatterns !== false;
+
 
         options.beforeLineComment = options.beforeLineComment || false;
         options.afterLineComment = options.afterLineComment || false;
@@ -139,7 +150,7 @@ module.exports = {
 
             token = node;
             do {
-                token = sourceCode.getTokenOrCommentBefore(token);
+                token = sourceCode.getTokenBefore(token, { includeComments: true });
             } while (isCommentNodeType(token));
 
             if (token && astUtils.isTokenOnSameLine(token, node)) {
@@ -148,7 +159,7 @@ module.exports = {
 
             token = node;
             do {
-                token = sourceCode.getTokenOrCommentAfter(token);
+                token = sourceCode.getTokenAfter(token, { includeComments: true });
             } while (isCommentNodeType(token));
 
             if (token && astUtils.isTokenOnSameLine(node, token)) {
@@ -270,6 +281,14 @@ module.exports = {
          * @returns {void}
          */
         function checkForEmptyLine(node, opts) {
+            if (applyDefaultIgnorePatterns && defaultIgnoreRegExp.test(node.value)) {
+                return;
+            }
+
+            if (ignorePattern && customIgnoreRegExp.test(node.value)) {
+                return;
+            }
+
             let after = opts.after,
                 before = opts.before;
 
@@ -300,8 +319,8 @@ module.exports = {
                 return;
             }
 
-            const previousTokenOrComment = sourceCode.getTokenOrCommentBefore(node);
-            const nextTokenOrComment = sourceCode.getTokenOrCommentAfter(node);
+            const previousTokenOrComment = sourceCode.getTokenBefore(node, { includeComments: true });
+            const nextTokenOrComment = sourceCode.getTokenAfter(node, { includeComments: true });
 
             // check for newline before
             if (!exceptionStartAllowed && before && !lodash.includes(commentAndEmptyLines, prevLineNum) &&
diff --git a/tools/eslint/lib/rules/lines-around-directive.js b/tools/eslint/lib/rules/lines-around-directive.js
index b1e54e940b8f64..89dd9c6aeedf40 100644
--- a/tools/eslint/lib/rules/lines-around-directive.js
+++ b/tools/eslint/lib/rules/lines-around-directive.js
@@ -31,7 +31,7 @@ module.exports = {
                         },
                         after: {
                             enum: ["always", "never"]
-                        },
+                        }
                     },
                     additionalProperties: false,
                     minProperties: 2
@@ -57,7 +57,7 @@ module.exports = {
          * @returns {boolean} Whether or not the passed in node is preceded by a blank newline.
          */
         function hasNewlineBefore(node) {
-            const tokenBefore = sourceCode.getTokenOrCommentBefore(node);
+            const tokenBefore = sourceCode.getTokenBefore(node, { includeComments: true });
             const tokenLineBefore = tokenBefore ? tokenBefore.loc.end.line : 0;
 
             return node.loc.start.line - tokenLineBefore >= 2;
@@ -74,7 +74,7 @@ module.exports = {
             const lastToken = sourceCode.getLastToken(node);
             const secondToLastToken = sourceCode.getTokenBefore(lastToken);
 
-            return lastToken.type === "Punctuator" && lastToken.value === ";" && lastToken.loc.start.line > secondToLastToken.loc.end.line
+            return astUtils.isSemicolonToken(lastToken) && lastToken.loc.start.line > secondToLastToken.loc.end.line
                 ? secondToLastToken
                 : lastToken;
         }
@@ -86,7 +86,7 @@ module.exports = {
          */
         function hasNewlineAfter(node) {
             const lastToken = getLastTokenOnLine(node);
-            const tokenAfter = sourceCode.getTokenOrCommentAfter(lastToken);
+            const tokenAfter = sourceCode.getTokenAfter(lastToken, { includeComments: true });
 
             return tokenAfter.loc.start.line - lastToken.loc.end.line >= 2;
         }
@@ -131,7 +131,7 @@ module.exports = {
             }
 
             const firstDirective = directives[0];
-            const hasTokenOrCommentBefore = !!sourceCode.getTokenOrCommentBefore(firstDirective);
+            const hasTokenOrCommentBefore = !!sourceCode.getTokenBefore(firstDirective, { includeComments: true });
 
             // Only check before the first directive if it is preceded by a comment or if it is at the top of
             // the file and expectLineBefore is set to "never". This is to not force a newline at the top of
diff --git a/tools/eslint/lib/rules/max-lines.js b/tools/eslint/lib/rules/max-lines.js
index 08cf9f6084b2a1..297c75dc138ad6 100644
--- a/tools/eslint/lib/rules/max-lines.js
+++ b/tools/eslint/lib/rules/max-lines.js
@@ -90,7 +90,7 @@ module.exports = {
 
             token = comment;
             do {
-                token = sourceCode.getTokenOrCommentBefore(token);
+                token = sourceCode.getTokenBefore(token, { includeComments: true });
             } while (isCommentNodeType(token));
 
             if (token && astUtils.isTokenOnSameLine(token, comment)) {
@@ -99,7 +99,7 @@ module.exports = {
 
             token = comment;
             do {
-                token = sourceCode.getTokenOrCommentAfter(token);
+                token = sourceCode.getTokenAfter(token, { includeComments: true });
             } while (isCommentNodeType(token));
 
             if (token && astUtils.isTokenOnSameLine(comment, token)) {
@@ -134,7 +134,7 @@ module.exports = {
                         message: "File must be at most {{max}} lines long. It's {{actual}} lines long.",
                         data: {
                             max,
-                            actual: lines.length,
+                            actual: lines.length
                         }
                     });
                 }
diff --git a/tools/eslint/lib/rules/max-params.js b/tools/eslint/lib/rules/max-params.js
index bbf087092e5057..85838adaccb846 100644
--- a/tools/eslint/lib/rules/max-params.js
+++ b/tools/eslint/lib/rules/max-params.js
@@ -5,6 +5,14 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const lodash = require("lodash");
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -66,10 +74,15 @@ module.exports = {
          */
         function checkFunction(node) {
             if (node.params.length > numParams) {
-                context.report({ node, message: "This function has too many parameters ({{count}}). Maximum allowed is {{max}}.", data: {
-                    count: node.params.length,
-                    max: numParams
-                } });
+                context.report({
+                    node,
+                    message: "{{name}} has too many parameters ({{count}}). Maximum allowed is {{max}}.",
+                    data: {
+                        name: lodash.upperFirst(astUtils.getFunctionNameWithKind(node)),
+                        count: node.params.length,
+                        max: numParams
+                    }
+                });
             }
         }
 
diff --git a/tools/eslint/lib/rules/max-statements-per-line.js b/tools/eslint/lib/rules/max-statements-per-line.js
index 888ec37eda0fb9..3bf370efd8805c 100644
--- a/tools/eslint/lib/rules/max-statements-per-line.js
+++ b/tools/eslint/lib/rules/max-statements-per-line.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -60,7 +66,7 @@ module.exports = {
                     data: {
                         numberOfStatementsOnThisLine,
                         maxStatementsPerLine,
-                        statements: numberOfStatementsOnThisLine === 1 ? "statement" : "statements",
+                        statements: numberOfStatementsOnThisLine === 1 ? "statement" : "statements"
                     }
                 });
             }
@@ -74,12 +80,7 @@ module.exports = {
          * @returns {Token} The actual last token.
          */
         function getActualLastToken(node) {
-            let lastToken = sourceCode.getLastToken(node);
-
-            if (lastToken.value === ";") {
-                lastToken = sourceCode.getTokenBefore(lastToken);
-            }
-            return lastToken;
+            return sourceCode.getLastToken(node, astUtils.isNotSemicolonToken);
         }
 
         /**
diff --git a/tools/eslint/lib/rules/max-statements.js b/tools/eslint/lib/rules/max-statements.js
index 63d51fa571b7b0..f98aa3a21d9f66 100644
--- a/tools/eslint/lib/rules/max-statements.js
+++ b/tools/eslint/lib/rules/max-statements.js
@@ -5,6 +5,14 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const lodash = require("lodash");
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -84,19 +92,12 @@ module.exports = {
          */
         function reportIfTooManyStatements(node, count, max) {
             if (count > max) {
-                const messageEnd = " has too many statements ({{count}}). Maximum allowed is {{max}}.";
-                let name = "This function";
-
-                if (node.id) {
-                    name = `Function '${node.id.name}'`;
-                } else if (node.parent.type === "MethodDefinition" || node.parent.type === "Property") {
-                    name = `Function '${context.getSource(node.parent.key)}'`;
-                }
+                const name = lodash.upperFirst(astUtils.getFunctionNameWithKind(node));
 
                 context.report({
                     node,
-                    message: name + messageEnd,
-                    data: { count, max }
+                    message: "{{name}} has too many statements ({{count}}). Maximum allowed is {{max}}.",
+                    data: { name, count, max }
                 });
             }
         }
diff --git a/tools/eslint/lib/rules/new-cap.js b/tools/eslint/lib/rules/new-cap.js
index e7f7f1ab893396..2f02c0924bb2dc 100644
--- a/tools/eslint/lib/rules/new-cap.js
+++ b/tools/eslint/lib/rules/new-cap.js
@@ -180,9 +180,9 @@ module.exports = {
                 return "non-alpha";
             } else if (firstChar === firstCharLower) {
                 return "lower";
-            } else {
-                return "upper";
             }
+            return "upper";
+
         }
 
         /**
diff --git a/tools/eslint/lib/rules/new-parens.js b/tools/eslint/lib/rules/new-parens.js
index b0fc5ba97950b7..ad37979d54ed91 100644
--- a/tools/eslint/lib/rules/new-parens.js
+++ b/tools/eslint/lib/rules/new-parens.js
@@ -6,28 +6,14 @@
 "use strict";
 
 //------------------------------------------------------------------------------
-// Helpers
+// Requirements
 //------------------------------------------------------------------------------
 
-/**
- * Checks whether the given token is an opening parenthesis or not.
- *
- * @param {Token} token - The token to check.
- * @returns {boolean} `true` if the token is an opening parenthesis.
- */
-function isOpeningParen(token) {
-    return token.type === "Punctuator" && token.value === "(";
-}
+const astUtils = require("../ast-utils");
 
-/**
- * Checks whether the given token is an closing parenthesis or not.
- *
- * @param {Token} token - The token to check.
- * @returns {boolean} `true` if the token is an closing parenthesis.
- */
-function isClosingParen(token) {
-    return token.type === "Punctuator" && token.value === ")";
-}
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
 
 //------------------------------------------------------------------------------
 // Rule Definition
@@ -56,8 +42,8 @@ module.exports = {
                 }
 
                 const lastToken = sourceCode.getLastToken(node);
-                const hasLastParen = lastToken && isClosingParen(lastToken);
-                const hasParens = hasLastParen && isOpeningParen(sourceCode.getTokenBefore(lastToken));
+                const hasLastParen = lastToken && astUtils.isClosingParenToken(lastToken);
+                const hasParens = hasLastParen && astUtils.isOpeningParenToken(sourceCode.getTokenBefore(lastToken));
 
                 if (!hasParens) {
                     context.report({
diff --git a/tools/eslint/lib/rules/newline-after-var.js b/tools/eslint/lib/rules/newline-after-var.js
index 51130e23db9ffe..7b8d473d1dda17 100644
--- a/tools/eslint/lib/rules/newline-after-var.js
+++ b/tools/eslint/lib/rules/newline-after-var.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -201,8 +207,7 @@ module.exports = {
                     message: NEVER_MESSAGE,
                     data: { identifier: node.name },
                     fix(fixer) {
-                        const NEWLINE_REGEX = /\r\n|\r|\n|\u2028|\u2029/;
-                        const linesBetween = sourceCode.getText().slice(lastToken.range[1], nextToken.range[0]).split(NEWLINE_REGEX);
+                        const linesBetween = sourceCode.getText().slice(lastToken.range[1], nextToken.range[0]).split(astUtils.LINEBREAK_MATCHER);
 
                         return fixer.replaceTextRange([lastToken.range[1], nextToken.range[0]], `${linesBetween.slice(0, -1).join("")}\n${linesBetween[linesBetween.length - 1]}`);
                     }
diff --git a/tools/eslint/lib/rules/newline-before-return.js b/tools/eslint/lib/rules/newline-before-return.js
index e8cd74b2c7b728..996039b6929b5e 100644
--- a/tools/eslint/lib/rules/newline-before-return.js
+++ b/tools/eslint/lib/rules/newline-before-return.js
@@ -60,9 +60,9 @@ module.exports = {
                 return isPrecededByTokens(node, ["do"]);
             } else if (parentType === "SwitchCase") {
                 return isPrecededByTokens(node, [":"]);
-            } else {
-                return isPrecededByTokens(node, [")"]);
             }
+            return isPrecededByTokens(node, [")"]);
+
         }
 
         /**
diff --git a/tools/eslint/lib/rules/newline-per-chained-call.js b/tools/eslint/lib/rules/newline-per-chained-call.js
index a60c750923cbaa..613429d13f0d19 100644
--- a/tools/eslint/lib/rules/newline-per-chained-call.js
+++ b/tools/eslint/lib/rules/newline-per-chained-call.js
@@ -6,6 +6,8 @@
 
 "use strict";
 
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -47,7 +49,7 @@ module.exports = {
          */
         function getPropertyText(node) {
             const prefix = node.computed ? "[" : ".";
-            const lines = sourceCode.getText(node.property).split(/\r\n|\r|\n/g);
+            const lines = sourceCode.getText(node.property).split(astUtils.LINEBREAK_MATCHER);
             const suffix = node.computed && lines.length === 1 ? "]" : "";
 
             return prefix + lines[0] + suffix;
diff --git a/tools/eslint/lib/rules/no-await-in-loop.js b/tools/eslint/lib/rules/no-await-in-loop.js
index a75f7f2934bc23..97fff7f18e0f1c 100644
--- a/tools/eslint/lib/rules/no-await-in-loop.js
+++ b/tools/eslint/lib/rules/no-await-in-loop.js
@@ -10,7 +10,7 @@ const loopTypes = new Set([
     "ForOfStatement",
     "ForInStatement",
     "WhileStatement",
-    "DoWhileStatement",
+    "DoWhileStatement"
 ]);
 
 // Node types at which we should stop looking for loops. For example, it is fine to declare an async
@@ -18,7 +18,7 @@ const loopTypes = new Set([
 const boundaryTypes = new Set([
     "FunctionDeclaration",
     "FunctionExpression",
-    "ArrowFunctionExpression",
+    "ArrowFunctionExpression"
 ]);
 
 module.exports = {
@@ -26,9 +26,9 @@ module.exports = {
         docs: {
             description: "disallow `await` inside of loops",
             category: "Possible Errors",
-            recommended: false,
+            recommended: false
         },
-        schema: [],
+        schema: []
     },
     create(context) {
         return {
@@ -69,7 +69,7 @@ module.exports = {
                         }
                     }
                 }
-            },
+            }
         };
     }
 };
diff --git a/tools/eslint/lib/rules/no-compare-neg-zero.js b/tools/eslint/lib/rules/no-compare-neg-zero.js
new file mode 100644
index 00000000000000..d93ade5d307134
--- /dev/null
+++ b/tools/eslint/lib/rules/no-compare-neg-zero.js
@@ -0,0 +1,53 @@
+/**
+ * @fileoverview The rule should warn against code that tries to compare against -0.
+ * @author Aladdin-ADD 
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = {
+    meta: {
+        docs: {
+            description: "disallow comparing against -0",
+            category: "Possible Errors",
+            recommended: false
+        },
+        fixable: null,
+        schema: []
+    },
+
+    create(context) {
+
+        //--------------------------------------------------------------------------
+        // Helpers
+        //--------------------------------------------------------------------------
+
+        /**
+         * Checks a given node is -0
+         *
+         * @param {ASTNode} node - A node to check.
+         * @returns {boolean} `true` if the node is -0.
+         */
+        function isNegZero(node) {
+            return node.type === "UnaryExpression" && node.operator === "-" && node.argument.type === "Literal" && node.argument.value === 0;
+        }
+        const OPERATORS_TO_CHECK = new Set([">", ">=", "<", "<=", "==", "===", "!=", "!=="]);
+
+        return {
+            BinaryExpression(node) {
+                if (OPERATORS_TO_CHECK.has(node.operator)) {
+                    if (isNegZero(node.left) || isNegZero(node.right)) {
+                        context.report({
+                            node,
+                            message: "Do not use the '{{operator}}' operator to compare against -0.",
+                            data: { operator: node.operator }
+                        });
+                    }
+                }
+            }
+        };
+    }
+};
diff --git a/tools/eslint/lib/rules/no-cond-assign.js b/tools/eslint/lib/rules/no-cond-assign.js
index 3e94d12a539942..61e5751e4ed07e 100644
--- a/tools/eslint/lib/rules/no-cond-assign.js
+++ b/tools/eslint/lib/rules/no-cond-assign.js
@@ -66,19 +66,6 @@ module.exports = {
             return null;
         }
 
-        /**
-         * Check whether the code represented by an AST node is enclosed in parentheses.
-         * @param {!Object} node The node to test.
-         * @returns {boolean} `true` if the code is enclosed in parentheses; otherwise, `false`.
-         */
-        function isParenthesised(node) {
-            const previousToken = sourceCode.getTokenBefore(node),
-                nextToken = sourceCode.getTokenAfter(node);
-
-            return previousToken.value === "(" && previousToken.range[1] <= node.range[0] &&
-                nextToken.value === ")" && nextToken.range[0] >= node.range[1];
-        }
-
         /**
          * Check whether the code represented by an AST node is enclosed in two sets of parentheses.
          * @param {!Object} node The node to test.
@@ -88,9 +75,9 @@ module.exports = {
             const previousToken = sourceCode.getTokenBefore(node, 1),
                 nextToken = sourceCode.getTokenAfter(node, 1);
 
-            return isParenthesised(node) &&
-                previousToken.value === "(" && previousToken.range[1] <= node.range[0] &&
-                nextToken.value === ")" && nextToken.range[0] >= node.range[1];
+            return astUtils.isParenthesised(sourceCode, node) &&
+                astUtils.isOpeningParenToken(previousToken) && previousToken.range[1] <= node.range[0] &&
+                astUtils.isClosingParenToken(nextToken) && nextToken.range[0] >= node.range[1];
         }
 
         /**
@@ -101,9 +88,9 @@ module.exports = {
         function testForAssign(node) {
             if (node.test &&
                 (node.test.type === "AssignmentExpression") &&
-                (node.type === "ForStatement" ?
-                    !isParenthesised(node.test) :
-                    !isParenthesisedTwice(node.test)
+                (node.type === "ForStatement"
+                    ? !astUtils.isParenthesised(sourceCode, node.test)
+                    : !isParenthesisedTwice(node.test)
                 )
             ) {
 
diff --git a/tools/eslint/lib/rules/no-dupe-keys.js b/tools/eslint/lib/rules/no-dupe-keys.js
index f056b1fcbeb43e..0120d0b38cfffc 100644
--- a/tools/eslint/lib/rules/no-dupe-keys.js
+++ b/tools/eslint/lib/rules/no-dupe-keys.js
@@ -123,7 +123,7 @@ module.exports = {
                         node: info.node,
                         loc: node.key.loc,
                         message: "Duplicate key '{{name}}'.",
-                        data: { name },
+                        data: { name }
                     });
                 }
 
diff --git a/tools/eslint/lib/rules/no-else-return.js b/tools/eslint/lib/rules/no-else-return.js
index 43564346b043e2..68ab4c7608f135 100644
--- a/tools/eslint/lib/rules/no-else-return.js
+++ b/tools/eslint/lib/rules/no-else-return.js
@@ -5,6 +5,13 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+const FixTracker = require("../util/fix-tracker");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -17,7 +24,9 @@ module.exports = {
             recommended: false
         },
 
-        schema: []
+        schema: [],
+
+        fixable: "code"
     },
 
     create(context) {
@@ -33,7 +42,66 @@ module.exports = {
          * @returns {void}
          */
         function displayReport(node) {
-            context.report({ node, message: "Unnecessary 'else' after 'return'." });
+            context.report({
+                node,
+                message: "Unnecessary 'else' after 'return'.",
+                fix: fixer => {
+                    const sourceCode = context.getSourceCode();
+                    const startToken = sourceCode.getFirstToken(node);
+                    const elseToken = sourceCode.getTokenBefore(startToken);
+                    const source = sourceCode.getText(node);
+                    const lastIfToken = sourceCode.getTokenBefore(elseToken);
+                    let fixedSource, firstTokenOfElseBlock;
+
+                    if (startToken.type === "Punctuator" && startToken.value === "{") {
+                        firstTokenOfElseBlock = sourceCode.getTokenAfter(startToken);
+                    } else {
+                        firstTokenOfElseBlock = startToken;
+                    }
+
+                    // If the if block does not have curly braces and does not end in a semicolon
+                    // and the else block starts with (, [, /, +, ` or -, then it is not
+                    // safe to remove the else keyword, because ASI will not add a semicolon
+                    // after the if block
+                    const ifBlockMaybeUnsafe = node.parent.consequent.type !== "BlockStatement" && lastIfToken.value !== ";";
+                    const elseBlockUnsafe = /^[([/+`-]/.test(firstTokenOfElseBlock.value);
+
+                    if (ifBlockMaybeUnsafe && elseBlockUnsafe) {
+                        return null;
+                    }
+
+                    const endToken = sourceCode.getLastToken(node);
+                    const lastTokenOfElseBlock = sourceCode.getTokenBefore(endToken);
+
+                    if (lastTokenOfElseBlock.value !== ";") {
+                        const nextToken = sourceCode.getTokenAfter(endToken);
+
+                        const nextTokenUnsafe = nextToken && /^[([/+`-]/.test(nextToken.value);
+                        const nextTokenOnSameLine = nextToken && nextToken.loc.start.line === lastTokenOfElseBlock.loc.start.line;
+
+                        // If the else block contents does not end in a semicolon,
+                        // and the else block starts with (, [, /, +, ` or -, then it is not
+                        // safe to remove the else block, because ASI will not add a semicolon
+                        // after the remaining else block contents
+                        if (nextTokenUnsafe || (nextTokenOnSameLine && nextToken.value !== "}")) {
+                            return null;
+                        }
+                    }
+
+                    if (startToken.type === "Punctuator" && startToken.value === "{") {
+                        fixedSource = source.slice(1, -1);
+                    } else {
+                        fixedSource = source;
+                    }
+
+                    // Extend the replacement range to include the entire
+                    // function to avoid conflicting with no-useless-return.
+                    // https://github.com/eslint/eslint/issues/8026
+                    return new FixTracker(fixer, sourceCode)
+                        .retainEnclosingFunction(node)
+                        .replaceTextRange([elseToken.start, node.end], fixedSource);
+                }
+            });
         }
 
         /**
@@ -121,35 +189,45 @@ module.exports = {
             return checkForReturnOrIf(node);
         }
 
-        //--------------------------------------------------------------------------
-        // Public API
-        //--------------------------------------------------------------------------
-
-        return {
+        /**
+         * Check the if statement
+         * @returns {void}
+         * @param {Node} node The node for the if statement to check
+         * @private
+         */
+        function IfStatement(node) {
+            const parent = context.getAncestors().pop();
+            let consequents,
+                alternate;
 
-            IfStatement(node) {
-                const parent = context.getAncestors().pop();
-                let consequents,
-                    alternate;
+            /*
+             * Fixing this would require splitting one statement into two, so no error should
+             * be reported if this node is in a position where only one statement is allowed.
+             */
+            if (!astUtils.STATEMENT_LIST_PARENTS.has(parent.type)) {
+                return;
+            }
 
-                // Only "top-level" if statements are checked, meaning the first `if`
-                // in a `if-else-if-...` chain.
-                if (parent.type === "IfStatement" && parent.alternate === node) {
+            for (consequents = []; node.type === "IfStatement"; node = node.alternate) {
+                if (!node.alternate) {
                     return;
                 }
+                consequents.push(node.consequent);
+                alternate = node.alternate;
+            }
 
-                for (consequents = []; node.type === "IfStatement"; node = node.alternate) {
-                    if (!node.alternate) {
-                        return;
-                    }
-                    consequents.push(node.consequent);
-                    alternate = node.alternate;
-                }
-
-                if (consequents.every(alwaysReturns)) {
-                    displayReport(alternate);
-                }
+            if (consequents.every(alwaysReturns)) {
+                displayReport(alternate);
             }
+        }
+
+        //--------------------------------------------------------------------------
+        // Public API
+        //--------------------------------------------------------------------------
+
+        return {
+
+            "IfStatement:exit": IfStatement
 
         };
 
diff --git a/tools/eslint/lib/rules/no-empty-function.js b/tools/eslint/lib/rules/no-empty-function.js
index 65f9c9e1515342..115d8698eead71 100644
--- a/tools/eslint/lib/rules/no-empty-function.js
+++ b/tools/eslint/lib/rules/no-empty-function.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Helpers
 //------------------------------------------------------------------------------
@@ -19,18 +25,6 @@ const ALLOW_OPTIONS = Object.freeze([
     "setters",
     "constructors"
 ]);
-const SHOW_KIND = Object.freeze({
-    functions: "function",
-    arrowFunctions: "arrow function",
-    generatorFunctions: "generator function",
-    asyncFunctions: "async function",
-    methods: "method",
-    generatorMethods: "generator method",
-    asyncMethods: "async method",
-    getters: "getter",
-    setters: "setter",
-    constructors: "constructor"
-});
 
 /**
  * Gets the kind of a given function node.
@@ -137,6 +131,7 @@ module.exports = {
          */
         function reportIfEmpty(node) {
             const kind = getKind(node);
+            const name = astUtils.getFunctionNameWithKind(node);
 
             if (allowed.indexOf(kind) === -1 &&
                 node.body.type === "BlockStatement" &&
@@ -146,10 +141,8 @@ module.exports = {
                 context.report({
                     node,
                     loc: node.body.loc.start,
-                    message: "Unexpected empty {{kind}}.",
-                    data: {
-                        kind: SHOW_KIND[kind]
-                    }
+                    message: "Unexpected empty {{name}}.",
+                    data: { name }
                 });
             }
         }
diff --git a/tools/eslint/lib/rules/no-extend-native.js b/tools/eslint/lib/rules/no-extend-native.js
index c44a2e894699e9..547770d8f7e4af 100644
--- a/tools/eslint/lib/rules/no-extend-native.js
+++ b/tools/eslint/lib/rules/no-extend-native.js
@@ -60,9 +60,9 @@ module.exports = {
                     return;
                 }
 
-                const affectsProto = lhs.object.computed ?
-                    lhs.object.property.type === "Literal" && lhs.object.property.value === "prototype" :
-                    lhs.object.property.name === "prototype";
+                const affectsProto = lhs.object.computed
+                    ? lhs.object.property.type === "Literal" && lhs.object.property.value === "prototype"
+                    : lhs.object.property.name === "prototype";
 
                 if (!affectsProto) {
                     return;
diff --git a/tools/eslint/lib/rules/no-extra-bind.js b/tools/eslint/lib/rules/no-extra-bind.js
index c2795998c66e48..2d22eff2459b5d 100644
--- a/tools/eslint/lib/rules/no-extra-bind.js
+++ b/tools/eslint/lib/rules/no-extra-bind.js
@@ -8,7 +8,7 @@
 // Requirements
 //------------------------------------------------------------------------------
 
-const getPropertyName = require("../ast-utils").getStaticPropertyName;
+const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Rule Definition
@@ -44,8 +44,7 @@ module.exports = {
                 loc: node.parent.property.loc.start,
                 fix(fixer) {
                     const firstTokenToRemove = context.getSourceCode()
-                        .getTokensBetween(node.parent.object, node.parent.property)
-                        .find(token => token.value !== ")");
+                        .getFirstTokenBetween(node.parent.object, node.parent.property, astUtils.isNotClosingParenToken);
 
                     return fixer.removeRange([firstTokenToRemove.range[0], node.parent.parent.range[1]]);
                 }
@@ -73,7 +72,7 @@ module.exports = {
                 grandparent.arguments.length === 1 &&
                 parent.type === "MemberExpression" &&
                 parent.object === node &&
-                getPropertyName(parent) === "bind"
+                astUtils.getStaticPropertyName(parent) === "bind"
             );
         }
 
diff --git a/tools/eslint/lib/rules/no-extra-boolean-cast.js b/tools/eslint/lib/rules/no-extra-boolean-cast.js
index 123a7cacc5256a..47ca7e22feabda 100644
--- a/tools/eslint/lib/rules/no-extra-boolean-cast.js
+++ b/tools/eslint/lib/rules/no-extra-boolean-cast.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -91,7 +97,22 @@ module.exports = {
                     context.report({
                         node,
                         message: "Redundant Boolean call.",
-                        fix: fixer => fixer.replaceText(node, sourceCode.getText(node.arguments[0]))
+                        fix: fixer => {
+                            if (!node.arguments.length) {
+                                return fixer.replaceText(parent, "true");
+                            }
+
+                            if (node.arguments.length > 1 || node.arguments[0].type === "SpreadElement") {
+                                return null;
+                            }
+
+                            const argument = node.arguments[0];
+
+                            if (astUtils.getPrecedence(argument) < astUtils.getPrecedence(node.parent)) {
+                                return fixer.replaceText(node, `(${sourceCode.getText(argument)})`);
+                            }
+                            return fixer.replaceText(node, sourceCode.getText(argument));
+                        }
                     });
                 }
             }
diff --git a/tools/eslint/lib/rules/no-extra-label.js b/tools/eslint/lib/rules/no-extra-label.js
index 22afbf405b7ea9..b89267de93d7b3 100644
--- a/tools/eslint/lib/rules/no-extra-label.js
+++ b/tools/eslint/lib/rules/no-extra-label.js
@@ -110,12 +110,7 @@ module.exports = {
                             node: labelNode,
                             message: "This label '{{name}}' is unnecessary.",
                             data: labelNode,
-                            fix(fixer) {
-                                return fixer.replaceTextRange(
-                                    [info.label.range[0], labelNode.range[1]],
-                                    sourceCode.text.slice(info.label.parent.body.range[0], sourceCode.getFirstToken(node).range[1])
-                                );
-                            }
+                            fix: fixer => fixer.removeRange([sourceCode.getFirstToken(node).range[1], labelNode.range[1]])
                         });
                     }
                     return;
diff --git a/tools/eslint/lib/rules/no-extra-parens.js b/tools/eslint/lib/rules/no-extra-parens.js
index 004d431701a574..bbfae735c2d27f 100644
--- a/tools/eslint/lib/rules/no-extra-parens.js
+++ b/tools/eslint/lib/rules/no-extra-parens.js
@@ -44,7 +44,8 @@ module.exports = {
                             properties: {
                                 conditionalAssign: { type: "boolean" },
                                 nestedBinaryExpressions: { type: "boolean" },
-                                returnAssign: { type: "boolean" }
+                                returnAssign: { type: "boolean" },
+                                ignoreJSX: { enum: ["none", "all", "single-line", "multi-line"] }
                             },
                             additionalProperties: false
                         }
@@ -59,12 +60,16 @@ module.exports = {
     create(context) {
         const sourceCode = context.getSourceCode();
 
+        const tokensToIgnore = new WeakSet();
         const isParenthesised = astUtils.isParenthesised.bind(astUtils, sourceCode);
         const precedence = astUtils.getPrecedence;
         const ALL_NODES = context.options[0] !== "functions";
         const EXCEPT_COND_ASSIGN = ALL_NODES && context.options[1] && context.options[1].conditionalAssign === false;
         const NESTED_BINARY = ALL_NODES && context.options[1] && context.options[1].nestedBinaryExpressions === false;
         const EXCEPT_RETURN_ASSIGN = ALL_NODES && context.options[1] && context.options[1].returnAssign === false;
+        const IGNORE_JSX = ALL_NODES && context.options[1] && context.options[1].ignoreJSX;
+        const PRECEDENCE_OF_ASSIGNMENT_EXPR = precedence({ type: "AssignmentExpression" });
+        const PRECEDENCE_OF_UPDATE_EXPR = precedence({ type: "UpdateExpression" });
 
         /**
          * Determines if this rule should be enforced for a node given the current configuration.
@@ -73,6 +78,31 @@ module.exports = {
          * @private
          */
         function ruleApplies(node) {
+            if (node.type === "JSXElement") {
+                const isSingleLine = node.loc.start.line === node.loc.end.line;
+
+                switch (IGNORE_JSX) {
+
+                    // Exclude this JSX element from linting
+                    case "all":
+                        return false;
+
+                    // Exclude this JSX element if it is multi-line element
+                    case "multi-line":
+                        return isSingleLine;
+
+                    // Exclude this JSX element if it is single-line element
+                    case "single-line":
+                        return !isSingleLine;
+
+                    // Nothing special to be done for JSX elements
+                    case "none":
+                        break;
+
+                    // no default
+                }
+            }
+
             return ALL_NODES || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
         }
 
@@ -87,8 +117,8 @@ module.exports = {
                 nextToken = sourceCode.getTokenAfter(node, 1);
 
             return isParenthesised(node) && previousToken && nextToken &&
-                previousToken.value === "(" && previousToken.range[1] <= node.range[0] &&
-                nextToken.value === ")" && nextToken.range[0] >= node.range[1];
+                astUtils.isOpeningParenToken(previousToken) && previousToken.range[1] <= node.range[0] &&
+                astUtils.isClosingParenToken(nextToken) && nextToken.range[0] >= node.range[1];
         }
 
         /**
@@ -140,6 +170,19 @@ module.exports = {
             return false;
         }
 
+        /**
+         * Determines if a constructor function is newed-up with parens
+         * @param {ASTNode} newExpression - The NewExpression node to be checked.
+         * @returns {boolean} True if the constructor is called with parens.
+         * @private
+         */
+        function isNewExpressionWithParens(newExpression) {
+            const lastToken = sourceCode.getLastToken(newExpression);
+            const penultimateToken = sourceCode.getTokenBefore(lastToken);
+
+            return newExpression.arguments.length > 0 || astUtils.isOpeningParenToken(penultimateToken) && astUtils.isClosingParenToken(lastToken);
+        }
+
         /**
          * Determines if a node is or contains an assignment expression
          * @param {ASTNode} node - The node to be checked.
@@ -175,9 +218,9 @@ module.exports = {
                 return node.argument && containsAssignment(node.argument);
             } else if (node.type === "ArrowFunctionExpression" && node.body.type !== "BlockStatement") {
                 return containsAssignment(node.body);
-            } else {
-                return containsAssignment(node);
             }
+            return containsAssignment(node);
+
         }
 
         /**
@@ -196,69 +239,6 @@ module.exports = {
             return hasDoubleExcessParens(node);
         }
 
-        /**
-         * Checks whether or not a given node is located at the head of ExpressionStatement.
-         * @param {ASTNode} node - A node to check.
-         * @returns {boolean} `true` if the node is located at the head of ExpressionStatement.
-         */
-        function isHeadOfExpressionStatement(node) {
-            let parent = node.parent;
-
-            while (parent) {
-                switch (parent.type) {
-                    case "SequenceExpression":
-                        if (parent.expressions[0] !== node || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "UnaryExpression":
-                    case "UpdateExpression":
-                        if (parent.prefix || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "BinaryExpression":
-                    case "LogicalExpression":
-                        if (parent.left !== node || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "ConditionalExpression":
-                        if (parent.test !== node || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "CallExpression":
-                        if (parent.callee !== node || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "MemberExpression":
-                        if (parent.object !== node || isParenthesised(node)) {
-                            return false;
-                        }
-                        break;
-
-                    case "ExpressionStatement":
-                        return true;
-
-                    default:
-                        return false;
-                }
-
-                node = parent;
-                parent = parent.parent;
-            }
-
-            /* istanbul ignore next */
-            throw new Error("unreachable");
-        }
-
         /**
          * Determines whether a node should be preceded by an additional space when removing parens
          * @param {ASTNode} node node to evaluate; must be surrounded by parentheses
@@ -276,7 +256,7 @@ module.exports = {
             }
 
             // If the parens are preceded by a keyword (e.g. `typeof(0)`), a space should be inserted (`typeof 0`)
-            const precededByKeyword = tokenBeforeLeftParen.type === "Keyword";
+            const precededByIdentiferPart = esUtils.code.isIdentifierPartES6(tokenBeforeLeftParen.value.slice(-1).charCodeAt(0));
 
             // However, a space should not be inserted unless the first character of the token is an identifier part
             // e.g. `typeof([])` should be fixed to `typeof[]`
@@ -289,7 +269,7 @@ module.exports = {
             const startsWithUnaryPlus = firstToken.type === "Punctuator" && firstToken.value === "+";
             const startsWithUnaryMinus = firstToken.type === "Punctuator" && firstToken.value === "-";
 
-            return (precededByKeyword && startsWithIdentifierPart) ||
+            return (precededByIdentiferPart && startsWithIdentifierPart) ||
                 (precededByUnaryPlus && startsWithUnaryPlus) ||
                 (precededByUnaryMinus && startsWithUnaryMinus);
         }
@@ -304,6 +284,10 @@ module.exports = {
             const leftParenToken = sourceCode.getTokenBefore(node);
             const rightParenToken = sourceCode.getTokenAfter(node);
 
+            if (tokensToIgnore.has(sourceCode.getFirstToken(node)) && !isParenthesisedTwice(node)) {
+                return;
+            }
+
             context.report({
                 node,
                 loc: leftParenToken.loc.start,
@@ -325,7 +309,11 @@ module.exports = {
          * @returns {void}
          * @private
          */
-        function dryUnaryUpdate(node) {
+        function checkUnaryUpdate(node) {
+            if (node.type === "UnaryExpression" && node.argument.type === "BinaryExpression" && node.argument.operator === "**") {
+                return;
+            }
+
             if (hasExcessParens(node.argument) && precedence(node.argument) >= precedence(node)) {
                 report(node.argument);
             }
@@ -337,10 +325,11 @@ module.exports = {
          * @returns {void}
          * @private
          */
-        function dryCallNew(node) {
+        function checkCallNew(node) {
             if (hasExcessParens(node.callee) && precedence(node.callee) >= precedence(node) && !(
                 node.type === "CallExpression" &&
-                node.callee.type === "FunctionExpression" &&
+                (node.callee.type === "FunctionExpression" ||
+                  node.callee.type === "NewExpression" && !isNewExpressionWithParens(node.callee)) &&
 
                 // One set of parentheses are allowed for a function expression
                 !hasDoubleExcessParens(node.callee)
@@ -348,12 +337,12 @@ module.exports = {
                 report(node.callee);
             }
             if (node.arguments.length === 1) {
-                if (hasDoubleExcessParens(node.arguments[0]) && precedence(node.arguments[0]) >= precedence({ type: "AssignmentExpression" })) {
+                if (hasDoubleExcessParens(node.arguments[0]) && precedence(node.arguments[0]) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                     report(node.arguments[0]);
                 }
             } else {
                 [].forEach.call(node.arguments, arg => {
-                    if (hasExcessParens(arg) && precedence(arg) >= precedence({ type: "AssignmentExpression" })) {
+                    if (hasExcessParens(arg) && precedence(arg) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                         report(arg);
                     }
                 });
@@ -366,23 +355,91 @@ module.exports = {
          * @returns {void}
          * @private
          */
-        function dryBinaryLogical(node) {
+        function checkBinaryLogical(node) {
             const prec = precedence(node);
-            const shouldSkipLeft = NESTED_BINARY && (node.left.type === "BinaryExpression" || node.left.type === "LogicalExpression");
+            const leftPrecedence = precedence(node.left);
+            const rightPrecedence = precedence(node.right);
+            const isExponentiation = node.operator === "**";
+            const shouldSkipLeft = (NESTED_BINARY && (node.left.type === "BinaryExpression" || node.left.type === "LogicalExpression")) ||
+              node.left.type === "UnaryExpression" && isExponentiation;
             const shouldSkipRight = NESTED_BINARY && (node.right.type === "BinaryExpression" || node.right.type === "LogicalExpression");
 
-            if (!shouldSkipLeft && hasExcessParens(node.left) && precedence(node.left) >= prec) {
+            if (!shouldSkipLeft && hasExcessParens(node.left) && (leftPrecedence > prec || (leftPrecedence === prec && !isExponentiation))) {
                 report(node.left);
             }
-            if (!shouldSkipRight && hasExcessParens(node.right) && precedence(node.right) > prec) {
+            if (!shouldSkipRight && hasExcessParens(node.right) && (rightPrecedence > prec || (rightPrecedence === prec && isExponentiation))) {
                 report(node.right);
             }
         }
 
+        /**
+         * Check the parentheses around the super class of the given class definition.
+         * @param {ASTNode} node The node of class declarations to check.
+         * @returns {void}
+         */
+        function checkClass(node) {
+            if (!node.superClass) {
+                return;
+            }
+
+            // If `node.superClass` is a LeftHandSideExpression, parentheses are extra.
+            // Otherwise, parentheses are needed.
+            const hasExtraParens = precedence(node.superClass) > PRECEDENCE_OF_UPDATE_EXPR
+                ? hasExcessParens(node.superClass)
+                : hasDoubleExcessParens(node.superClass);
+
+            if (hasExtraParens) {
+                report(node.superClass);
+            }
+        }
+
+        /**
+         * Check the parentheses around the argument of the given spread operator.
+         * @param {ASTNode} node The node of spread elements/properties to check.
+         * @returns {void}
+         */
+        function checkSpreadOperator(node) {
+            const hasExtraParens = precedence(node.argument) >= PRECEDENCE_OF_ASSIGNMENT_EXPR
+                ? hasExcessParens(node.argument)
+                : hasDoubleExcessParens(node.argument);
+
+            if (hasExtraParens) {
+                report(node.argument);
+            }
+        }
+
+        /**
+         * Checks the parentheses for an ExpressionStatement or ExportDefaultDeclaration
+         * @param {ASTNode} node The ExpressionStatement.expression or ExportDefaultDeclaration.declaration node
+         * @returns {void}
+         */
+        function checkExpressionOrExportStatement(node) {
+            const firstToken = isParenthesised(node) ? sourceCode.getTokenBefore(node) : sourceCode.getFirstToken(node);
+            const secondToken = sourceCode.getTokenAfter(firstToken, astUtils.isNotOpeningParenToken);
+
+            if (
+                astUtils.isOpeningParenToken(firstToken) &&
+                (
+                    astUtils.isOpeningBraceToken(secondToken) ||
+                    secondToken.type === "Keyword" && (
+                        secondToken.value === "function" ||
+                        secondToken.value === "class" ||
+                        secondToken.value === "let" && astUtils.isOpeningBracketToken(sourceCode.getTokenAfter(secondToken))
+                    )
+                )
+            ) {
+                tokensToIgnore.add(secondToken);
+            }
+
+            if (hasExcessParens(node)) {
+                report(node);
+            }
+        }
+
         return {
             ArrayExpression(node) {
                 [].forEach.call(node.elements, e => {
-                    if (e && hasExcessParens(e) && precedence(e) >= precedence({ type: "AssignmentExpression" })) {
+                    if (e && hasExcessParens(e) && precedence(e) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                         report(e);
                     }
                 });
@@ -394,13 +451,13 @@ module.exports = {
                 }
 
                 if (node.body.type !== "BlockStatement") {
-                    if (sourceCode.getFirstToken(node.body).value !== "{" && hasExcessParens(node.body) && precedence(node.body) >= precedence({ type: "AssignmentExpression" })) {
-                        report(node.body);
-                        return;
-                    }
+                    const firstBodyToken = sourceCode.getFirstToken(node.body, astUtils.isNotOpeningParenToken);
+                    const tokenBeforeFirst = sourceCode.getTokenBefore(firstBodyToken);
 
-                    // Object literals *must* be parenthesised
-                    if (node.body.type === "ObjectExpression" && hasDoubleExcessParens(node.body)) {
+                    if (astUtils.isOpeningParenToken(tokenBeforeFirst) && astUtils.isOpeningBraceToken(firstBodyToken)) {
+                        tokensToIgnore.add(firstBodyToken);
+                    }
+                    if (hasExcessParens(node.body) && precedence(node.body) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                         report(node.body);
                     }
                 }
@@ -416,8 +473,8 @@ module.exports = {
                 }
             },
 
-            BinaryExpression: dryBinaryLogical,
-            CallExpression: dryCallNew,
+            BinaryExpression: checkBinaryLogical,
+            CallExpression: checkCallNew,
 
             ConditionalExpression(node) {
                 if (isReturnAssignException(node)) {
@@ -428,11 +485,11 @@ module.exports = {
                     report(node.test);
                 }
 
-                if (hasExcessParens(node.consequent) && precedence(node.consequent) >= precedence({ type: "AssignmentExpression" })) {
+                if (hasExcessParens(node.consequent) && precedence(node.consequent) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                     report(node.consequent);
                 }
 
-                if (hasExcessParens(node.alternate) && precedence(node.alternate) >= precedence({ type: "AssignmentExpression" })) {
+                if (hasExcessParens(node.alternate) && precedence(node.alternate) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                     report(node.alternate);
                 }
             },
@@ -443,27 +500,8 @@ module.exports = {
                 }
             },
 
-            ExpressionStatement(node) {
-                if (hasExcessParens(node.expression)) {
-                    const firstTokens = sourceCode.getFirstTokens(node.expression, 2);
-                    const firstToken = firstTokens[0];
-                    const secondToken = firstTokens[1];
-
-                    if (
-                        !firstToken ||
-                        firstToken.value !== "{" &&
-                        firstToken.value !== "function" &&
-                        firstToken.value !== "class" &&
-                        (
-                            firstToken.value !== "let" ||
-                            !secondToken ||
-                            secondToken.value !== "["
-                        )
-                    ) {
-                        report(node.expression);
-                    }
-                }
-            },
+            ExportDefaultDeclaration: node => checkExpressionOrExportStatement(node.declaration),
+            ExpressionStatement: node => checkExpressionOrExportStatement(node.expression),
 
             ForInStatement(node) {
                 if (hasExcessParens(node.right)) {
@@ -497,7 +535,7 @@ module.exports = {
                 }
             },
 
-            LogicalExpression: dryBinaryLogical,
+            LogicalExpression: checkBinaryLogical,
 
             MemberExpression(node) {
                 if (
@@ -506,19 +544,11 @@ module.exports = {
                     (
                         node.computed ||
                         !(
-                            (node.object.type === "Literal" &&
-                            typeof node.object.value === "number" &&
-                            astUtils.isDecimalInteger(node.object))
-                            ||
+                            astUtils.isDecimalInteger(node.object) ||
 
                             // RegExp literal is allowed to have parens (#1589)
                             (node.object.type === "Literal" && node.object.regex)
                         )
-                    ) &&
-                    !(
-                        (node.object.type === "FunctionExpression" || node.object.type === "ClassExpression") &&
-                        isHeadOfExpressionStatement(node) &&
-                        !hasDoubleExcessParens(node.object)
                     )
                 ) {
                     report(node.object);
@@ -528,13 +558,13 @@ module.exports = {
                 }
             },
 
-            NewExpression: dryCallNew,
+            NewExpression: checkCallNew,
 
             ObjectExpression(node) {
                 [].forEach.call(node.properties, e => {
                     const v = e.value;
 
-                    if (v && hasExcessParens(v) && precedence(v) >= precedence({ type: "AssignmentExpression" })) {
+                    if (v && hasExcessParens(v) && precedence(v) >= PRECEDENCE_OF_ASSIGNMENT_EXPR) {
                         report(v);
                     }
                 });
@@ -584,13 +614,13 @@ module.exports = {
                 }
             },
 
-            UnaryExpression: dryUnaryUpdate,
-            UpdateExpression: dryUnaryUpdate,
-            AwaitExpression: dryUnaryUpdate,
+            UnaryExpression: checkUnaryUpdate,
+            UpdateExpression: checkUnaryUpdate,
+            AwaitExpression: checkUnaryUpdate,
 
             VariableDeclarator(node) {
                 if (node.init && hasExcessParens(node.init) &&
-                        precedence(node.init) >= precedence({ type: "AssignmentExpression" }) &&
+                        precedence(node.init) >= PRECEDENCE_OF_ASSIGNMENT_EXPR &&
 
                         // RegExp literal is allowed to have parens (#1589)
                         !(node.init.type === "Literal" && node.init.regex)) {
@@ -620,7 +650,14 @@ module.exports = {
                         report(node.argument);
                     }
                 }
-            }
+            },
+
+            ClassDeclaration: checkClass,
+            ClassExpression: checkClass,
+
+            SpreadElement: checkSpreadOperator,
+            SpreadProperty: checkSpreadOperator,
+            ExperimentalSpreadProperty: checkSpreadOperator
         };
 
     }
diff --git a/tools/eslint/lib/rules/no-extra-semi.js b/tools/eslint/lib/rules/no-extra-semi.js
index f51f16ee6af3f1..0ec914989d4246 100644
--- a/tools/eslint/lib/rules/no-extra-semi.js
+++ b/tools/eslint/lib/rules/no-extra-semi.js
@@ -5,6 +5,13 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const FixTracker = require("../util/fix-tracker");
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -34,7 +41,13 @@ module.exports = {
                 node: nodeOrToken,
                 message: "Unnecessary semicolon.",
                 fix(fixer) {
-                    return fixer.remove(nodeOrToken);
+
+                    // Expand the replacement range to include the surrounding
+                    // tokens to avoid conflicting with semi.
+                    // https://github.com/eslint/eslint/issues/7928
+                    return new FixTracker(fixer, context.getSourceCode())
+                        .retainSurroundingTokens(nodeOrToken)
+                        .remove(nodeOrToken);
                 }
             });
         }
@@ -48,10 +61,10 @@ module.exports = {
          */
         function checkForPartOfClassBody(firstToken) {
             for (let token = firstToken;
-                token.type === "Punctuator" && token.value !== "}";
+                token.type === "Punctuator" && !astUtils.isClosingBraceToken(token);
                 token = sourceCode.getTokenAfter(token)
             ) {
-                if (token.value === ";") {
+                if (astUtils.isSemicolonToken(token)) {
                     report(token);
                 }
             }
diff --git a/tools/eslint/lib/rules/no-global-assign.js b/tools/eslint/lib/rules/no-global-assign.js
index caf2500231e14a..5a1cc64aeb2069 100644
--- a/tools/eslint/lib/rules/no-global-assign.js
+++ b/tools/eslint/lib/rules/no-global-assign.js
@@ -14,7 +14,7 @@ module.exports = {
         docs: {
             description: "disallow assignments to native objects or read-only global variables",
             category: "Best Practices",
-            recommended: false
+            recommended: true
         },
 
         schema: [
diff --git a/tools/eslint/lib/rules/no-implicit-coercion.js b/tools/eslint/lib/rules/no-implicit-coercion.js
index 8e8db9879ba38c..387b3dae479597 100644
--- a/tools/eslint/lib/rules/no-implicit-coercion.js
+++ b/tools/eslint/lib/rules/no-implicit-coercion.js
@@ -6,6 +6,7 @@
 "use strict";
 
 const astUtils = require("../ast-utils");
+const esUtils = require("esutils");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -197,19 +198,31 @@ module.exports = {
         */
         function report(node, recommendation, shouldFix) {
             shouldFix = typeof shouldFix === "undefined" ? true : shouldFix;
-            const reportObj = {
+
+            context.report({
                 node,
                 message: "use `{{recommendation}}` instead.",
                 data: {
                     recommendation
+                },
+                fix(fixer) {
+                    if (!shouldFix) {
+                        return null;
+                    }
+
+                    const tokenBefore = sourceCode.getTokenBefore(node);
+
+                    if (
+                        tokenBefore &&
+                        tokenBefore.range[1] === node.range[0] &&
+                        esUtils.code.isIdentifierPartES6(tokenBefore.value.slice(-1).charCodeAt(0)) &&
+                        esUtils.code.isIdentifierPartES6(recommendation.charCodeAt(0))
+                    ) {
+                        return fixer.replaceText(node, ` ${recommendation}`);
+                    }
+                    return fixer.replaceText(node, recommendation);
                 }
-            };
-
-            if (shouldFix) {
-                reportObj.fix = fixer => fixer.replaceText(node, recommendation);
-            }
-
-            context.report(reportObj);
+            });
         }
 
         return {
diff --git a/tools/eslint/lib/rules/no-inner-declarations.js b/tools/eslint/lib/rules/no-inner-declarations.js
index 01cc67863ffff5..2a378487fd5b6b 100644
--- a/tools/eslint/lib/rules/no-inner-declarations.js
+++ b/tools/eslint/lib/rules/no-inner-declarations.js
@@ -64,10 +64,10 @@ module.exports = {
 
             if (!valid) {
                 context.report({ node, message: "Move {{type}} declaration to {{body}} root.", data: {
-                    type: (node.type === "FunctionDeclaration" ?
-                            "function" : "variable"),
-                    body: (body.type === "Program" ?
-                            "program" : "function body")
+                    type: (node.type === "FunctionDeclaration"
+                            ? "function" : "variable"),
+                    body: (body.type === "Program"
+                            ? "program" : "function body")
                 } });
             }
         }
diff --git a/tools/eslint/lib/rules/no-invalid-regexp.js b/tools/eslint/lib/rules/no-invalid-regexp.js
index dcde234c6f6aa2..45596f7ee876a1 100644
--- a/tools/eslint/lib/rules/no-invalid-regexp.js
+++ b/tools/eslint/lib/rules/no-invalid-regexp.js
@@ -74,7 +74,8 @@ module.exports = {
                 } catch (e) {
                     context.report({
                         node,
-                        message: `${e.message}.`
+                        message: "{{message}}.",
+                        data: e
                     });
                 }
 
diff --git a/tools/eslint/lib/rules/no-irregular-whitespace.js b/tools/eslint/lib/rules/no-irregular-whitespace.js
index b1949fbc735479..3882501a8629d3 100644
--- a/tools/eslint/lib/rules/no-irregular-whitespace.js
+++ b/tools/eslint/lib/rules/no-irregular-whitespace.js
@@ -6,6 +6,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Constants
 //------------------------------------------------------------------------------
@@ -13,7 +19,7 @@
 const ALL_IRREGULARS = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000\u2028\u2029]/;
 const IRREGULAR_WHITESPACE = /[\f\v\u0085\u00A0\ufeff\u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u200b\u202f\u205f\u3000]+/mg;
 const IRREGULAR_LINE_TERMINATORS = /[\u2028\u2029]/mg;
-const LINE_BREAK = /\r\n|\r|\n|\u2028|\u2029/g;
+const LINE_BREAK = astUtils.createGlobalLinebreakMatcher();
 
 //------------------------------------------------------------------------------
 // Rule Definition
diff --git a/tools/eslint/lib/rules/no-lone-blocks.js b/tools/eslint/lib/rules/no-lone-blocks.js
index 9528421ca5bd39..95a5b334c602a8 100644
--- a/tools/eslint/lib/rules/no-lone-blocks.js
+++ b/tools/eslint/lib/rules/no-lone-blocks.js
@@ -32,22 +32,22 @@ module.exports = {
          * @returns {void}
         */
         function report(node) {
-            const parent = context.getAncestors().pop();
+            const message = node.parent.type === "BlockStatement" ? "Nested block is redundant." : "Block is redundant.";
 
-            context.report({ node, message: parent.type === "Program" ?
-                "Block is redundant." :
-                "Nested block is redundant."
-            });
+            context.report({ node, message });
         }
 
         /**
-         * Checks for any ocurrence of BlockStatement > BlockStatement or Program > BlockStatement
-         * @returns {boolean} True if the current node is a lone block.
+         * Checks for any ocurrence of a BlockStatement in a place where lists of statements can appear
+         * @param {ASTNode} node The node to check
+         * @returns {boolean} True if the node is a lone block.
         */
-        function isLoneBlock() {
-            const parent = context.getAncestors().pop();
+        function isLoneBlock(node) {
+            return node.parent.type === "BlockStatement" ||
+                node.parent.type === "Program" ||
 
-            return parent.type === "BlockStatement" || parent.type === "Program";
+                // Don't report blocks in switch cases if the block is the only statement of the case.
+                node.parent.type === "SwitchCase" && !(node.parent.consequent[0] === node && node.parent.consequent.length === 1);
         }
 
         /**
diff --git a/tools/eslint/lib/rules/no-mixed-operators.js b/tools/eslint/lib/rules/no-mixed-operators.js
index b066d74a0c40e0..9f1fbc9a6d41b6 100644
--- a/tools/eslint/lib/rules/no-mixed-operators.js
+++ b/tools/eslint/lib/rules/no-mixed-operators.js
@@ -148,13 +148,7 @@ module.exports = {
          * @returns {Token} The operator token of the node.
          */
         function getOperatorToken(node) {
-            let token = sourceCode.getTokenAfter(node.left);
-
-            while (token.value === ")") {
-                token = sourceCode.getTokenAfter(token);
-            }
-
-            return token;
+            return sourceCode.getTokenAfter(node.left, astUtils.isNotClosingParenToken);
         }
 
         /**
diff --git a/tools/eslint/lib/rules/no-mixed-requires.js b/tools/eslint/lib/rules/no-mixed-requires.js
index 4d51d3ab3a07a4..55ad1e73e07628 100644
--- a/tools/eslint/lib/rules/no-mixed-requires.js
+++ b/tools/eslint/lib/rules/no-mixed-requires.js
@@ -153,11 +153,11 @@ module.exports = {
 
                 // "var utils = require('./utils');"
                 return REQ_FILE;
-            } else {
-
-                // "var async = require('async');"
-                return REQ_MODULE;
             }
+
+            // "var async = require('async');"
+            return REQ_MODULE;
+
         }
 
         /**
diff --git a/tools/eslint/lib/rules/no-multi-assign.js b/tools/eslint/lib/rules/no-multi-assign.js
new file mode 100644
index 00000000000000..164869f6ddc1d9
--- /dev/null
+++ b/tools/eslint/lib/rules/no-multi-assign.js
@@ -0,0 +1,41 @@
+/**
+ * @fileoverview Rule to check use of chained assignment expressions
+ * @author Stewart Rand
+ */
+
+"use strict";
+
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = {
+    meta: {
+        docs: {
+            description: "disallow use of chained assignment expressions",
+            category: "Stylistic Issues",
+            recommended: false
+        },
+        schema: []
+    },
+
+    create(context) {
+
+        //--------------------------------------------------------------------------
+        // Public
+        //--------------------------------------------------------------------------
+
+        return {
+            AssignmentExpression(node) {
+                if (["AssignmentExpression", "VariableDeclarator"].indexOf(node.parent.type) !== -1) {
+                    context.report({
+                        node,
+                        message: "Unexpected chained assignment."
+                    });
+                }
+            }
+        };
+
+    }
+};
diff --git a/tools/eslint/lib/rules/no-multi-spaces.js b/tools/eslint/lib/rules/no-multi-spaces.js
index 64eeebec55a383..41a7f924a5e9de 100644
--- a/tools/eslint/lib/rules/no-multi-spaces.js
+++ b/tools/eslint/lib/rules/no-multi-spaces.js
@@ -5,6 +5,8 @@
 
 "use strict";
 
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -93,7 +95,8 @@ module.exports = {
                 const sourceCode = context.getSourceCode(),
                     source = sourceCode.getText(),
                     allComments = sourceCode.getAllComments(),
-                    pattern = /[^\n\r\u2028\u2029\t ].? {2,}/g;  // note: repeating space
+                    JOINED_LINEBEAKS = Array.from(astUtils.LINEBREAKS).join(""),
+                    pattern = new RegExp(String.raw`[^ \t${JOINED_LINEBEAKS}].? {2,}`, "g");  // note: repeating space
                 let parent;
 
 
diff --git a/tools/eslint/lib/rules/no-multi-str.js b/tools/eslint/lib/rules/no-multi-str.js
index 6cf5840e30264b..76f29cbb5a9f6b 100644
--- a/tools/eslint/lib/rules/no-multi-str.js
+++ b/tools/eslint/lib/rules/no-multi-str.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -39,9 +45,7 @@ module.exports = {
         return {
 
             Literal(node) {
-                const lineBreak = /\n/;
-
-                if (lineBreak.test(node.raw) && !isJSXElement(node.parent)) {
+                if (astUtils.LINEBREAK_MATCHER.test(node.raw) && !isJSXElement(node.parent)) {
                     context.report({ node, message: "Multiline support is limited to browsers supporting ES5 only." });
                 }
             }
diff --git a/tools/eslint/lib/rules/no-multiple-empty-lines.js b/tools/eslint/lib/rules/no-multiple-empty-lines.js
index c45c7aa1678927..2063ebd917c79e 100644
--- a/tools/eslint/lib/rules/no-multiple-empty-lines.js
+++ b/tools/eslint/lib/rules/no-multiple-empty-lines.js
@@ -5,8 +5,6 @@
  */
 "use strict";
 
-const astUtils = require("../ast-utils");
-
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -114,8 +112,8 @@ module.exports = {
                                 data: { max: maxAllowed, pluralizedLines: maxAllowed === 1 ? "line" : "lines" },
                                 fix(fixer) {
                                     return fixer.removeRange([
-                                        astUtils.getRangeIndexFromLocation(sourceCode, { line: lastLineNumber + 1, column: 0 }),
-                                        astUtils.getRangeIndexFromLocation(sourceCode, { line: lineNumber - maxAllowed, column: 0 })
+                                        sourceCode.getIndexFromLoc({ line: lastLineNumber + 1, column: 0 }),
+                                        sourceCode.getIndexFromLoc({ line: lineNumber - maxAllowed, column: 0 })
                                     ]);
                                 }
                             });
diff --git a/tools/eslint/lib/rules/no-native-reassign.js b/tools/eslint/lib/rules/no-native-reassign.js
index f721fc278fe3ec..d3dfefbaf05f0b 100644
--- a/tools/eslint/lib/rules/no-native-reassign.js
+++ b/tools/eslint/lib/rules/no-native-reassign.js
@@ -15,7 +15,7 @@ module.exports = {
         docs: {
             description: "disallow assignments to native objects or read-only global variables",
             category: "Best Practices",
-            recommended: true,
+            recommended: false,
             replacedBy: ["no-global-assign"]
         },
 
diff --git a/tools/eslint/lib/rules/no-negated-in-lhs.js b/tools/eslint/lib/rules/no-negated-in-lhs.js
index 143518060b33bd..495cbc160ec7d6 100644
--- a/tools/eslint/lib/rules/no-negated-in-lhs.js
+++ b/tools/eslint/lib/rules/no-negated-in-lhs.js
@@ -15,7 +15,7 @@ module.exports = {
         docs: {
             description: "disallow negating the left operand in `in` expressions",
             category: "Possible Errors",
-            recommended: true,
+            recommended: false,
             replacedBy: ["no-unsafe-negation"]
         },
         deprecated: true,
diff --git a/tools/eslint/lib/rules/no-new-func.js b/tools/eslint/lib/rules/no-new-func.js
index 17ca7c9f03d6b3..6abbe8391d5d38 100644
--- a/tools/eslint/lib/rules/no-new-func.js
+++ b/tools/eslint/lib/rules/no-new-func.js
@@ -27,20 +27,18 @@ module.exports = {
         //--------------------------------------------------------------------------
 
         /**
-         * Checks if the callee is the Function constructor, and if so, reports an issue.
-         * @param {ASTNode} node The node to check and report on
+         * Reports a node.
+         * @param {ASTNode} node The node to report
          * @returns {void}
          * @private
          */
-        function validateCallee(node) {
-            if (node.callee.name === "Function") {
-                context.report({ node, message: "The Function constructor is eval." });
-            }
+        function report(node) {
+            context.report({ node, message: "The Function constructor is eval." });
         }
 
         return {
-            NewExpression: validateCallee,
-            CallExpression: validateCallee
+            "NewExpression[callee.name = 'Function']": report,
+            "CallExpression[callee.name = 'Function']": report
         };
 
     }
diff --git a/tools/eslint/lib/rules/no-new.js b/tools/eslint/lib/rules/no-new.js
index e0f45de1bd298b..6e6025aac54304 100644
--- a/tools/eslint/lib/rules/no-new.js
+++ b/tools/eslint/lib/rules/no-new.js
@@ -24,12 +24,8 @@ module.exports = {
     create(context) {
 
         return {
-
-            ExpressionStatement(node) {
-
-                if (node.expression.type === "NewExpression") {
-                    context.report({ node, message: "Do not use 'new' for side effects." });
-                }
+            "ExpressionStatement > NewExpression"(node) {
+                context.report({ node: node.parent, message: "Do not use 'new' for side effects." });
             }
         };
 
diff --git a/tools/eslint/lib/rules/no-param-reassign.js b/tools/eslint/lib/rules/no-param-reassign.js
index 31f5be3cb25972..560d1d6b6f2fd6 100644
--- a/tools/eslint/lib/rules/no-param-reassign.js
+++ b/tools/eslint/lib/rules/no-param-reassign.js
@@ -20,17 +20,40 @@ module.exports = {
 
         schema: [
             {
-                type: "object",
-                properties: {
-                    props: { type: "boolean" }
-                },
-                additionalProperties: false
+                oneOf: [
+                    {
+                        type: "object",
+                        properties: {
+                            props: {
+                                enum: [false]
+                            }
+                        },
+                        additionalProperties: false
+                    },
+                    {
+                        type: "object",
+                        properties: {
+                            props: {
+                                enum: [true]
+                            },
+                            ignorePropertyModificationsFor: {
+                                type: "array",
+                                items: {
+                                    type: "string"
+                                },
+                                uniqueItems: true
+                            }
+                        },
+                        additionalProperties: false
+                    }
+                ]
             }
         ]
     },
 
     create(context) {
         const props = context.options[0] && Boolean(context.options[0].props);
+        const ignoredPropertyAssignmentsFor = context.options[0] && context.options[0].ignorePropertyModificationsFor || [];
 
         /**
          * Checks whether or not the reference modifies properties of its variable.
@@ -73,8 +96,15 @@ module.exports = {
                         }
                         break;
 
-                    default:
+                    // EXCLUDES: e.g. ({ [foo]: a }) = bar;
+                    case "Property":
+                        if (parent.key === node) {
+                            return false;
+                        }
+
                         break;
+
+                    // no default
                 }
 
                 node = parent;
@@ -103,7 +133,7 @@ module.exports = {
             ) {
                 if (reference.isWrite()) {
                     context.report({ node: identifier, message: "Assignment to function parameter '{{name}}'.", data: { name: identifier.name } });
-                } else if (props && isModifyingProp(reference)) {
+                } else if (props && isModifyingProp(reference) && ignoredPropertyAssignmentsFor.indexOf(identifier.name) === -1) {
                     context.report({ node: identifier, message: "Assignment to property of function parameter '{{name}}'.", data: { name: identifier.name } });
                 }
             }
diff --git a/tools/eslint/lib/rules/no-process-exit.js b/tools/eslint/lib/rules/no-process-exit.js
index c0c2455545afab..04e423b88ffb99 100644
--- a/tools/eslint/lib/rules/no-process-exit.js
+++ b/tools/eslint/lib/rules/no-process-exit.js
@@ -26,17 +26,9 @@ module.exports = {
         //--------------------------------------------------------------------------
 
         return {
-
-            CallExpression(node) {
-                const callee = node.callee;
-
-                if (callee.type === "MemberExpression" && callee.object.name === "process" &&
-                    callee.property.name === "exit"
-                ) {
-                    context.report({ node, message: "Don't use process.exit(); throw an error instead." });
-                }
+            "CallExpression > MemberExpression.callee[object.name = 'process'][property.name = 'exit']"(node) {
+                context.report({ node: node.parent, message: "Don't use process.exit(); throw an error instead." });
             }
-
         };
 
     }
diff --git a/tools/eslint/lib/rules/no-redeclare.js b/tools/eslint/lib/rules/no-redeclare.js
index deb896289b76f0..bfbc09ffb6f324 100644
--- a/tools/eslint/lib/rules/no-redeclare.js
+++ b/tools/eslint/lib/rules/no-redeclare.js
@@ -89,13 +89,13 @@ module.exports = {
                 BlockStatement: checkForBlock,
                 SwitchStatement: checkForBlock
             };
-        } else {
-            return {
-                Program: checkForGlobal,
-                FunctionDeclaration: checkForBlock,
-                FunctionExpression: checkForBlock,
-                ArrowFunctionExpression: checkForBlock
-            };
         }
+        return {
+            Program: checkForGlobal,
+            FunctionDeclaration: checkForBlock,
+            FunctionExpression: checkForBlock,
+            ArrowFunctionExpression: checkForBlock
+        };
+
     }
 };
diff --git a/tools/eslint/lib/rules/no-restricted-properties.js b/tools/eslint/lib/rules/no-restricted-properties.js
index b6c584c57e32e3..e3a3d14e51a22f 100644
--- a/tools/eslint/lib/rules/no-restricted-properties.js
+++ b/tools/eslint/lib/rules/no-restricted-properties.js
@@ -109,6 +109,7 @@ module.exports = {
             if (matchedObjectProperty) {
                 const message = matchedObjectProperty.message ? ` ${matchedObjectProperty.message}` : "";
 
+                // eslint-disable-next-line eslint-plugin/report-message-format
                 context.report({ node, message: "'{{objectName}}.{{propertyName}}' is restricted from being used.{{message}}", data: {
                     objectName,
                     propertyName,
@@ -117,6 +118,7 @@ module.exports = {
             } else if (globalMatchedProperty) {
                 const message = globalMatchedProperty.message ? ` ${globalMatchedProperty.message}` : "";
 
+                // eslint-disable-next-line eslint-plugin/report-message-format
                 context.report({ node, message: "'{{propertyName}}' is restricted from being used.{{message}}", data: {
                     propertyName,
                     message
diff --git a/tools/eslint/lib/rules/no-restricted-syntax.js b/tools/eslint/lib/rules/no-restricted-syntax.js
index 830452d995dab4..1798065ec06cbe 100644
--- a/tools/eslint/lib/rules/no-restricted-syntax.js
+++ b/tools/eslint/lib/rules/no-restricted-syntax.js
@@ -8,8 +8,6 @@
 // Rule Definition
 //------------------------------------------------------------------------------
 
-const nodeTypes = require("espree").Syntax;
-
 module.exports = {
     meta: {
         docs: {
@@ -20,31 +18,44 @@ module.exports = {
 
         schema: {
             type: "array",
-            items: [
-                {
-                    enum: Object.keys(nodeTypes).map(k => nodeTypes[k])
-                }
-            ],
+            items: [{
+                oneOf: [
+                    {
+                        type: "string"
+                    },
+                    {
+                        type: "object",
+                        properties: {
+                            selector: { type: "string" },
+                            message: { type: "string" }
+                        },
+                        required: ["selector"],
+                        additionalProperties: false
+                    }
+                ]
+            }],
             uniqueItems: true,
             minItems: 0
         }
     },
 
     create(context) {
-
-        /**
-         * Generates a warning from the provided node, saying that node type is not allowed.
-         * @param {ASTNode} node The node to warn on
-         * @returns {void}
-         */
-        function warn(node) {
-            context.report({ node, message: "Using '{{type}}' is not allowed.", data: node });
-        }
-
-        return context.options.reduce((result, nodeType) => {
-            result[nodeType] = warn;
-
-            return result;
+        return context.options.reduce((result, selectorOrObject) => {
+            const isStringFormat = (typeof selectorOrObject === "string");
+            const hasCustomMessage = !isStringFormat && Boolean(selectorOrObject.message);
+
+            const selector = isStringFormat ? selectorOrObject : selectorOrObject.selector;
+            const message = hasCustomMessage ? selectorOrObject.message : "Using '{{selector}}' is not allowed.";
+
+            return Object.assign(result, {
+                [selector](node) {
+                    context.report({
+                        node,
+                        message,
+                        data: hasCustomMessage ? {} : { selector }
+                    });
+                }
+            });
         }, {});
 
     }
diff --git a/tools/eslint/lib/rules/no-return-assign.js b/tools/eslint/lib/rules/no-return-assign.js
index 653d997468ebf8..882f94b7246212 100644
--- a/tools/eslint/lib/rules/no-return-assign.js
+++ b/tools/eslint/lib/rules/no-return-assign.js
@@ -5,23 +5,16 @@
 "use strict";
 
 //------------------------------------------------------------------------------
-// Helpers
+// Requirements
 //------------------------------------------------------------------------------
 
-const SENTINEL_TYPE = /^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExpression|ClassExpression)$/;
+const astUtils = require("../ast-utils");
 
-/**
- * Checks whether or not a node is enclosed in parentheses.
- * @param {Node|null} node - A node to check.
- * @param {sourceCode} sourceCode - The ESLint SourceCode object.
- * @returns {boolean} Whether or not the node is enclosed in parentheses.
- */
-function isEnclosedInParens(node, sourceCode) {
-    const prevToken = sourceCode.getTokenBefore(node);
-    const nextToken = sourceCode.getTokenAfter(node);
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
 
-    return prevToken && prevToken.value === "(" && nextToken && nextToken.value === ")";
-}
+const SENTINEL_TYPE = /^(?:[a-zA-Z]+?Statement|ArrowFunctionExpression|FunctionExpression|ClassExpression)$/;
 
 //------------------------------------------------------------------------------
 // Rule Definition
@@ -48,7 +41,7 @@ module.exports = {
 
         return {
             AssignmentExpression(node) {
-                if (!always && isEnclosedInParens(node, sourceCode)) {
+                if (!always && astUtils.isParenthesised(sourceCode, node)) {
                     return;
                 }
 
diff --git a/tools/eslint/lib/rules/no-return-await.js b/tools/eslint/lib/rules/no-return-await.js
index bc0498cb044d70..a7933460d47624 100644
--- a/tools/eslint/lib/rules/no-return-await.js
+++ b/tools/eslint/lib/rules/no-return-await.js
@@ -19,7 +19,7 @@ module.exports = {
             category: "Best Practices",
             recommended: false // TODO: set to true
         },
-        fixable: false,
+        fixable: null,
         schema: [
         ]
     },
@@ -35,7 +35,7 @@ module.exports = {
             context.report({
                 node: context.getSourceCode().getFirstToken(node),
                 loc: node.loc,
-                message,
+                message
             });
         }
 
@@ -88,7 +88,7 @@ module.exports = {
                 if (isInTailCallPosition(node) && !hasErrorHandler(node)) {
                     reportUnnecessaryAwait(node);
                 }
-            },
+            }
         };
     }
 };
diff --git a/tools/eslint/lib/rules/no-sequences.js b/tools/eslint/lib/rules/no-sequences.js
index 67f9d8212fd4e5..23c1956ebeba07 100644
--- a/tools/eslint/lib/rules/no-sequences.js
+++ b/tools/eslint/lib/rules/no-sequences.js
@@ -5,6 +5,12 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -57,12 +63,7 @@ module.exports = {
          * @returns {boolean} True if the node has a paren on each side.
          */
         function isParenthesised(node) {
-            const previousToken = sourceCode.getTokenBefore(node),
-                nextToken = sourceCode.getTokenAfter(node);
-
-            return previousToken && nextToken &&
-                previousToken.value === "(" && previousToken.range[1] <= node.range[0] &&
-                nextToken.value === ")" && nextToken.range[0] >= node.range[1];
+            return astUtils.isParenthesised(sourceCode, node);
         }
 
         /**
@@ -75,8 +76,8 @@ module.exports = {
                 nextToken = sourceCode.getTokenAfter(node, 1);
 
             return isParenthesised(node) && previousToken && nextToken &&
-                previousToken.value === "(" && previousToken.range[1] <= node.range[0] &&
-                nextToken.value === ")" && nextToken.range[0] >= node.range[1];
+                astUtils.isOpeningParenToken(previousToken) && previousToken.range[1] <= node.range[0] &&
+                astUtils.isClosingParenToken(nextToken) && nextToken.range[0] >= node.range[1];
         }
 
         return {
diff --git a/tools/eslint/lib/rules/no-sync.js b/tools/eslint/lib/rules/no-sync.js
index 90b2be1e9fdf19..885b1eb6289174 100644
--- a/tools/eslint/lib/rules/no-sync.js
+++ b/tools/eslint/lib/rules/no-sync.js
@@ -26,19 +26,14 @@ module.exports = {
 
         return {
 
-            MemberExpression(node) {
-                const propertyName = node.property.name,
-                    syncRegex = /.*Sync$/;
-
-                if (syncRegex.exec(propertyName) !== null) {
-                    context.report({
-                        node,
-                        message: "Unexpected sync method: '{{propertyName}}'.",
-                        data: {
-                            propertyName
-                        }
-                    });
-                }
+            "MemberExpression[property.name=/.*Sync$/]"(node) {
+                context.report({
+                    node,
+                    message: "Unexpected sync method: '{{propertyName}}'.",
+                    data: {
+                        propertyName: node.property.name
+                    }
+                });
             }
         };
 
diff --git a/tools/eslint/lib/rules/no-throw-literal.js b/tools/eslint/lib/rules/no-throw-literal.js
index 0d1f42985f89ec..5e9054399a28ae 100644
--- a/tools/eslint/lib/rules/no-throw-literal.js
+++ b/tools/eslint/lib/rules/no-throw-literal.js
@@ -5,44 +5,7 @@
 
 "use strict";
 
-//------------------------------------------------------------------------------
-// Helpers
-//------------------------------------------------------------------------------
-
-/**
- * Determine if a node has a possiblity to be an Error object
- * @param  {ASTNode}  node  ASTNode to check
- * @returns {boolean}       True if there is a chance it contains an Error obj
- */
-function couldBeError(node) {
-    switch (node.type) {
-        case "Identifier":
-        case "CallExpression":
-        case "NewExpression":
-        case "MemberExpression":
-        case "TaggedTemplateExpression":
-        case "YieldExpression":
-            return true; // possibly an error object.
-
-        case "AssignmentExpression":
-            return couldBeError(node.right);
-
-        case "SequenceExpression": {
-            const exprs = node.expressions;
-
-            return exprs.length !== 0 && couldBeError(exprs[exprs.length - 1]);
-        }
-
-        case "LogicalExpression":
-            return couldBeError(node.left) || couldBeError(node.right);
-
-        case "ConditionalExpression":
-            return couldBeError(node.consequent) || couldBeError(node.alternate);
-
-        default:
-            return false;
-    }
-}
+const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Rule Definition
@@ -64,7 +27,7 @@ module.exports = {
         return {
 
             ThrowStatement(node) {
-                if (!couldBeError(node.argument)) {
+                if (!astUtils.couldBeError(node.argument)) {
                     context.report({ node, message: "Expected an object to be thrown." });
                 } else if (node.argument.type === "Identifier") {
                     if (node.argument.name === "undefined") {
diff --git a/tools/eslint/lib/rules/no-trailing-spaces.js b/tools/eslint/lib/rules/no-trailing-spaces.js
index eb1bd2fcdc266f..471381f24618e5 100644
--- a/tools/eslint/lib/rules/no-trailing-spaces.js
+++ b/tools/eslint/lib/rules/no-trailing-spaces.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -34,7 +40,7 @@ module.exports = {
     create(context) {
         const sourceCode = context.getSourceCode();
 
-        const BLANK_CLASS = "[ \t\u00a0\u2000-\u200b\u2028\u2029\u3000]",
+        const BLANK_CLASS = "[ \t\u00a0\u2000-\u200b\u3000]",
             SKIP_BLANK = `^${BLANK_CLASS}*$`,
             NONBLANK = `${BLANK_CLASS}+$`;
 
@@ -81,7 +87,7 @@ module.exports = {
                 const re = new RegExp(NONBLANK),
                     skipMatch = new RegExp(SKIP_BLANK),
                     lines = sourceCode.lines,
-                    linebreaks = sourceCode.getText().match(/\r\n|\r|\n|\u2028|\u2029/g);
+                    linebreaks = sourceCode.getText().match(astUtils.createGlobalLinebreakMatcher());
                 let totalLength = 0,
                     fixRange = [];
 
diff --git a/tools/eslint/lib/rules/no-undefined.js b/tools/eslint/lib/rules/no-undefined.js
index 18e1d98641dc86..d29ac1e720f2c6 100644
--- a/tools/eslint/lib/rules/no-undefined.js
+++ b/tools/eslint/lib/rules/no-undefined.js
@@ -21,15 +21,54 @@ module.exports = {
 
     create(context) {
 
+        /**
+         * Report an invalid "undefined" identifier node.
+         * @param {ASTNode} node The node to report.
+         * @returns {void}
+         */
+        function report(node) {
+            context.report({
+                node,
+                message: "Unexpected use of undefined."
+            });
+        }
+
+        /**
+         * Checks the given scope for references to `undefined` and reports
+         * all references found.
+         * @param {escope.Scope} scope The scope to check.
+         * @returns {void}
+         */
+        function checkScope(scope) {
+            const undefinedVar = scope.set.get("undefined");
+
+            if (!undefinedVar) {
+                return;
+            }
+
+            const references = undefinedVar.references;
+
+            const defs = undefinedVar.defs;
+
+            // Report non-initializing references (those are covered in defs below)
+            references
+                .filter(ref => !ref.init)
+                .forEach(ref => report(ref.identifier));
+
+            defs.forEach(def => report(def.name));
+        }
+
         return {
+            "Program:exit"() {
+                const globalScope = context.getScope();
+
+                const stack = [globalScope];
 
-            Identifier(node) {
-                if (node.name === "undefined") {
-                    const parent = context.getAncestors().pop();
+                while (stack.length) {
+                    const scope = stack.pop();
 
-                    if (!parent || parent.type !== "MemberExpression" || node !== parent.property || parent.computed) {
-                        context.report({ node, message: "Unexpected use of undefined." });
-                    }
+                    stack.push.apply(stack, scope.childScopes);
+                    checkScope(scope);
                 }
             }
         };
diff --git a/tools/eslint/lib/rules/no-unexpected-multiline.js b/tools/eslint/lib/rules/no-unexpected-multiline.js
index bae4833983b14e..6c15f5dd591e31 100644
--- a/tools/eslint/lib/rules/no-unexpected-multiline.js
+++ b/tools/eslint/lib/rules/no-unexpected-multiline.js
@@ -4,9 +4,16 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
+
 module.exports = {
     meta: {
         docs: {
@@ -35,14 +42,8 @@ module.exports = {
          * @private
          */
         function checkForBreakAfter(node, msg) {
-            let nodeExpressionEnd = node;
-            let openParen = sourceCode.getTokenAfter(node);
-
-            // Move along until the end of the wrapped expression
-            while (openParen.value === ")") {
-                nodeExpressionEnd = openParen;
-                openParen = sourceCode.getTokenAfter(nodeExpressionEnd);
-            }
+            const openParen = sourceCode.getTokenAfter(node, astUtils.isNotClosingParenToken);
+            const nodeExpressionEnd = sourceCode.getTokenBefore(openParen);
 
             if (openParen.loc.start.line !== nodeExpressionEnd.loc.end.line) {
                 context.report({ node, loc: openParen.loc.start, message: msg, data: { char: openParen.value } });
diff --git a/tools/eslint/lib/rules/no-unneeded-ternary.js b/tools/eslint/lib/rules/no-unneeded-ternary.js
index cba83ea48140ec..b031927f9248cb 100644
--- a/tools/eslint/lib/rules/no-unneeded-ternary.js
+++ b/tools/eslint/lib/rules/no-unneeded-ternary.js
@@ -67,7 +67,11 @@ module.exports = {
          */
         function invertExpression(node) {
             if (node.type === "BinaryExpression" && Object.prototype.hasOwnProperty.call(OPERATOR_INVERSES, node.operator)) {
-                const operatorToken = sourceCode.getTokensBetween(node.left, node.right).find(token => token.value === node.operator);
+                const operatorToken = sourceCode.getFirstTokenBetween(
+                    node.left,
+                    node.right,
+                    token => token.value === node.operator
+                );
 
                 return sourceCode.getText().slice(node.range[0], operatorToken.range[0]) + OPERATOR_INVERSES[node.operator] + sourceCode.getText().slice(operatorToken.range[1], node.range[1]);
             }
diff --git a/tools/eslint/lib/rules/no-unsafe-negation.js b/tools/eslint/lib/rules/no-unsafe-negation.js
index 4e2378d4d0f7db..761dc03386e13f 100644
--- a/tools/eslint/lib/rules/no-unsafe-negation.js
+++ b/tools/eslint/lib/rules/no-unsafe-negation.js
@@ -44,7 +44,7 @@ module.exports = {
         docs: {
             description: "disallow negating the left operand of relational operators",
             category: "Possible Errors",
-            recommended: false
+            recommended: true
         },
         schema: [],
         fixable: "code"
diff --git a/tools/eslint/lib/rules/no-unused-expressions.js b/tools/eslint/lib/rules/no-unused-expressions.js
index 548e02f463e71a..b4e1074d5498a1 100644
--- a/tools/eslint/lib/rules/no-unused-expressions.js
+++ b/tools/eslint/lib/rules/no-unused-expressions.js
@@ -25,6 +25,9 @@ module.exports = {
                     },
                     allowTernary: {
                         type: "boolean"
+                    },
+                    allowTaggedTemplates: {
+                        type: "boolean"
                     }
                 },
                 additionalProperties: false
@@ -35,7 +38,8 @@ module.exports = {
     create(context) {
         const config = context.options[0] || {},
             allowShortCircuit = config.allowShortCircuit || false,
-            allowTernary = config.allowTernary || false;
+            allowTernary = config.allowTernary || false,
+            allowTaggedTemplates = config.allowTaggedTemplates || false;
 
         /**
          * @param {ASTNode} node - any node
@@ -95,12 +99,17 @@ module.exports = {
                     return isValidExpression(node.consequent) && isValidExpression(node.alternate);
                 }
             }
+
             if (allowShortCircuit) {
                 if (node.type === "LogicalExpression") {
                     return isValidExpression(node.right);
                 }
             }
 
+            if (allowTaggedTemplates && node.type === "TaggedTemplateExpression") {
+                return true;
+            }
+
             return /^(?:Assignment|Call|New|Update|Yield|Await)Expression$/.test(node.type) ||
                 (node.type === "UnaryExpression" && ["delete", "void"].indexOf(node.operator) >= 0);
         }
diff --git a/tools/eslint/lib/rules/no-unused-labels.js b/tools/eslint/lib/rules/no-unused-labels.js
index 7d3e533c44a566..12f60ca184ea57 100644
--- a/tools/eslint/lib/rules/no-unused-labels.js
+++ b/tools/eslint/lib/rules/no-unused-labels.js
@@ -17,10 +17,13 @@ module.exports = {
             recommended: true
         },
 
-        schema: []
+        schema: [],
+
+        fixable: "code"
     },
 
     create(context) {
+        const sourceCode = context.getSourceCode();
         let scopeInfo = null;
 
         /**
@@ -49,7 +52,19 @@ module.exports = {
                 context.report({
                     node: node.label,
                     message: "'{{name}}:' is defined but never used.",
-                    data: node.label
+                    data: node.label,
+                    fix(fixer) {
+
+                        /*
+                         * Only perform a fix if there are no comments between the label and the body. This will be the case
+                         * when there is exactly one token/comment (the ":") between the label and the body.
+                         */
+                        if (sourceCode.getTokenAfter(node.label, { includeComments: true }) === sourceCode.getTokenBefore(node.body, { includeComments: true })) {
+                            return fixer.removeRange([node.range[0], node.body.range[0]]);
+                        }
+
+                        return null;
+                    }
                 });
             }
 
diff --git a/tools/eslint/lib/rules/no-unused-vars.js b/tools/eslint/lib/rules/no-unused-vars.js
index ac8f2ed1c0a20a..6f270396739c8a 100644
--- a/tools/eslint/lib/rules/no-unused-vars.js
+++ b/tools/eslint/lib/rules/no-unused-vars.js
@@ -42,6 +42,9 @@ module.exports = {
                             args: {
                                 enum: ["all", "after-used", "none"]
                             },
+                            ignoreRestSiblings: {
+                                type: "boolean"
+                            },
                             argsIgnorePattern: {
                                 type: "string"
                             },
@@ -59,13 +62,16 @@ module.exports = {
     },
 
     create(context) {
+        const sourceCode = context.getSourceCode();
 
         const DEFINED_MESSAGE = "'{{name}}' is defined but never used.";
         const ASSIGNED_MESSAGE = "'{{name}}' is assigned a value but never used.";
+        const REST_PROPERTY_TYPE = /^(?:Experimental)?RestProperty$/;
 
         const config = {
             vars: "all",
             args: "after-used",
+            ignoreRestSiblings: false,
             caughtErrors: "none"
         };
 
@@ -77,6 +83,7 @@ module.exports = {
             } else {
                 config.vars = firstOption.vars || config.vars;
                 config.args = firstOption.args || config.args;
+                config.ignoreRestSiblings = firstOption.ignoreRestSiblings || config.ignoreRestSiblings;
                 config.caughtErrors = firstOption.caughtErrors || config.caughtErrors;
 
                 if (firstOption.varsIgnorePattern) {
@@ -120,9 +127,32 @@ module.exports = {
                 }
 
                 return node.parent.type.indexOf("Export") === 0;
-            } else {
-                return false;
             }
+            return false;
+
+        }
+
+        /**
+         * Determines if a variable has a sibling rest property
+         * @param {Variable} variable - EScope variable object.
+         * @returns {boolean} True if the variable is exported, false if not.
+         * @private
+         */
+        function hasRestSpreadSibling(variable) {
+            if (config.ignoreRestSiblings) {
+                return variable.defs.some(def => {
+                    const propertyNode = def.name.parent;
+                    const patternNode = propertyNode.parent;
+
+                    return (
+                        propertyNode.type === "Property" &&
+                        patternNode.type === "ObjectPattern" &&
+                        REST_PROPERTY_TYPE.test(patternNode.properties[patternNode.properties.length - 1].type)
+                    );
+                });
+            }
+
+            return false;
         }
 
         /**
@@ -495,7 +525,7 @@ module.exports = {
                         }
                     }
 
-                    if (!isUsedVariable(variable) && !isExported(variable)) {
+                    if (!isUsedVariable(variable) && !isExported(variable) && !hasRestSpreadSibling(variable)) {
                         unusedVars.push(variable);
                     }
                 }
@@ -537,23 +567,8 @@ module.exports = {
          */
         function getLocation(variable) {
             const comment = variable.eslintExplicitGlobalComment;
-            const baseLoc = comment.loc.start;
-            let column = getColumnInComment(variable, comment);
-            const prefix = comment.value.slice(0, column);
-            const lineInComment = (prefix.match(/\n/g) || []).length;
-
-            if (lineInComment > 0) {
-                column -= 1 + prefix.lastIndexOf("\n");
-            } else {
-
-                // 2 is for `/*`
-                column += baseLoc.column + 2;
-            }
 
-            return {
-                line: baseLoc.line + lineInComment,
-                column
-            };
+            return sourceCode.getLocFromIndex(comment.range[0] + 2 + getColumnInComment(variable, comment));
         }
 
         //--------------------------------------------------------------------------
diff --git a/tools/eslint/lib/rules/no-use-before-define.js b/tools/eslint/lib/rules/no-use-before-define.js
index ea1cf301f29af4..1a779b86f2318e 100644
--- a/tools/eslint/lib/rules/no-use-before-define.js
+++ b/tools/eslint/lib/rules/no-use-before-define.js
@@ -21,22 +21,17 @@ const FOR_IN_OF_TYPE = /^For(?:In|Of)Statement$/;
 function parseOptions(options) {
     let functions = true;
     let classes = true;
+    let variables = true;
 
     if (typeof options === "string") {
         functions = (options !== "nofunc");
     } else if (typeof options === "object" && options !== null) {
         functions = options.functions !== false;
         classes = options.classes !== false;
+        variables = options.variables !== false;
     }
 
-    return { functions, classes };
-}
-
-/**
- * @returns {boolean} `false`.
- */
-function alwaysFalse() {
-    return false;
+    return { functions, classes, variables };
 }
 
 /**
@@ -64,14 +59,16 @@ function isOuterClass(variable, reference) {
 }
 
 /**
- * Checks whether or not a given variable is a function declaration or a class declaration in an upper function scope.
- *
- * @param {escope.Variable} variable - A variable to check.
- * @param {escope.Reference} reference - A reference to check.
- * @returns {boolean} `true` if the variable is a function declaration or a class declaration.
- */
-function isFunctionOrOuterClass(variable, reference) {
-    return isFunction(variable, reference) || isOuterClass(variable, reference);
+* Checks whether or not a given variable is a variable declaration in an upper function scope.
+* @param {escope.Variable} variable - A variable to check.
+* @param {escope.Reference} reference - A reference to check.
+* @returns {boolean} `true` if the variable is a variable declaration.
+*/
+function isOuterVariable(variable, reference) {
+    return (
+        variable.defs[0].type === "Variable" &&
+        variable.scope.variableScope !== reference.from.variableScope
+    );
 }
 
 /**
@@ -155,7 +152,8 @@ module.exports = {
                         type: "object",
                         properties: {
                             functions: { type: "boolean" },
-                            classes: { type: "boolean" }
+                            classes: { type: "boolean" },
+                            variables: { type: "boolean" }
                         },
                         additionalProperties: false
                     }
@@ -167,17 +165,23 @@ module.exports = {
     create(context) {
         const options = parseOptions(context.options[0]);
 
-        // Defines a function which checks whether or not a reference is allowed according to the option.
-        let isAllowed;
-
-        if (options.functions && options.classes) {
-            isAllowed = alwaysFalse;
-        } else if (options.functions) {
-            isAllowed = isOuterClass;
-        } else if (options.classes) {
-            isAllowed = isFunction;
-        } else {
-            isAllowed = isFunctionOrOuterClass;
+        /**
+         * Determines whether a given use-before-define case should be reported according to the options.
+         * @param {escope.Variable} variable The variable that gets used before being defined
+         * @param {escope.Reference} reference The reference to the variable
+         * @returns {boolean} `true` if the usage should be reported
+         */
+        function isForbidden(variable, reference) {
+            if (isFunction(variable)) {
+                return options.functions;
+            }
+            if (isOuterClass(variable, reference)) {
+                return options.classes;
+            }
+            if (isOuterVariable(variable, reference)) {
+                return options.variables;
+            }
+            return true;
         }
 
         /**
@@ -200,7 +204,7 @@ module.exports = {
                     !variable ||
                     variable.identifiers.length === 0 ||
                     (variable.identifiers[0].range[1] < reference.identifier.range[1] && !isInInitializer(variable, reference)) ||
-                    isAllowed(variable, reference)
+                    !isForbidden(variable, reference)
                 ) {
                     return;
                 }
diff --git a/tools/eslint/lib/rules/no-useless-computed-key.js b/tools/eslint/lib/rules/no-useless-computed-key.js
index c1ab1d9acd5bc2..fd5ec2c92b5c5c 100644
--- a/tools/eslint/lib/rules/no-useless-computed-key.js
+++ b/tools/eslint/lib/rules/no-useless-computed-key.js
@@ -4,6 +4,13 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+const esUtils = require("esutils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -34,15 +41,14 @@ module.exports = {
                 const key = node.key,
                     nodeType = typeof key.value;
 
-                if (key.type === "Literal" && (nodeType === "string" || nodeType === "number")) {
+                if (key.type === "Literal" && (nodeType === "string" || nodeType === "number") && key.value !== "__proto__") {
                     context.report({
                         node,
                         message: MESSAGE_UNNECESSARY_COMPUTED,
                         data: { property: sourceCode.getText(key) },
                         fix(fixer) {
-                            const leftSquareBracket = sourceCode.getFirstToken(node, node.value.generator || node.value.async ? 1 : 0);
-                            const rightSquareBracket = sourceCode.getTokensBetween(node.key, node.value).find(token => token.value === "]");
-
+                            const leftSquareBracket = sourceCode.getFirstToken(node, astUtils.isOpeningBracketToken);
+                            const rightSquareBracket = sourceCode.getFirstTokenBetween(node.key, node.value, astUtils.isClosingBracketToken);
                             const tokensBetween = sourceCode.getTokensBetween(leftSquareBracket, rightSquareBracket, 1);
 
                             if (tokensBetween.slice(0, -1).some((token, index) => sourceCode.getText().slice(token.range[1], tokensBetween[index + 1].range[0]).trim())) {
@@ -50,7 +56,17 @@ module.exports = {
                                 // If there are comments between the brackets and the property name, don't do a fix.
                                 return null;
                             }
-                            return fixer.replaceTextRange([leftSquareBracket.range[0], rightSquareBracket.range[1]], key.raw);
+
+                            const tokenBeforeLeftBracket = sourceCode.getTokenBefore(leftSquareBracket);
+
+                            // Insert a space before the key to avoid changing identifiers, e.g. ({ get[2]() {} }) to ({ get2() {} })
+                            const needsSpaceBeforeKey = tokenBeforeLeftBracket.range[1] === leftSquareBracket.range[0] &&
+                                esUtils.code.isIdentifierPartES6(tokenBeforeLeftBracket.value.slice(-1).charCodeAt(0)) &&
+                                esUtils.code.isIdentifierPartES6(key.raw.charCodeAt(0));
+
+                            const replacementKey = (needsSpaceBeforeKey ? " " : "") + key.raw;
+
+                            return fixer.replaceTextRange([leftSquareBracket.range[0], rightSquareBracket.range[1]], replacementKey);
                         }
                     });
                 }
diff --git a/tools/eslint/lib/rules/no-useless-concat.js b/tools/eslint/lib/rules/no-useless-concat.js
index ed0ef66a2441e1..e42781fee7da30 100644
--- a/tools/eslint/lib/rules/no-useless-concat.js
+++ b/tools/eslint/lib/rules/no-useless-concat.js
@@ -23,6 +23,15 @@ function isConcatenation(node) {
     return node.type === "BinaryExpression" && node.operator === "+";
 }
 
+/**
+ * Checks if the given token is a `+` token or not.
+ * @param {Token} token - The token to check.
+ * @returns {boolean} `true` if the token is a `+` token.
+ */
+function isConcatOperatorToken(token) {
+    return token.value === "+" && token.type === "Punctuator";
+}
+
 /**
  * Get's the right most node on the left side of a BinaryExpression with + operator.
  * @param {ASTNode} node - A BinaryExpression node to check.
@@ -85,13 +94,7 @@ module.exports = {
                     astUtils.isStringLiteral(right) &&
                     astUtils.isTokenOnSameLine(left, right)
                 ) {
-
-                    // move warning location to operator
-                    let operatorToken = sourceCode.getTokenAfter(left);
-
-                    while (operatorToken.value !== "+") {
-                        operatorToken = sourceCode.getTokenAfter(operatorToken);
-                    }
+                    const operatorToken = sourceCode.getFirstTokenBetween(left, right, isConcatOperatorToken);
 
                     context.report({
                         node,
diff --git a/tools/eslint/lib/rules/no-useless-escape.js b/tools/eslint/lib/rules/no-useless-escape.js
index b9266bbbafa69a..ffe11999707ce2 100644
--- a/tools/eslint/lib/rules/no-useless-escape.js
+++ b/tools/eslint/lib/rules/no-useless-escape.js
@@ -24,7 +24,7 @@ function union(setA, setB) {
     }());
 }
 
-const VALID_STRING_ESCAPES = new Set("\\nrvtbfux\n\r\u2028\u2029");
+const VALID_STRING_ESCAPES = union(new Set("\\nrvtbfux"), astUtils.LINEBREAKS);
 const REGEX_GENERAL_ESCAPES = new Set("\\bcdDfnrsStvwWxu0123456789]");
 const REGEX_NON_CHARCLASS_ESCAPES = union(REGEX_GENERAL_ESCAPES, new Set("^/.$*+?[{}|()B"));
 
@@ -94,7 +94,7 @@ module.exports = {
         function report(node, startOffset, character) {
             context.report({
                 node,
-                loc: astUtils.getLocationFromRangeIndex(sourceCode, astUtils.getRangeIndexFromLocation(sourceCode, node.loc.start) + startOffset),
+                loc: sourceCode.getLocFromIndex(sourceCode.getIndexFromLoc(node.loc.start) + startOffset),
                 message: "Unnecessary escape character: \\{{character}}.",
                 data: { character }
             });
@@ -147,7 +147,13 @@ module.exports = {
         function check(node) {
             const isTemplateElement = node.type === "TemplateElement";
 
-            if (isTemplateElement && node.parent && node.parent.parent && node.parent.parent.type === "TaggedTemplateExpression") {
+            if (
+                isTemplateElement &&
+                node.parent &&
+                node.parent.parent &&
+                node.parent.parent.type === "TaggedTemplateExpression" &&
+                node.parent === node.parent.parent.quasi
+            ) {
 
                 // Don't report tagged template literals, because the backslash character is accessible to the tag function.
                 return;
diff --git a/tools/eslint/lib/rules/no-useless-return.js b/tools/eslint/lib/rules/no-useless-return.js
index e2a6da03183501..29f644cc43df73 100644
--- a/tools/eslint/lib/rules/no-useless-return.js
+++ b/tools/eslint/lib/rules/no-useless-return.js
@@ -8,7 +8,8 @@
 // Requirements
 //------------------------------------------------------------------------------
 
-const astUtils = require("../ast-utils");
+const astUtils = require("../ast-utils"),
+    FixTracker = require("../util/fix-tracker");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -45,13 +46,7 @@ function remove(array, element) {
  * @returns {boolean} `true` if the node is removeable.
  */
 function isRemovable(node) {
-    const parent = node.parent;
-
-    return (
-        parent.type === "Program" ||
-        parent.type === "BlockStatement" ||
-        parent.type === "SwitchCase"
-    );
+    return astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type);
 }
 
 /**
@@ -213,7 +208,7 @@ module.exports = {
                 scopeInfo = {
                     upper: scopeInfo,
                     uselessReturns: [],
-                    codePath,
+                    codePath
                 };
             },
 
@@ -225,8 +220,18 @@ module.exports = {
                         loc: node.loc,
                         message: "Unnecessary return statement.",
                         fix(fixer) {
-                            return isRemovable(node) ? fixer.remove(node) : null;
-                        },
+                            if (isRemovable(node)) {
+
+                                // Extend the replacement range to include the
+                                // entire function to avoid conflicting with
+                                // no-else-return.
+                                // https://github.com/eslint/eslint/issues/8026
+                                return new FixTracker(fixer, context.getSourceCode())
+                                    .retainEnclosingFunction(node)
+                                    .remove(node);
+                            }
+                            return null;
+                        }
                     });
                 }
 
@@ -238,7 +243,7 @@ module.exports = {
             onCodePathSegmentStart(segment) {
                 const info = {
                     uselessReturns: getUselessReturns([], segment.allPrevSegments),
-                    returned: false,
+                    returned: false
                 };
 
                 // Stores the info.
@@ -287,7 +292,7 @@ module.exports = {
             WithStatement: markReturnStatementsOnCurrentSegmentsAsUsed,
             ExportNamedDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,
             ExportDefaultDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,
-            ExportAllDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed,
+            ExportAllDeclaration: markReturnStatementsOnCurrentSegmentsAsUsed
         };
     }
 };
diff --git a/tools/eslint/lib/rules/no-var.js b/tools/eslint/lib/rules/no-var.js
index 3c22f009c63bb6..86373ad5009eda 100644
--- a/tools/eslint/lib/rules/no-var.js
+++ b/tools/eslint/lib/rules/no-var.js
@@ -128,6 +128,43 @@ function isUsedFromOutsideOf(scopeNode) {
     };
 }
 
+/**
+ * Creates the predicate function which checks whether a variable has their references in TDZ.
+ *
+ * The predicate function would return `true`:
+ *
+ * - if a reference is before the declarator. E.g. (var a = b, b = 1;)(var {a = b, b} = {};)
+ * - if a reference is in the expression of their default value.  E.g. (var {a = a} = {};)
+ * - if a reference is in the expression of their initializer.  E.g. (var a = a;)
+ *
+ * @param {ASTNode} node - The initializer node of VariableDeclarator.
+ * @returns {Function} The predicate function.
+ * @private
+ */
+function hasReferenceInTDZ(node) {
+    const initStart = node.range[0];
+    const initEnd = node.range[1];
+
+    return variable => {
+        const id = variable.defs[0].name;
+        const idStart = id.range[0];
+        const defaultValue = (id.parent.type === "AssignmentPattern" ? id.parent.right : null);
+        const defaultStart = defaultValue && defaultValue.range[0];
+        const defaultEnd = defaultValue && defaultValue.range[1];
+
+        return variable.references.some(reference => {
+            const start = reference.identifier.range[0];
+            const end = reference.identifier.range[1];
+
+            return !reference.init && (
+                start < idStart ||
+                (defaultValue !== null && start >= defaultStart && end <= defaultEnd) ||
+                (start >= initStart && end <= initEnd)
+            );
+        });
+    };
+}
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -147,6 +184,21 @@ module.exports = {
     create(context) {
         const sourceCode = context.getSourceCode();
 
+        /**
+         * Checks whether the variables which are defined by the given declarator node have their references in TDZ.
+         *
+         * @param {ASTNode} declarator - The VariableDeclarator node to check.
+         * @returns {boolean} `true` if one of the variables which are defined by the given declarator node have their references in TDZ.
+         */
+        function hasSelfReferenceInTDZ(declarator) {
+            if (!declarator.init) {
+                return false;
+            }
+            const variables = context.getDeclaredVariables(declarator);
+
+            return variables.some(hasReferenceInTDZ(declarator.init));
+        }
+
         /**
          * Checks whether it can fix a given variable declaration or not.
          * It cannot fix if the following cases:
@@ -156,6 +208,8 @@ module.exports = {
          * - A variable is used from outside the scope.
          * - A variable is used from a closure within a loop.
          * - A variable might be used before it is assigned within a loop.
+         * - A variable might be used in TDZ.
+         * - A variable is declared in statement position (e.g. a single-line `IfStatement`)
          *
          * ## A variable is declared on a SwitchCase node.
          *
@@ -201,8 +255,10 @@ module.exports = {
             const scopeNode = getScopeNode(node);
 
             if (node.parent.type === "SwitchCase" ||
-                    variables.some(isRedeclared) ||
-                    variables.some(isUsedFromOutsideOf(scopeNode))) {
+                node.declarations.some(hasSelfReferenceInTDZ) ||
+                variables.some(isRedeclared) ||
+                variables.some(isUsedFromOutsideOf(scopeNode))
+            ) {
                 return false;
             }
 
@@ -215,6 +271,16 @@ module.exports = {
                 }
             }
 
+            if (
+                !isLoopAssignee(node) &&
+                !(node.parent.type === "ForStatement" && node.parent.init === node) &&
+                !astUtils.STATEMENT_LIST_PARENTS.has(node.parent.type)
+            ) {
+
+                // If the declaration is not in a block, e.g. `if (foo) var bar = 1;`, then it can't be fixed.
+                return false;
+            }
+
             return true;
         }
 
@@ -241,7 +307,7 @@ module.exports = {
         }
 
         return {
-            VariableDeclaration(node) {
+            "VariableDeclaration:exit"(node) {
                 if (node.kind === "var") {
                     report(node);
                 }
diff --git a/tools/eslint/lib/rules/no-whitespace-before-property.js b/tools/eslint/lib/rules/no-whitespace-before-property.js
index cb9af56579fce3..71db50c4395643 100644
--- a/tools/eslint/lib/rules/no-whitespace-before-property.js
+++ b/tools/eslint/lib/rules/no-whitespace-before-property.js
@@ -4,6 +4,10 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
 const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
@@ -29,21 +33,6 @@ module.exports = {
         // Helpers
         //--------------------------------------------------------------------------
 
-        /**
-         * Finds opening bracket token of node's computed property
-         * @param {ASTNode} node - the node to check
-         * @returns {Token} opening bracket token of node's computed property
-         * @private
-         */
-        function findOpeningBracket(node) {
-            let token = sourceCode.getTokenBefore(node.property);
-
-            while (token.value !== "[") {
-                token = sourceCode.getTokenBefore(token);
-            }
-            return token;
-        }
-
         /**
          * Reports whitespace before property token
          * @param {ASTNode} node - the node to report in the event of an error
@@ -87,7 +76,7 @@ module.exports = {
                 }
 
                 if (node.computed) {
-                    rightToken = findOpeningBracket(node);
+                    rightToken = sourceCode.getTokenBefore(node.property, astUtils.isOpeningBracketToken);
                     leftToken = sourceCode.getTokenBefore(rightToken);
                 } else {
                     rightToken = sourceCode.getFirstToken(node.property);
diff --git a/tools/eslint/lib/rules/nonblock-statement-body-position.js b/tools/eslint/lib/rules/nonblock-statement-body-position.js
new file mode 100644
index 00000000000000..212e36a57c2b57
--- /dev/null
+++ b/tools/eslint/lib/rules/nonblock-statement-body-position.js
@@ -0,0 +1,114 @@
+/**
+ * @fileoverview enforce the location of single-line statements
+ * @author Teddy Katz
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+const POSITION_SCHEMA = { enum: ["beside", "below", "any"] };
+
+module.exports = {
+    meta: {
+        docs: {
+            description: "enforce the location of single-line statements",
+            category: "Stylistic Issues",
+            recommended: false
+        },
+        fixable: "whitespace",
+        schema: [
+            POSITION_SCHEMA,
+            {
+                properties: {
+                    overrides: {
+                        properties: {
+                            if: POSITION_SCHEMA,
+                            else: POSITION_SCHEMA,
+                            while: POSITION_SCHEMA,
+                            do: POSITION_SCHEMA,
+                            for: POSITION_SCHEMA
+                        },
+                        additionalProperties: false
+                    }
+                },
+                additionalProperties: false
+            }
+        ]
+    },
+
+    create(context) {
+        const sourceCode = context.getSourceCode();
+
+        //----------------------------------------------------------------------
+        // Helpers
+        //----------------------------------------------------------------------
+
+        /**
+         * Gets the applicable preference for a particular keyword
+         * @param {string} keywordName The name of a keyword, e.g. 'if'
+         * @returns {string} The applicable option for the keyword, e.g. 'beside'
+         */
+        function getOption(keywordName) {
+            return context.options[1] && context.options[1].overrides && context.options[1].overrides[keywordName] ||
+                context.options[0] ||
+                "beside";
+        }
+
+        /**
+         * Validates the location of a single-line statement
+         * @param {ASTNode} node The single-line statement
+         * @param {string} keywordName The applicable keyword name for the single-line statement
+         * @returns {void}
+         */
+        function validateStatement(node, keywordName) {
+            const option = getOption(keywordName);
+
+            if (node.type === "BlockStatement" || option === "any") {
+                return;
+            }
+
+            const tokenBefore = sourceCode.getTokenBefore(node);
+
+            if (tokenBefore.loc.end.line === node.loc.start.line && option === "below") {
+                context.report({
+                    node,
+                    message: "Expected a linebreak before this statement.",
+                    fix: fixer => fixer.insertTextBefore(node, "\n")
+                });
+            } else if (tokenBefore.loc.end.line !== node.loc.start.line && option === "beside") {
+                context.report({
+                    node,
+                    message: "Expected no linebreak before this statement.",
+                    fix(fixer) {
+                        if (sourceCode.getText().slice(tokenBefore.range[1], node.range[0]).trim()) {
+                            return null;
+                        }
+                        return fixer.replaceTextRange([tokenBefore.range[1], node.range[0]], " ");
+                    }
+                });
+            }
+        }
+
+        //----------------------------------------------------------------------
+        // Public
+        //----------------------------------------------------------------------
+
+        return {
+            IfStatement(node) {
+                validateStatement(node.consequent, "if");
+
+                // Check the `else` node, but don't check 'else if' statements.
+                if (node.alternate && node.alternate.type !== "IfStatement") {
+                    validateStatement(node.alternate, "else");
+                }
+            },
+            WhileStatement: node => validateStatement(node.body, "while"),
+            DoWhileStatement: node => validateStatement(node.body, "do"),
+            ForStatement: node => validateStatement(node.body, "for"),
+            ForInStatement: node => validateStatement(node.body, "for"),
+            ForOfStatement: node => validateStatement(node.body, "for")
+        };
+    }
+};
diff --git a/tools/eslint/lib/rules/object-curly-newline.js b/tools/eslint/lib/rules/object-curly-newline.js
index 88fc79463cb6ae..a4451154dfb148 100644
--- a/tools/eslint/lib/rules/object-curly-newline.js
+++ b/tools/eslint/lib/rules/object-curly-newline.js
@@ -128,8 +128,8 @@ module.exports = {
             const options = normalizedOptions[node.type];
             const openBrace = sourceCode.getFirstToken(node);
             const closeBrace = sourceCode.getLastToken(node);
-            let first = sourceCode.getTokenOrCommentAfter(openBrace);
-            let last = sourceCode.getTokenOrCommentBefore(closeBrace);
+            let first = sourceCode.getTokenAfter(openBrace, { includeComments: true });
+            let last = sourceCode.getTokenBefore(closeBrace, { includeComments: true });
             const needsLinebreaks = (
                 node.properties.length >= options.minProperties ||
                 (
diff --git a/tools/eslint/lib/rules/object-curly-spacing.js b/tools/eslint/lib/rules/object-curly-spacing.js
index 15e8fb5a342bce..5c885240e2e9f8 100644
--- a/tools/eslint/lib/rules/object-curly-spacing.js
+++ b/tools/eslint/lib/rules/object-curly-spacing.js
@@ -171,8 +171,8 @@ module.exports = {
 
             if (astUtils.isTokenOnSameLine(penultimate, last)) {
                 const shouldCheckPenultimate = (
-                    options.arraysInObjectsException && penultimate.value === "]" ||
-                    options.objectsInObjectsException && penultimate.value === "}"
+                    options.arraysInObjectsException && astUtils.isClosingBracketToken(penultimate) ||
+                    options.objectsInObjectsException && astUtils.isClosingBraceToken(penultimate)
                 );
                 const penultimateType = shouldCheckPenultimate && sourceCode.getNodeByRangeIndex(penultimate.start).type;
 
@@ -206,14 +206,8 @@ module.exports = {
          */
         function getClosingBraceOfObject(node) {
             const lastProperty = node.properties[node.properties.length - 1];
-            let token = sourceCode.getTokenAfter(lastProperty);
 
-            // skip ')' and trailing commas.
-            while (token.type !== "Punctuator" || token.value !== "}") {
-                token = sourceCode.getTokenAfter(token);
-            }
-
-            return token;
+            return sourceCode.getTokenAfter(lastProperty, astUtils.isClosingBraceToken);
         }
 
         /**
@@ -254,15 +248,9 @@ module.exports = {
                 firstSpecifier = node.specifiers[1];
             }
 
-            const first = sourceCode.getTokenBefore(firstSpecifier);
-            let last = sourceCode.getTokenAfter(lastSpecifier);
-
-            // to support a trailing comma.
-            if (last.value === ",") {
-                last = sourceCode.getTokenAfter(last);
-            }
-
-            const second = sourceCode.getTokenAfter(first),
+            const first = sourceCode.getTokenBefore(firstSpecifier),
+                last = sourceCode.getTokenAfter(lastSpecifier, astUtils.isNotCommaToken),
+                second = sourceCode.getTokenAfter(first),
                 penultimate = sourceCode.getTokenBefore(last);
 
             validateBraceSpacing(node, first, second, penultimate, last);
@@ -280,15 +268,9 @@ module.exports = {
 
             const firstSpecifier = node.specifiers[0],
                 lastSpecifier = node.specifiers[node.specifiers.length - 1],
-                first = sourceCode.getTokenBefore(firstSpecifier);
-            let last = sourceCode.getTokenAfter(lastSpecifier);
-
-            // to support a trailing comma.
-            if (last.value === ",") {
-                last = sourceCode.getTokenAfter(last);
-            }
-
-            const second = sourceCode.getTokenAfter(first),
+                first = sourceCode.getTokenBefore(firstSpecifier),
+                last = sourceCode.getTokenAfter(lastSpecifier, astUtils.isNotCommaToken),
+                second = sourceCode.getTokenAfter(first),
                 penultimate = sourceCode.getTokenBefore(last);
 
             validateBraceSpacing(node, first, second, penultimate, last);
diff --git a/tools/eslint/lib/rules/object-property-newline.js b/tools/eslint/lib/rules/object-property-newline.js
index a64420be93a910..0463e389ab9918 100644
--- a/tools/eslint/lib/rules/object-property-newline.js
+++ b/tools/eslint/lib/rules/object-property-newline.js
@@ -34,9 +34,9 @@ module.exports = {
 
     create(context) {
         const allowSameLine = context.options[0] && Boolean(context.options[0].allowMultiplePropertiesPerLine);
-        const errorMessage = allowSameLine ?
-            "Object properties must go on a new line if they aren't all on the same line." :
-            "Object properties must go on a new line.";
+        const errorMessage = allowSameLine
+            ? "Object properties must go on a new line if they aren't all on the same line."
+            : "Object properties must go on a new line.";
 
         const sourceCode = context.getSourceCode();
 
diff --git a/tools/eslint/lib/rules/object-shorthand.js b/tools/eslint/lib/rules/object-shorthand.js
index 43997f90692de5..1d3d9dae195ddb 100644
--- a/tools/eslint/lib/rules/object-shorthand.js
+++ b/tools/eslint/lib/rules/object-shorthand.js
@@ -215,8 +215,8 @@ module.exports = {
         * @returns {Object} A fix for this node
         */
         function makeFunctionShorthand(fixer, node) {
-            const firstKeyToken = node.computed ? sourceCode.getTokens(node).find(token => token.value === "[") : sourceCode.getFirstToken(node.key);
-            const lastKeyToken = node.computed ? sourceCode.getTokensBetween(node.key, node.value).find(token => token.value === "]") : sourceCode.getLastToken(node.key);
+            const firstKeyToken = node.computed ? sourceCode.getFirstToken(node, astUtils.isOpeningBracketToken) : sourceCode.getFirstToken(node.key);
+            const lastKeyToken = node.computed ? sourceCode.getFirstTokenBetween(node.key, node.value, astUtils.isClosingBracketToken) : sourceCode.getLastToken(node.key);
             const keyText = sourceCode.text.slice(firstKeyToken.range[0], lastKeyToken.range[1]);
             let keyPrefix = "";
 
@@ -230,16 +230,22 @@ module.exports = {
                 const functionToken = sourceCode.getTokens(node.value).find(token => token.type === "Keyword" && token.value === "function");
                 const tokenBeforeParams = node.value.generator ? sourceCode.getTokenAfter(functionToken) : functionToken;
 
-                return fixer.replaceTextRange([firstKeyToken.range[0], tokenBeforeParams.range[1]], keyPrefix + keyText);
-            } else {
-                const arrowToken = sourceCode.getTokens(node.value).find(token => token.value === "=>");
-                const tokenBeforeArrow = sourceCode.getTokenBefore(arrowToken);
-                const hasParensAroundParameters = tokenBeforeArrow.type === "Punctuator" && tokenBeforeArrow.value === ")";
-                const oldParamText = sourceCode.text.slice(sourceCode.getFirstToken(node.value, node.value.async ? 1 : 0).range[0], tokenBeforeArrow.range[1]);
-                const newParamText = hasParensAroundParameters ? oldParamText : `(${oldParamText})`;
-
-                return fixer.replaceTextRange([firstKeyToken.range[0], arrowToken.range[1]], keyPrefix + keyText + newParamText);
+                return fixer.replaceTextRange(
+                    [firstKeyToken.range[0], node.range[1]],
+                    keyPrefix + keyText + sourceCode.text.slice(tokenBeforeParams.range[1], node.value.range[1])
+                );
             }
+            const arrowToken = sourceCode.getTokens(node.value).find(token => token.value === "=>");
+            const tokenBeforeArrow = sourceCode.getTokenBefore(arrowToken);
+            const hasParensAroundParameters = tokenBeforeArrow.type === "Punctuator" && tokenBeforeArrow.value === ")";
+            const oldParamText = sourceCode.text.slice(sourceCode.getFirstToken(node.value, node.value.async ? 1 : 0).range[0], tokenBeforeArrow.range[1]);
+            const newParamText = hasParensAroundParameters ? oldParamText : `(${oldParamText})`;
+
+            return fixer.replaceTextRange(
+                [firstKeyToken.range[0], node.range[1]],
+                keyPrefix + keyText + newParamText + sourceCode.text.slice(arrowToken.range[1], node.value.range[1])
+            );
+
         }
 
         /**
@@ -368,11 +374,12 @@ module.exports = {
                 // Checks for property/method shorthand.
                 if (isConciseProperty) {
                     if (node.method && (APPLY_NEVER || AVOID_QUOTES && isStringLiteral(node.key))) {
+                        const message = APPLY_NEVER ? "Expected longform method syntax." : "Expected longform method syntax for string literal keys.";
 
                         // { x() {} } should be written as { x: function() {} }
                         context.report({
                             node,
-                            message: `Expected longform method syntax${APPLY_NEVER ? "" : " for string literal keys"}.`,
+                            message,
                             fix: fixer => makeFunctionLongform(fixer, node)
                         });
                     } else if (APPLY_NEVER) {
diff --git a/tools/eslint/lib/rules/operator-assignment.js b/tools/eslint/lib/rules/operator-assignment.js
index e003478c7bc427..99cca356f275a9 100644
--- a/tools/eslint/lib/rules/operator-assignment.js
+++ b/tools/eslint/lib/rules/operator-assignment.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Helpers
 //------------------------------------------------------------------------------
@@ -27,7 +33,7 @@ function isCommutativeOperatorWithShorthand(operator) {
  *     a shorthand form.
  */
 function isNonCommutativeOperatorWithShorthand(operator) {
-    return ["+", "-", "/", "%", "<<", ">>", ">>>"].indexOf(operator) >= 0;
+    return ["+", "-", "/", "%", "<<", ">>", ">>>", "**"].indexOf(operator) >= 0;
 }
 
 //------------------------------------------------------------------------------
@@ -108,7 +114,7 @@ module.exports = {
         * @returns {Token} The operator token in the node
         */
         function getOperatorToken(node) {
-            return sourceCode.getTokensBetween(node.left, node.right).find(token => token.value === node.operator);
+            return sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
         }
 
         /**
@@ -135,7 +141,7 @@ module.exports = {
                                 const equalsToken = getOperatorToken(node);
                                 const operatorToken = getOperatorToken(expr);
                                 const leftText = sourceCode.getText().slice(node.range[0], equalsToken.range[0]);
-                                const rightText = sourceCode.getText().slice(operatorToken.range[1], node.range[1]);
+                                const rightText = sourceCode.getText().slice(operatorToken.range[1], node.right.range[1]);
 
                                 return fixer.replaceText(node, `${leftText}${expr.operator}=${rightText}`);
                             }
@@ -171,9 +177,20 @@ module.exports = {
                         if (canBeFixed(node.left)) {
                             const operatorToken = getOperatorToken(node);
                             const leftText = sourceCode.getText().slice(node.range[0], operatorToken.range[0]);
-                            const rightText = sourceCode.getText().slice(operatorToken.range[1], node.range[1]);
+                            const newOperator = node.operator.slice(0, -1);
+                            let rightText;
+
+                            // If this change would modify precedence (e.g. `foo *= bar + 1` => `foo = foo * (bar + 1)`), parenthesize the right side.
+                            if (
+                                astUtils.getPrecedence(node.right) <= astUtils.getPrecedence({ type: "BinaryExpression", operator: newOperator }) &&
+                                !astUtils.isParenthesised(sourceCode, node.right)
+                            ) {
+                                rightText = `${sourceCode.text.slice(operatorToken.range[1], node.right.range[0])}(${sourceCode.getText(node.right)})`;
+                            } else {
+                                rightText = sourceCode.text.slice(operatorToken.range[1], node.range[1]);
+                            }
 
-                            return fixer.replaceText(node, `${leftText}= ${leftText}${node.operator.slice(0, -1)}${rightText}`);
+                            return fixer.replaceText(node, `${leftText}= ${leftText}${newOperator}${rightText}`);
                         }
                         return null;
                     }
diff --git a/tools/eslint/lib/rules/operator-linebreak.js b/tools/eslint/lib/rules/operator-linebreak.js
index c8f2b2818e23b2..8253094c52e4ff 100644
--- a/tools/eslint/lib/rules/operator-linebreak.js
+++ b/tools/eslint/lib/rules/operator-linebreak.js
@@ -5,14 +5,16 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
 const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
 
-const LINEBREAK_REGEX = /\r\n|\r|\n|\u2028|\u2029/g;
-
 module.exports = {
     meta: {
         docs: {
@@ -85,7 +87,7 @@ module.exports = {
                 if (hasLinebreakBefore !== hasLinebreakAfter && desiredStyle !== "none") {
 
                     // If there is a comment before and after the operator, don't do a fix.
-                    if (sourceCode.getTokenOrCommentBefore(operatorToken) !== tokenBefore && sourceCode.getTokenOrCommentAfter(operatorToken) !== tokenAfter) {
+                    if (sourceCode.getTokenBefore(operatorToken, { includeComments: true }) !== tokenBefore && sourceCode.getTokenAfter(operatorToken, { includeComments: true }) !== tokenAfter) {
                         return null;
                     }
 
@@ -100,6 +102,7 @@ module.exports = {
                     newTextBefore = textAfter;
                     newTextAfter = textBefore;
                 } else {
+                    const LINEBREAK_REGEX = astUtils.createGlobalLinebreakMatcher();
 
                     // Otherwise, if no linebreak is desired and no comments interfere, replace the linebreaks with empty strings.
                     newTextBefore = desiredStyle === "before" || textBefore.trim() ? textBefore : textBefore.replace(LINEBREAK_REGEX, "");
@@ -129,19 +132,14 @@ module.exports = {
          * @returns {void}
          */
         function validateNode(node, leftSide) {
-            let leftToken = sourceCode.getLastToken(leftSide);
-            let operatorToken = sourceCode.getTokenAfter(leftToken);
 
             // When the left part of a binary expression is a single expression wrapped in
             // parentheses (ex: `(a) + b`), leftToken will be the last token of the expression
             // and operatorToken will be the closing parenthesis.
             // The leftToken should be the last closing parenthesis, and the operatorToken
             // should be the token right after that.
-            while (operatorToken.value === ")") {
-                leftToken = operatorToken;
-                operatorToken = sourceCode.getTokenAfter(operatorToken);
-            }
-
+            const operatorToken = sourceCode.getTokenAfter(leftSide, astUtils.isNotClosingParenToken);
+            const leftToken = sourceCode.getTokenBefore(operatorToken);
             const rightToken = sourceCode.getTokenAfter(operatorToken);
             const operator = operatorToken.value;
             const operatorStyleOverride = styleOverrides[operator];
diff --git a/tools/eslint/lib/rules/padded-blocks.js b/tools/eslint/lib/rules/padded-blocks.js
index 2b4da39b360214..36036aec4d95df 100644
--- a/tools/eslint/lib/rules/padded-blocks.js
+++ b/tools/eslint/lib/rules/padded-blocks.js
@@ -90,23 +90,32 @@ module.exports = {
             return node.type === "Line" || node.type === "Block";
         }
 
+        /**
+         * Checks if there is padding between two tokens
+         * @param {Token} first The first token
+         * @param {Token} second The second token
+         * @returns {boolean} True if there is at least a line between the tokens
+         */
+        function isPaddingBetweenTokens(first, second) {
+            return second.loc.start.line - first.loc.end.line >= 2;
+        }
+
+
         /**
          * Checks if the given token has a blank line after it.
          * @param {Token} token The token to check.
          * @returns {boolean} Whether or not the token is followed by a blank line.
          */
-        function isTokenTopPadded(token) {
-            const tokenStartLine = token.loc.start.line,
-                expectedFirstLine = tokenStartLine + 2;
-            let first = token;
+        function getFirstBlockToken(token) {
+            let prev = token,
+                first = token;
 
             do {
-                first = sourceCode.getTokenOrCommentAfter(first);
-            } while (isComment(first) && first.loc.start.line === tokenStartLine);
-
-            const firstLine = first.loc.start.line;
+                prev = first;
+                first = sourceCode.getTokenAfter(first, { includeComments: true });
+            } while (isComment(first) && first.loc.start.line === prev.loc.end.line);
 
-            return expectedFirstLine <= firstLine;
+            return first;
         }
 
         /**
@@ -114,18 +123,16 @@ module.exports = {
          * @param {Token} token The token to check
          * @returns {boolean} Whether or not the token is preceeded by a blank line
          */
-        function isTokenBottomPadded(token) {
-            const blockEnd = token.loc.end.line,
-                expectedLastLine = blockEnd - 2;
-            let last = token;
+        function getLastBlockToken(token) {
+            let last = token,
+                next = token;
 
             do {
-                last = sourceCode.getTokenOrCommentBefore(last);
-            } while (isComment(last) && last.loc.end.line === blockEnd);
-
-            const lastLine = last.loc.end.line;
+                next = last;
+                last = sourceCode.getTokenBefore(last, { includeComments: true });
+            } while (isComment(last) && last.loc.end.line === next.loc.start.line);
 
-            return lastLine <= expectedLastLine;
+            return last;
         }
 
         /**
@@ -155,17 +162,21 @@ module.exports = {
          */
         function checkPadding(node) {
             const openBrace = getOpenBrace(node),
+                firstBlockToken = getFirstBlockToken(openBrace),
+                tokenBeforeFirst = sourceCode.getTokenBefore(firstBlockToken, { includeComments: true }),
                 closeBrace = sourceCode.getLastToken(node),
-                blockHasTopPadding = isTokenTopPadded(openBrace),
-                blockHasBottomPadding = isTokenBottomPadded(closeBrace);
+                lastBlockToken = getLastBlockToken(closeBrace),
+                tokenAfterLast = sourceCode.getTokenAfter(lastBlockToken, { includeComments: true }),
+                blockHasTopPadding = isPaddingBetweenTokens(tokenBeforeFirst, firstBlockToken),
+                blockHasBottomPadding = isPaddingBetweenTokens(lastBlockToken, tokenAfterLast);
 
             if (requirePaddingFor(node)) {
                 if (!blockHasTopPadding) {
                     context.report({
                         node,
-                        loc: { line: openBrace.loc.start.line, column: openBrace.loc.start.column },
+                        loc: { line: tokenBeforeFirst.loc.start.line, column: tokenBeforeFirst.loc.start.column },
                         fix(fixer) {
-                            return fixer.insertTextAfter(openBrace, "\n");
+                            return fixer.insertTextAfter(tokenBeforeFirst, "\n");
                         },
                         message: ALWAYS_MESSAGE
                     });
@@ -173,36 +184,34 @@ module.exports = {
                 if (!blockHasBottomPadding) {
                     context.report({
                         node,
-                        loc: { line: closeBrace.loc.end.line, column: closeBrace.loc.end.column - 1 },
+                        loc: { line: tokenAfterLast.loc.end.line, column: tokenAfterLast.loc.end.column - 1 },
                         fix(fixer) {
-                            return fixer.insertTextBefore(closeBrace, "\n");
+                            return fixer.insertTextBefore(tokenAfterLast, "\n");
                         },
                         message: ALWAYS_MESSAGE
                     });
                 }
             } else {
                 if (blockHasTopPadding) {
-                    const nextToken = sourceCode.getTokenOrCommentAfter(openBrace);
 
                     context.report({
                         node,
-                        loc: { line: openBrace.loc.start.line, column: openBrace.loc.start.column },
+                        loc: { line: tokenBeforeFirst.loc.start.line, column: tokenBeforeFirst.loc.start.column },
                         fix(fixer) {
-                            return fixer.replaceTextRange([openBrace.end, nextToken.start - nextToken.loc.start.column], "\n");
+                            return fixer.replaceTextRange([tokenBeforeFirst.end, firstBlockToken.start - firstBlockToken.loc.start.column], "\n");
                         },
                         message: NEVER_MESSAGE
                     });
                 }
 
                 if (blockHasBottomPadding) {
-                    const previousToken = sourceCode.getTokenOrCommentBefore(closeBrace);
 
                     context.report({
                         node,
-                        loc: { line: closeBrace.loc.end.line, column: closeBrace.loc.end.column - 1 },
+                        loc: { line: tokenAfterLast.loc.end.line, column: tokenAfterLast.loc.end.column - 1 },
                         message: NEVER_MESSAGE,
                         fix(fixer) {
-                            return fixer.replaceTextRange([previousToken.end, closeBrace.start - closeBrace.loc.start.column], "\n");
+                            return fixer.replaceTextRange([lastBlockToken.end, tokenAfterLast.start - tokenAfterLast.loc.start.column], "\n");
                         }
                     });
                 }
diff --git a/tools/eslint/lib/rules/prefer-const.js b/tools/eslint/lib/rules/prefer-const.js
index 07d8da82a105c4..53bdc2ab7b0582 100644
--- a/tools/eslint/lib/rules/prefer-const.js
+++ b/tools/eslint/lib/rules/prefer-const.js
@@ -9,7 +9,7 @@
 // Helpers
 //------------------------------------------------------------------------------
 
-const PATTERN_TYPE = /^(?:.+?Pattern|RestElement|Property)$/;
+const PATTERN_TYPE = /^(?:.+?Pattern|RestElement|SpreadProperty|ExperimentalRestProperty|Property)$/;
 const DECLARATION_HOST_TYPE = /^(?:Program|BlockStatement|SwitchCase)$/;
 const DESTRUCTURING_HOST_TYPE = /^(?:VariableDeclarator|AssignmentExpression)$/;
 
diff --git a/tools/eslint/lib/rules/prefer-destructuring.js b/tools/eslint/lib/rules/prefer-destructuring.js
index c3fbcaa6310fc8..d7fbc3559d7162 100644
--- a/tools/eslint/lib/rules/prefer-destructuring.js
+++ b/tools/eslint/lib/rules/prefer-destructuring.js
@@ -89,7 +89,7 @@ module.exports = {
          * @returns {void}
          */
         function report(reportNode, type) {
-            context.report({ node: reportNode, message: `Use ${type} destructuring` });
+            context.report({ node: reportNode, message: "Use {{type}} destructuring.", data: { type } });
         }
 
         /**
@@ -158,7 +158,9 @@ module.exports = {
          * @returns {void}
          */
         function checkAssigmentExpression(node) {
-            performCheck(node.left, node.right, node);
+            if (node.operator === "=") {
+                performCheck(node.left, node.right, node);
+            }
         }
 
         //--------------------------------------------------------------------------
diff --git a/tools/eslint/lib/rules/prefer-promise-reject-errors.js b/tools/eslint/lib/rules/prefer-promise-reject-errors.js
new file mode 100644
index 00000000000000..97223a65a822ba
--- /dev/null
+++ b/tools/eslint/lib/rules/prefer-promise-reject-errors.js
@@ -0,0 +1,124 @@
+/**
+ * @fileoverview restrict values that can be used as Promise rejection reasons
+ * @author Teddy Katz
+ */
+"use strict";
+
+const astUtils = require("../ast-utils");
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = {
+    meta: {
+        docs: {
+            description: "require using Error objects as Promise rejection reasons",
+            category: "Best Practices",
+            recommended: false
+        },
+        fixable: null,
+        schema: [
+            {
+                type: "object",
+                properties: {
+                    allowEmptyReject: { type: "boolean" }
+                },
+                additionalProperties: false
+            }
+        ]
+    },
+
+    create(context) {
+
+        const ALLOW_EMPTY_REJECT = context.options.length && context.options[0].allowEmptyReject;
+
+        //----------------------------------------------------------------------
+        // Helpers
+        //----------------------------------------------------------------------
+
+        /**
+        * Checks the argument of a reject() or Promise.reject() CallExpression, and reports it if it can't be an Error
+        * @param {ASTNode} callExpression A CallExpression node which is used to reject a Promise
+        * @returns {void}
+        */
+        function checkRejectCall(callExpression) {
+            if (!callExpression.arguments.length && ALLOW_EMPTY_REJECT) {
+                return;
+            }
+            if (
+                !callExpression.arguments.length ||
+                !astUtils.couldBeError(callExpression.arguments[0]) ||
+                callExpression.arguments[0].type === "Identifier" && callExpression.arguments[0].name === "undefined"
+            ) {
+                context.report({
+                    node: callExpression,
+                    message: "Expected the Promise rejection reason to be an Error."
+                });
+            }
+        }
+
+        /**
+        * Determines whether a function call is a Promise.reject() call
+        * @param {ASTNode} node A CallExpression node
+        * @returns {boolean} `true` if the call is a Promise.reject() call
+        */
+        function isPromiseRejectCall(node) {
+            return node.callee.type === "MemberExpression" &&
+                node.callee.object.type === "Identifier" && node.callee.object.name === "Promise" &&
+                node.callee.property.type === "Identifier" && node.callee.property.name === "reject";
+        }
+
+        //----------------------------------------------------------------------
+        // Public
+        //----------------------------------------------------------------------
+
+        return {
+
+            // Check `Promise.reject(value)` calls.
+            CallExpression(node) {
+                if (isPromiseRejectCall(node)) {
+                    checkRejectCall(node);
+                }
+            },
+
+            /*
+             * Check for `new Promise((resolve, reject) => {})`, and check for reject() calls.
+             * This function is run on "NewExpression:exit" instead of "NewExpression" to ensure that
+             * the nodes in the expression already have the `parent` property.
+             */
+            "NewExpression:exit"(node) {
+                if (
+                    node.callee.type === "Identifier" && node.callee.name === "Promise" &&
+                    node.arguments.length && astUtils.isFunction(node.arguments[0]) &&
+                    node.arguments[0].params.length > 1 && node.arguments[0].params[1].type === "Identifier"
+                ) {
+                    context.getDeclaredVariables(node.arguments[0])
+
+                        /*
+                        * Find the first variable that matches the second parameter's name.
+                        * If the first parameter has the same name as the second parameter, then the variable will actually
+                        * be "declared" when the first parameter is evaluated, but then it will be immediately overwritten
+                        * by the second parameter. It's not possible for an expression with the variable to be evaluated before
+                        * the variable is overwritten, because functions with duplicate parameters cannot have destructuring or
+                        * default assignments in their parameter lists. Therefore, it's not necessary to explicitly account for
+                        * this case.
+                        */
+                        .find(variable => variable.name === node.arguments[0].params[1].name)
+
+                        // Get the references to that variable.
+                        .references
+
+                        // Only check the references that read the parameter's value.
+                        .filter(ref => ref.isRead())
+
+                        // Only check the references that are used as the callee in a function call, e.g. `reject(foo)`.
+                        .filter(ref => ref.identifier.parent.type === "CallExpression" && ref.identifier === ref.identifier.parent.callee)
+
+                        // Check the argument of the function call to determine whether it's an Error.
+                        .forEach(ref => checkRejectCall(ref.identifier.parent));
+                }
+            }
+        };
+    }
+};
diff --git a/tools/eslint/lib/rules/prefer-spread.js b/tools/eslint/lib/rules/prefer-spread.js
index 158d6777f9cf75..1f578582843030 100644
--- a/tools/eslint/lib/rules/prefer-spread.js
+++ b/tools/eslint/lib/rules/prefer-spread.js
@@ -108,7 +108,7 @@ module.exports = {
                                 return null;
                             }
 
-                            const propertyDot = sourceCode.getTokensBetween(applied, node.callee.property).find(token => token.value === ".");
+                            const propertyDot = sourceCode.getFirstTokenBetween(applied, node.callee.property, token => token.value === ".");
 
                             return fixer.replaceTextRange([propertyDot.range[0], node.range[1]], `(...${sourceCode.getText(node.arguments[1])})`);
                         }
diff --git a/tools/eslint/lib/rules/prefer-template.js b/tools/eslint/lib/rules/prefer-template.js
index 28e69cd3c505af..eb3754529a20c2 100644
--- a/tools/eslint/lib/rules/prefer-template.js
+++ b/tools/eslint/lib/rules/prefer-template.js
@@ -157,7 +157,7 @@ module.exports = {
             }
 
             if (isConcatenation(currentNode) && hasStringLiteral(currentNode) && hasNonStringLiteral(currentNode)) {
-                const plusSign = sourceCode.getTokensBetween(currentNode.left, currentNode.right).find(token => token.value === "+");
+                const plusSign = sourceCode.getFirstTokenBetween(currentNode.left, currentNode.right, token => token.value === "+");
                 const textBeforePlus = getTextBetween(currentNode.left, plusSign);
                 const textAfterPlus = getTextBetween(plusSign, currentNode.right);
                 const leftEndsWithCurly = endsWithTemplateCurly(currentNode.left);
diff --git a/tools/eslint/lib/rules/quotes.js b/tools/eslint/lib/rules/quotes.js
index 5c53c76908c3df..b1117b85fba670 100644
--- a/tools/eslint/lib/rules/quotes.js
+++ b/tools/eslint/lib/rules/quotes.js
@@ -33,6 +33,9 @@ const QUOTE_SETTINGS = {
     }
 };
 
+// An unescaped newline is a newline preceded by an even number of backslashes.
+const UNESCAPED_LINEBREAK_PATTERN = new RegExp(String.raw`(^|[^\\])(\\\\)*[${Array.from(astUtils.LINEBREAKS).join("")}]`);
+
 /**
  * Switches quoting of javascript string between ' " and `
  * escaping and unescaping as necessary.
@@ -206,6 +209,7 @@ module.exports = {
 
                 // LiteralPropertyName.
                 case "Property":
+                case "MethodDefinition":
                     return parent.key === node && !parent.computed;
 
                 // ModuleSpecifier.
@@ -254,22 +258,23 @@ module.exports = {
             TemplateLiteral(node) {
 
                 // If backticks are expected or it's a tagged template, then this shouldn't throw an errors
-                if (allowTemplateLiterals || quoteOption === "backtick" || node.parent.type === "TaggedTemplateExpression") {
+                if (
+                    allowTemplateLiterals ||
+                    quoteOption === "backtick" ||
+                    node.parent.type === "TaggedTemplateExpression" && node === node.parent.quasi
+                ) {
                     return;
                 }
 
-                /*
-                 * A warning should be produced if the template literal only has one TemplateElement, and has no unescaped newlines.
-                 * An unescaped newline is a newline preceded by an even number of backslashes.
-                 */
-                const shouldWarn = node.quasis.length === 1 && !/(^|[^\\])(\\\\)*[\r\n\u2028\u2029]/.test(node.quasis[0].value.raw);
+                // A warning should be produced if the template literal only has one TemplateElement, and has no unescaped newlines.
+                const shouldWarn = node.quasis.length === 1 && !UNESCAPED_LINEBREAK_PATTERN.test(node.quasis[0].value.raw);
 
                 if (shouldWarn) {
                     context.report({
                         node,
                         message: "Strings must use {{description}}.",
                         data: {
-                            description: settings.description,
+                            description: settings.description
                         },
                         fix(fixer) {
                             if (isPartOfDirectivePrologue(node)) {
diff --git a/tools/eslint/lib/rules/require-await.js b/tools/eslint/lib/rules/require-await.js
index 89b24f75b0f951..a5698ae058bdf0 100644
--- a/tools/eslint/lib/rules/require-await.js
+++ b/tools/eslint/lib/rules/require-await.js
@@ -51,7 +51,7 @@ module.exports = {
         function enterFunction() {
             scopeInfo = {
                 upper: scopeInfo,
-                hasAwait: false,
+                hasAwait: false
             };
         }
 
diff --git a/tools/eslint/lib/rules/semi-spacing.js b/tools/eslint/lib/rules/semi-spacing.js
index 4fe95fbf20cebd..fd300e4a37a782 100644
--- a/tools/eslint/lib/rules/semi-spacing.js
+++ b/tools/eslint/lib/rules/semi-spacing.js
@@ -105,20 +105,7 @@ module.exports = {
         function isBeforeClosingParen(token) {
             const nextToken = sourceCode.getTokenAfter(token);
 
-            return (
-                nextToken &&
-                nextToken.type === "Punctuator" &&
-                (nextToken.value === "}" || nextToken.value === ")")
-            );
-        }
-
-        /**
-         * Checks if the given token is a semicolon.
-         * @param {Token} token The token to check.
-         * @returns {boolean} Whether or not the given token is a semicolon.
-         */
-        function isSemicolon(token) {
-            return token.type === "Punctuator" && token.value === ";";
+            return (nextToken && astUtils.isClosingBraceToken(nextToken) || astUtils.isClosingParenToken(nextToken));
         }
 
         /**
@@ -128,7 +115,7 @@ module.exports = {
          * @returns {void}
          */
         function checkSemicolonSpacing(token, node) {
-            if (isSemicolon(token)) {
+            if (astUtils.isSemicolonToken(token)) {
                 const location = token.loc.start;
 
                 if (hasLeadingSpace(token)) {
@@ -206,6 +193,10 @@ module.exports = {
             DebuggerStatement: checkNode,
             ReturnStatement: checkNode,
             ThrowStatement: checkNode,
+            ImportDeclaration: checkNode,
+            ExportNamedDeclaration: checkNode,
+            ExportAllDeclaration: checkNode,
+            ExportDefaultDeclaration: checkNode,
             ForStatement(node) {
                 if (node.init) {
                     checkSemicolonSpacing(sourceCode.getTokenAfter(node.init), node);
diff --git a/tools/eslint/lib/rules/semi.js b/tools/eslint/lib/rules/semi.js
index ee37ab018c82fd..0bfdff110f2437 100644
--- a/tools/eslint/lib/rules/semi.js
+++ b/tools/eslint/lib/rules/semi.js
@@ -4,6 +4,13 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const FixTracker = require("../util/fix-tracker");
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -85,7 +92,13 @@ module.exports = {
                 message = "Extra semicolon.";
                 loc = loc.start;
                 fix = function(fixer) {
-                    return fixer.remove(lastToken);
+
+                    // Expand the replacement range to include the surrounding
+                    // tokens to avoid conflicting with no-extra-semi.
+                    // https://github.com/eslint/eslint/issues/7928
+                    return new FixTracker(fixer, sourceCode)
+                        .retainSurroundingTokens(lastToken)
+                        .remove(lastToken);
                 };
             }
 
@@ -98,15 +111,6 @@ module.exports = {
 
         }
 
-        /**
-         * Checks whether a token is a semicolon punctuator.
-         * @param {Token} token The token.
-         * @returns {boolean} True if token is a semicolon punctuator.
-         */
-        function isSemicolon(token) {
-            return (token.type === "Punctuator" && token.value === ";");
-        }
-
         /**
          * Check if a semicolon is unnecessary, only true if:
          *   - next token is on a new line and is not one of the opt-out tokens
@@ -115,7 +119,7 @@ module.exports = {
          * @returns {boolean} whether the semicolon is unnecessary.
          */
         function isUnnecessarySemicolon(lastToken) {
-            if (!isSemicolon(lastToken)) {
+            if (!astUtils.isSemicolonToken(lastToken)) {
                 return false;
             }
 
@@ -128,7 +132,7 @@ module.exports = {
             const lastTokenLine = lastToken.loc.end.line;
             const nextTokenLine = nextToken.loc.start.line;
             const isOptOutToken = OPT_OUT_PATTERN.test(nextToken.value) && nextToken.value !== "++" && nextToken.value !== "--";
-            const isDivider = (nextToken.value === "}" || nextToken.value === ";");
+            const isDivider = (astUtils.isClosingBraceToken(nextToken) || astUtils.isSemicolonToken(nextToken));
 
             return (lastTokenLine !== nextTokenLine && !isOptOutToken) || isDivider;
         }
@@ -164,7 +168,7 @@ module.exports = {
                     report(node, true);
                 }
             } else {
-                if (!isSemicolon(lastToken)) {
+                if (!astUtils.isSemicolonToken(lastToken)) {
                     if (!exceptOneLine || !isOneLinerBlock(node)) {
                         report(node);
                     }
diff --git a/tools/eslint/lib/rules/sort-imports.js b/tools/eslint/lib/rules/sort-imports.js
index 83f500990239b2..2b382545efb3f7 100644
--- a/tools/eslint/lib/rules/sort-imports.js
+++ b/tools/eslint/lib/rules/sort-imports.js
@@ -71,9 +71,9 @@ module.exports = {
                 return "all";
             } else if (node.specifiers.length === 1) {
                 return "single";
-            } else {
-                return "multiple";
             }
+            return "multiple";
+
         }
 
         /**
@@ -93,9 +93,9 @@ module.exports = {
         function getFirstLocalMemberName(node) {
             if (node.specifiers[0]) {
                 return node.specifiers[0].local.name;
-            } else {
-                return null;
             }
+            return null;
+
         }
 
         return {
diff --git a/tools/eslint/lib/rules/sort-keys.js b/tools/eslint/lib/rules/sort-keys.js
index e42375d6bcc59f..8821f629433d48 100644
--- a/tools/eslint/lib/rules/sort-keys.js
+++ b/tools/eslint/lib/rules/sort-keys.js
@@ -64,7 +64,7 @@ const isValidOrders = {
     },
     descIN(a, b) {
         return isValidOrders.ascIN(b, a);
-    },
+    }
 };
 
 //------------------------------------------------------------------------------
@@ -147,7 +147,7 @@ module.exports = {
                             prevName,
                             order,
                             insensitive: insensitive ? "insensitive " : "",
-                            natual: natual ? "natural " : "",
+                            natual: natual ? "natural " : ""
                         }
                     });
                 }
diff --git a/tools/eslint/lib/rules/sort-vars.js b/tools/eslint/lib/rules/sort-vars.js
index e18cc320ef0553..1fdfc9ace68424 100644
--- a/tools/eslint/lib/rules/sort-vars.js
+++ b/tools/eslint/lib/rules/sort-vars.js
@@ -37,11 +37,9 @@ module.exports = {
 
         return {
             VariableDeclaration(node) {
-                node.declarations.reduce((memo, decl) => {
-                    if (decl.id.type === "ObjectPattern" || decl.id.type === "ArrayPattern") {
-                        return memo;
-                    }
+                const idDeclarations = node.declarations.filter(decl => decl.id.type === "Identifier");
 
+                idDeclarations.slice(1).reduce((memo, decl) => {
                     let lastVariableName = memo.id.name,
                         currenVariableName = decl.id.name;
 
@@ -53,10 +51,10 @@ module.exports = {
                     if (currenVariableName < lastVariableName) {
                         context.report({ node: decl, message: "Variables within the same declaration block should be sorted alphabetically." });
                         return memo;
-                    } else {
-                        return decl;
                     }
-                }, node.declarations[0]);
+                    return decl;
+
+                }, idDeclarations[0]);
             }
         };
     }
diff --git a/tools/eslint/lib/rules/space-before-function-paren.js b/tools/eslint/lib/rules/space-before-function-paren.js
index c62413a37cd829..53aac71ed6e162 100644
--- a/tools/eslint/lib/rules/space-before-function-paren.js
+++ b/tools/eslint/lib/rules/space-before-function-paren.js
@@ -4,6 +4,12 @@
  */
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Rule Definition
 //------------------------------------------------------------------------------
@@ -45,31 +51,9 @@ module.exports = {
     },
 
     create(context) {
-
-        const configuration = context.options[0],
-            sourceCode = context.getSourceCode();
-        let requireAnonymousFunctionSpacing = true,
-            forbidAnonymousFunctionSpacing = false,
-            requireNamedFunctionSpacing = true,
-            forbidNamedFunctionSpacing = false,
-            requireArrowFunctionSpacing = false,
-            forbidArrowFunctionSpacing = false;
-
-        if (typeof configuration === "object") {
-            requireAnonymousFunctionSpacing = (
-                !configuration.anonymous || configuration.anonymous === "always");
-            forbidAnonymousFunctionSpacing = configuration.anonymous === "never";
-            requireNamedFunctionSpacing = (
-                !configuration.named || configuration.named === "always");
-            forbidNamedFunctionSpacing = configuration.named === "never";
-            requireArrowFunctionSpacing = configuration.asyncArrow === "always";
-            forbidArrowFunctionSpacing = configuration.asyncArrow === "never";
-        } else if (configuration === "never") {
-            requireAnonymousFunctionSpacing = false;
-            forbidAnonymousFunctionSpacing = true;
-            requireNamedFunctionSpacing = false;
-            forbidNamedFunctionSpacing = true;
-        }
+        const sourceCode = context.getSourceCode();
+        const baseConfig = typeof context.options[0] === "string" ? context.options[0] : "always";
+        const overrideConfig = typeof context.options[0] === "object" ? context.options[0] : {};
 
         /**
          * Determines whether a function has a name.
@@ -94,72 +78,67 @@ module.exports = {
         }
 
         /**
-         * Validates the spacing before function parentheses.
-         * @param {ASTNode} node The node to be validated.
-         * @returns {void}
+         * Gets the config for a given function
+         * @param {ASTNode} node The function node
+         * @returns {string} "always", "never", or "ignore"
          */
-        function validateSpacingBeforeParentheses(node) {
-            const isArrow = node.type === "ArrowFunctionExpression";
-            const isNamed = !isArrow && isNamedFunction(node);
-            const isAnonymousGenerator = node.generator && !isNamed;
-            const isNormalArrow = isArrow && !node.async;
-            const isArrowWithoutParens = isArrow && sourceCode.getFirstToken(node, 1).value !== "(";
-            let forbidSpacing, requireSpacing, rightToken;
-
-            // isAnonymousGenerator → `generator-star-spacing` should warn it. E.g. `function* () {}`
-            // isNormalArrow → ignore always.
-            // isArrowWithoutParens → ignore always. E.g. `async a => a`
-            if (isAnonymousGenerator || isNormalArrow || isArrowWithoutParens) {
-                return;
-            }
+        function getConfigForFunction(node) {
+            if (node.type === "ArrowFunctionExpression") {
+
+                // Always ignore non-async functions and arrow functions without parens, e.g. async foo => bar
+                if (node.async && astUtils.isOpeningParenToken(sourceCode.getFirstToken(node, { skip: 1 }))) {
+
+                    // For backwards compatibility, the base config does not apply to async arrow functions.
+                    return overrideConfig.asyncArrow || "ignore";
+                }
+            } else if (isNamedFunction(node)) {
+                return overrideConfig.named || baseConfig;
 
-            if (isArrow) {
-                forbidSpacing = forbidArrowFunctionSpacing;
-                requireSpacing = requireArrowFunctionSpacing;
-            } else if (isNamed) {
-                forbidSpacing = forbidNamedFunctionSpacing;
-                requireSpacing = requireNamedFunctionSpacing;
-            } else {
-                forbidSpacing = forbidAnonymousFunctionSpacing;
-                requireSpacing = requireAnonymousFunctionSpacing;
+            // `generator-star-spacing` should warn anonymous generators. E.g. `function* () {}`
+            } else if (!node.generator) {
+                return overrideConfig.anonymous || baseConfig;
             }
 
-            rightToken = sourceCode.getFirstToken(node);
-            while (rightToken.value !== "(") {
-                rightToken = sourceCode.getTokenAfter(rightToken);
+            return "ignore";
+        }
+
+        /**
+         * Checks the parens of a function node
+         * @param {ASTNode} node A function node
+         * @returns {void}
+         */
+        function checkFunction(node) {
+            const functionConfig = getConfigForFunction(node);
+
+            if (functionConfig === "ignore") {
+                return;
             }
+
+            const rightToken = sourceCode.getFirstToken(node, astUtils.isOpeningParenToken);
             const leftToken = sourceCode.getTokenBefore(rightToken);
-            const location = leftToken.loc.end;
-
-            if (sourceCode.isSpaceBetweenTokens(leftToken, rightToken)) {
-                if (forbidSpacing) {
-                    context.report({
-                        node,
-                        loc: location,
-                        message: "Unexpected space before function parentheses.",
-                        fix(fixer) {
-                            return fixer.removeRange([leftToken.range[1], rightToken.range[0]]);
-                        }
-                    });
-                }
-            } else {
-                if (requireSpacing) {
-                    context.report({
-                        node,
-                        loc: location,
-                        message: "Missing space before function parentheses.",
-                        fix(fixer) {
-                            return fixer.insertTextAfter(leftToken, " ");
-                        }
-                    });
-                }
+            const hasSpacing = sourceCode.isSpaceBetweenTokens(leftToken, rightToken);
+
+            if (hasSpacing && functionConfig === "never") {
+                context.report({
+                    node,
+                    loc: leftToken.loc.end,
+                    message: "Unexpected space before function parentheses.",
+                    fix: fixer => fixer.removeRange([leftToken.range[1], rightToken.range[0]])
+                });
+            } else if (!hasSpacing && functionConfig === "always") {
+                context.report({
+                    node,
+                    loc: leftToken.loc.end,
+                    message: "Missing space before function parentheses.",
+                    fix: fixer => fixer.insertTextAfter(leftToken, " ")
+                });
             }
         }
 
         return {
-            FunctionDeclaration: validateSpacingBeforeParentheses,
-            FunctionExpression: validateSpacingBeforeParentheses,
-            ArrowFunctionExpression: validateSpacingBeforeParentheses,
+            ArrowFunctionExpression: checkFunction,
+            FunctionDeclaration: checkFunction,
+            FunctionExpression: checkFunction
         };
     }
 };
diff --git a/tools/eslint/lib/rules/space-in-parens.js b/tools/eslint/lib/rules/space-in-parens.js
index af838dfa9e8376..95b03c3db50487 100644
--- a/tools/eslint/lib/rules/space-in-parens.js
+++ b/tools/eslint/lib/rules/space-in-parens.js
@@ -128,13 +128,13 @@ module.exports = {
             }
 
             if (ALWAYS) {
-                if (right.type === "Punctuator" && right.value === ")") {
+                if (astUtils.isClosingParenToken(right)) {
                     return false;
                 }
                 return !isOpenerException(right);
-            } else {
-                return isOpenerException(right);
             }
+            return isOpenerException(right);
+
         }
 
         /**
@@ -144,7 +144,7 @@ module.exports = {
          * @returns {boolean} True if the paren should have a space
          */
         function shouldCloserHaveSpace(left, right) {
-            if (left.type === "Punctuator" && left.value === "(") {
+            if (astUtils.isOpeningParenToken(left)) {
                 return false;
             }
 
@@ -154,9 +154,9 @@ module.exports = {
 
             if (ALWAYS) {
                 return !isCloserException(left);
-            } else {
-                return isCloserException(left);
             }
+            return isCloserException(left);
+
         }
 
         /**
@@ -180,9 +180,9 @@ module.exports = {
 
             if (ALWAYS) {
                 return isOpenerException(right);
-            } else {
-                return !isOpenerException(right);
             }
+            return !isOpenerException(right);
+
         }
 
         /**
@@ -192,7 +192,7 @@ module.exports = {
          * @returns {boolean} True if the paren should reject the space
          */
         function shouldCloserRejectSpace(left, right) {
-            if (left.type === "Punctuator" && left.value === "(") {
+            if (astUtils.isOpeningParenToken(left)) {
                 return false;
             }
 
@@ -206,9 +206,9 @@ module.exports = {
 
             if (ALWAYS) {
                 return isCloserException(left);
-            } else {
-                return !isCloserException(left);
             }
+            return !isCloserException(left);
+
         }
 
         //--------------------------------------------------------------------------
@@ -224,11 +224,7 @@ module.exports = {
                     const prevToken = tokens[i - 1];
                     const nextToken = tokens[i + 1];
 
-                    if (token.type !== "Punctuator") {
-                        return;
-                    }
-
-                    if (token.value !== "(" && token.value !== ")") {
+                    if (!astUtils.isOpeningParenToken(token) && !astUtils.isClosingParenToken(token)) {
                         return;
                     }
 
diff --git a/tools/eslint/lib/rules/space-unary-ops.js b/tools/eslint/lib/rules/space-unary-ops.js
index 11c59c8274f358..5b156fac2292d4 100644
--- a/tools/eslint/lib/rules/space-unary-ops.js
+++ b/tools/eslint/lib/rules/space-unary-ops.js
@@ -68,6 +68,21 @@ module.exports = {
             return node.argument && node.argument.type && node.argument.type === "ObjectExpression";
         }
 
+        /**
+         * Check if it is safe to remove the spaces between the two tokens in
+         * the context of a non-word prefix unary operator. For example, `+ +1`
+         * cannot safely be changed to `++1`.
+         * @param {Token} firstToken The operator for a non-word prefix unary operator
+         * @param {Token} secondToken The first token of its operand
+         * @returns {boolean} Whether or not the spacing between the tokens can be removed
+         */
+        function canRemoveSpacesBetween(firstToken, secondToken) {
+            return !(
+                (firstToken.value === "+" && secondToken.value[0] === "+") ||
+                (firstToken.value === "-" && secondToken.value[0] === "-")
+            );
+        }
+
         /**
         * Checks if an override exists for a given operator.
         * @param {ASTnode} node AST node
@@ -244,7 +259,10 @@ module.exports = {
                             operator: firstToken.value
                         },
                         fix(fixer) {
-                            return fixer.removeRange([firstToken.range[1], secondToken.range[0]]);
+                            if (canRemoveSpacesBetween(firstToken, secondToken)) {
+                                return fixer.removeRange([firstToken.range[1], secondToken.range[0]]);
+                            }
+                            return null;
                         }
                     });
                 }
diff --git a/tools/eslint/lib/rules/spaced-comment.js b/tools/eslint/lib/rules/spaced-comment.js
index 85abd7360e622a..4e418fd19f3a86 100644
--- a/tools/eslint/lib/rules/spaced-comment.js
+++ b/tools/eslint/lib/rules/spaced-comment.js
@@ -5,6 +5,7 @@
 "use strict";
 
 const lodash = require("lodash");
+const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
 // Helpers
@@ -88,8 +89,7 @@ function createExceptionsPattern(exceptions) {
             pattern += exceptions.map(escapeAndRepeat).join("|");
             pattern += ")";
         }
-
-        pattern += "(?:$|[\n\r]))";
+        pattern += `(?:$|[${Array.from(astUtils.LINEBREAKS).join("")}]))`;
     }
 
     return pattern;
@@ -279,10 +279,10 @@ module.exports = {
                             end += match[0].length;
                         }
                         return fixer.insertTextAfterRange([start, end], " ");
-                    } else {
-                        end += match[0].length;
-                        return fixer.replaceTextRange([start, end], commentIdentifier + (match[1] ? match[1] : ""));
                     }
+                    end += match[0].length;
+                    return fixer.replaceTextRange([start, end], commentIdentifier + (match[1] ? match[1] : ""));
+
                 },
                 message,
                 data: { refChar }
@@ -302,12 +302,12 @@ module.exports = {
                 fix(fixer) {
                     if (requireSpace) {
                         return fixer.insertTextAfterRange([node.start, node.end - 2], " ");
-                    } else {
-                        const end = node.end - 2,
-                            start = end - match[0].length;
-
-                        return fixer.replaceTextRange([start, end], "");
                     }
+                    const end = node.end - 2,
+                        start = end - match[0].length;
+
+                    return fixer.replaceTextRange([start, end], "");
+
                 },
                 message
             });
diff --git a/tools/eslint/lib/rules/strict.js b/tools/eslint/lib/rules/strict.js
index 34ed443d92c816..bb926f666141e9 100644
--- a/tools/eslint/lib/rules/strict.js
+++ b/tools/eslint/lib/rules/strict.js
@@ -9,6 +9,8 @@
 // Requirements
 //------------------------------------------------------------------------------
 
+const astUtils = require("../ast-utils");
+
 //------------------------------------------------------------------------------
 // Helpers
 //------------------------------------------------------------------------------
@@ -23,7 +25,7 @@ const messages = {
     implied: "'use strict' is unnecessary when implied strict mode is enabled.",
     unnecessaryInClasses: "'use strict' is unnecessary inside of classes.",
     nonSimpleParameterList: "'use strict' directive inside a function with non-simple parameter list throws a syntax error since ES2016.",
-    wrap: "Wrap this function in a function with 'use strict' directive."
+    wrap: "Wrap {{name}} in a function with 'use strict' directive."
 };
 
 /**
@@ -188,7 +190,11 @@ module.exports = {
                 if (isSimpleParameterList(node.params)) {
                     context.report({ node, message: messages.function });
                 } else {
-                    context.report({ node, message: messages.wrap });
+                    context.report({
+                        node,
+                        message: messages.wrap,
+                        data: { name: astUtils.getFunctionNameWithKind(node) }
+                    });
                 }
             }
 
@@ -212,8 +218,8 @@ module.exports = {
          */
         function enterFunction(node) {
             const isBlock = node.body.type === "BlockStatement",
-                useStrictDirectives = isBlock ?
-                    getUseStrictDirectives(node.body.body) : [];
+                useStrictDirectives = isBlock
+                    ? getUseStrictDirectives(node.body.body) : [];
 
             if (mode === "function") {
                 enterFunctionInFunctionMode(node, useStrictDirectives);
diff --git a/tools/eslint/lib/rules/template-tag-spacing.js b/tools/eslint/lib/rules/template-tag-spacing.js
new file mode 100755
index 00000000000000..808fe443891791
--- /dev/null
+++ b/tools/eslint/lib/rules/template-tag-spacing.js
@@ -0,0 +1,77 @@
+/**
+ * @fileoverview Rule to check spacing between template tags and their literals
+ * @author Jonathan Wilsson
+ */
+
+"use strict";
+
+//------------------------------------------------------------------------------
+// Rule Definition
+//------------------------------------------------------------------------------
+
+module.exports = {
+    meta: {
+        docs: {
+            description: "require or disallow spacing between template tags and their literals",
+            category: "Stylistic Issues",
+            recommended: false
+        },
+
+        fixable: "whitespace",
+
+        schema: [
+            { enum: ["always", "never"] }
+        ]
+    },
+
+    create(context) {
+        const never = context.options[0] !== "always";
+        const sourceCode = context.getSourceCode();
+
+        /**
+         * Check if a space is present between a template tag and its literal
+         * @param {ASTNode} node node to evaluate
+         * @returns {void}
+         * @private
+         */
+        function checkSpacing(node) {
+            const tagToken = sourceCode.getTokenBefore(node.quasi);
+            const literalToken = sourceCode.getFirstToken(node.quasi);
+            const hasWhitespace = sourceCode.isSpaceBetweenTokens(tagToken, literalToken);
+
+            if (never && hasWhitespace) {
+                context.report({
+                    node,
+                    loc: tagToken.loc.start,
+                    message: "Unexpected space between template tag and template literal.",
+                    fix(fixer) {
+                        const comments = sourceCode.getComments(node.quasi).leading;
+
+                        // Don't fix anything if there's a single line comment after the template tag
+                        if (comments.some(comment => comment.type === "Line")) {
+                            return null;
+                        }
+
+                        return fixer.replaceTextRange(
+                            [tagToken.range[1], literalToken.range[0]],
+                            comments.reduce((text, comment) => text + sourceCode.getText(comment), "")
+                        );
+                    }
+                });
+            } else if (!never && !hasWhitespace) {
+                context.report({
+                    node,
+                    loc: tagToken.loc.start,
+                    message: "Missing space between template tag and template literal.",
+                    fix(fixer) {
+                        return fixer.insertTextAfter(tagToken, " ");
+                    }
+                });
+            }
+        }
+
+        return {
+            TaggedTemplateExpression: checkSpacing
+        };
+    }
+};
diff --git a/tools/eslint/lib/rules/unicode-bom.js b/tools/eslint/lib/rules/unicode-bom.js
index 2f16a258509e8b..7109a49edbb5ed 100644
--- a/tools/eslint/lib/rules/unicode-bom.js
+++ b/tools/eslint/lib/rules/unicode-bom.js
@@ -45,7 +45,7 @@ module.exports = {
                         loc: location,
                         message: "Expected Unicode BOM (Byte Order Mark).",
                         fix(fixer) {
-                            return fixer.insertTextBefore(node, "\uFEFF");
+                            return fixer.insertTextBeforeRange([0, 1], "\uFEFF");
                         }
                     });
                 } else if (sourceCode.hasBOM && (requireBOM === "never")) {
diff --git a/tools/eslint/lib/rules/wrap-iife.js b/tools/eslint/lib/rules/wrap-iife.js
index bbbc79ab1fff25..59179eb17ed6a5 100644
--- a/tools/eslint/lib/rules/wrap-iife.js
+++ b/tools/eslint/lib/rules/wrap-iife.js
@@ -5,6 +5,10 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
 const astUtils = require("../ast-utils");
 
 //------------------------------------------------------------------------------
@@ -51,11 +55,7 @@ module.exports = {
          * @private
          */
         function wrapped(node) {
-            const previousToken = sourceCode.getTokenBefore(node),
-                nextToken = sourceCode.getTokenAfter(node);
-
-            return previousToken && previousToken.value === "(" &&
-                nextToken && nextToken.value === ")";
+            return astUtils.isParenthesised(sourceCode, node);
         }
 
         /**
diff --git a/tools/eslint/lib/rules/yoda.js b/tools/eslint/lib/rules/yoda.js
index ba711c63c2f1ae..bdb7d2a4278ba3 100644
--- a/tools/eslint/lib/rules/yoda.js
+++ b/tools/eslint/lib/rules/yoda.js
@@ -235,12 +235,7 @@ module.exports = {
              *                    paren token.
              */
             function isParenWrapped() {
-                let tokenBefore, tokenAfter;
-
-                return ((tokenBefore = sourceCode.getTokenBefore(node)) &&
-                    tokenBefore.value === "(" &&
-                    (tokenAfter = sourceCode.getTokenAfter(node)) &&
-                    tokenAfter.value === ")");
+                return astUtils.isParenthesised(sourceCode, node);
             }
 
             return (node.type === "LogicalExpression" &&
@@ -269,11 +264,11 @@ module.exports = {
         * @returns {string} A string representation of the node with the sides and operator flipped
         */
         function getFlippedString(node) {
-            const operatorToken = sourceCode.getTokensBetween(node.left, node.right).find(token => token.value === node.operator);
+            const operatorToken = sourceCode.getFirstTokenBetween(node.left, node.right, token => token.value === node.operator);
             const textBeforeOperator = sourceCode.getText().slice(sourceCode.getTokenBefore(operatorToken).range[1], operatorToken.range[0]);
             const textAfterOperator = sourceCode.getText().slice(operatorToken.range[1], sourceCode.getTokenAfter(operatorToken).range[0]);
-            const leftText = sourceCode.getText().slice(sourceCode.getFirstToken(node).range[0], sourceCode.getTokenBefore(operatorToken).range[1]);
-            const rightText = sourceCode.getText().slice(sourceCode.getTokenAfter(operatorToken).range[0], sourceCode.getLastToken(node).range[1]);
+            const leftText = sourceCode.getText().slice(node.range[0], sourceCode.getTokenBefore(operatorToken).range[1]);
+            const rightText = sourceCode.getText().slice(sourceCode.getTokenAfter(operatorToken).range[0], node.range[1]);
 
             return rightText + textBeforeOperator + OPERATOR_FLIP_MAP[operatorToken.value] + textAfterOperator + leftText;
         }
diff --git a/tools/eslint/lib/testers/rule-tester.js b/tools/eslint/lib/testers/rule-tester.js
index 5d327ad28b9360..61fbdf597f8730 100644
--- a/tools/eslint/lib/testers/rule-tester.js
+++ b/tools/eslint/lib/testers/rule-tester.js
@@ -147,6 +147,12 @@ function RuleTester(testerConfig) {
         lodash.cloneDeep(defaultConfig),
         testerConfig
     );
+
+    /**
+     * Rule definitions to define before tests.
+     * @type {Object}
+     */
+    this.rules = {};
 }
 
 /**
@@ -213,7 +219,7 @@ Object.defineProperties(RuleTester, {
             RuleTester[DESCRIBE] = value;
         },
         configurable: true,
-        enumerable: true,
+        enumerable: true
     },
     it: {
         get() {
@@ -226,8 +232,8 @@ Object.defineProperties(RuleTester, {
             RuleTester[IT] = value;
         },
         configurable: true,
-        enumerable: true,
-    },
+        enumerable: true
+    }
 });
 
 RuleTester.prototype = {
@@ -239,7 +245,7 @@ RuleTester.prototype = {
      * @returns {void}
      */
     defineRule(name, rule) {
-        eslint.defineRule(name, rule);
+        this.rules[name] = rule;
     },
 
     /**
@@ -337,12 +343,13 @@ RuleTester.prototype = {
              * running the rule under test.
              */
             eslint.reset();
+
             eslint.on("Program", node => {
                 beforeAST = cloneDeeplyExcludesParent(node);
+            });
 
-                eslint.on("Program:exit", node => {
-                    afterAST = cloneDeeplyExcludesParent(node);
-                });
+            eslint.on("Program:exit", node => {
+                afterAST = node;
             });
 
             // Freezes rule-context properties.
@@ -361,25 +368,25 @@ RuleTester.prototype = {
 
                             return rule(context);
                         };
-                    } else {
-                        return {
-                            meta: rule.meta,
-                            create(context) {
-                                Object.freeze(context);
-                                freezeDeeply(context.options);
-                                freezeDeeply(context.settings);
-                                freezeDeeply(context.parserOptions);
-
-                                return rule.create(context);
-                            }
-                        };
                     }
+                    return {
+                        meta: rule.meta,
+                        create(context) {
+                            Object.freeze(context);
+                            freezeDeeply(context.options);
+                            freezeDeeply(context.settings);
+                            freezeDeeply(context.parserOptions);
+
+                            return rule.create(context);
+                        }
+                    };
+
                 };
 
                 return {
                     messages: eslint.verify(code, config, filename, true),
                     beforeAST,
-                    afterAST
+                    afterAST: cloneDeeplyExcludesParent(afterAST)
                 };
             } finally {
                 rules.get = originalGet;
@@ -419,6 +426,28 @@ RuleTester.prototype = {
             assertASTDidntChange(result.beforeAST, result.afterAST);
         }
 
+        /**
+         * Asserts that the message matches its expected value. If the expected
+         * value is a regular expression, it is checked against the actual
+         * value.
+         * @param {string} actual Actual value
+         * @param {string|RegExp} expected Expected value
+         * @returns {void}
+         * @private
+         */
+        function assertMessageMatches(actual, expected) {
+            if (expected instanceof RegExp) {
+
+                // assert.js doesn't have a built-in RegExp match function
+                assert.ok(
+                    expected.test(actual),
+                    `Expected '${actual}' to match ${expected}`
+                );
+            } else {
+                assert.equal(actual, expected);
+            }
+        }
+
         /**
          * Check if the template is invalid or not
          * all invalid cases go through this.
@@ -448,10 +477,10 @@ RuleTester.prototype = {
                     assert.ok(!("fatal" in messages[i]), `A fatal parsing error occurred: ${messages[i].message}`);
                     assert.equal(messages[i].ruleId, ruleName, "Error rule name should be the same as the name of the rule being tested");
 
-                    if (typeof item.errors[i] === "string") {
+                    if (typeof item.errors[i] === "string" || item.errors[i] instanceof RegExp) {
 
                         // Just an error message.
-                        assert.equal(messages[i].message, item.errors[i]);
+                        assertMessageMatches(messages[i].message, item.errors[i]);
                     } else if (typeof item.errors[i] === "object") {
 
                         /*
@@ -460,7 +489,7 @@ RuleTester.prototype = {
                          * column.
                          */
                         if (item.errors[i].message) {
-                            assert.equal(messages[i].message, item.errors[i].message);
+                            assertMessageMatches(messages[i].message, item.errors[i].message);
                         }
 
                         if (item.errors[i].type) {
@@ -484,17 +513,24 @@ RuleTester.prototype = {
                         }
                     } else {
 
-                        // Only string or object errors are valid.
-                        assert.fail(messages[i], null, "Error should be a string or object.");
+                        // Message was an unexpected type
+                        assert.fail(messages[i], null, "Error should be a string, object, or RegExp.");
                     }
                 }
+            }
 
-                if (item.hasOwnProperty("output")) {
+            if (item.hasOwnProperty("output")) {
+                if (item.output === null) {
+                    assert.strictEqual(
+                        messages.filter(message => message.fix).length,
+                        0,
+                        "Expected no autofixes to be suggested"
+                    );
+                } else {
                     const fixResult = SourceCodeFixer.applyFixes(eslint.getSourceCode(), messages);
 
                     assert.equal(fixResult.output, item.output, "Output is incorrect.");
                 }
-
             }
 
             assertASTDidntChange(result.beforeAST, result.afterAST);
@@ -507,7 +543,8 @@ RuleTester.prototype = {
         RuleTester.describe(ruleName, () => {
             RuleTester.describe("valid", () => {
                 test.valid.forEach(valid => {
-                    RuleTester.it(valid.code || valid, () => {
+                    RuleTester.it(typeof valid === "object" ? valid.code : valid, () => {
+                        eslint.defineRules(this.rules);
                         testValidTemplate(ruleName, valid);
                     });
                 });
@@ -516,6 +553,7 @@ RuleTester.prototype = {
             RuleTester.describe("invalid", () => {
                 test.invalid.forEach(invalid => {
                     RuleTester.it(invalid.code, () => {
+                        eslint.defineRules(this.rules);
                         testInvalidTemplate(ruleName, invalid);
                     });
                 });
diff --git a/tools/eslint/lib/token-store.js b/tools/eslint/lib/token-store.js
deleted file mode 100644
index 9cd37cd175bf54..00000000000000
--- a/tools/eslint/lib/token-store.js
+++ /dev/null
@@ -1,203 +0,0 @@
-/**
- * @fileoverview Object to handle access and retrieval of tokens.
- * @author Brandon Mills
- */
-"use strict";
-
-//------------------------------------------------------------------------------
-// Implementation
-//------------------------------------------------------------------------------
-
-module.exports = function(tokens) {
-    const api = {},
-        starts = Object.create(null),
-        ends = Object.create(null),
-        length = tokens.length;
-
-    /**
-     * Gets tokens in a given interval.
-     * @param {int} start Inclusive index of the first token. 0 if negative.
-     * @param {int} end Exclusive index of the last token.
-     * @returns {Token[]} Tokens in the interval.
-     */
-    function get(start, end) {
-        const result = [];
-
-        for (let i = Math.max(0, start); i < end && i < length; i++) {
-            result.push(tokens[i]);
-        }
-
-        return result;
-    }
-
-    /**
-     * Gets the index in the tokens array of the last token belonging to a node.
-     * Usually a node ends exactly at a token, but due to ASI, sometimes a
-     * node's range extends beyond its last token.
-     * @param {ASTNode} node The node for which to find the last token's index.
-     * @returns {int} Index in the tokens array of the node's last token.
-     */
-    function lastTokenIndex(node) {
-        const end = node.range[1];
-        let cursor = ends[end];
-
-        // If the node extends beyond its last token, get the token before the
-        // next token
-        if (typeof cursor === "undefined") {
-            cursor = starts[end] - 1;
-        }
-
-        // If there isn't a next token, the desired token is the last one in the
-        // array
-        if (isNaN(cursor)) {
-            cursor = length - 1;
-        }
-
-        return cursor;
-    }
-
-    // Map tokens' start and end range to the index in the tokens array
-    for (let i = 0; i < length; i++) {
-        const range = tokens[i].range;
-
-        starts[range[0]] = i;
-        ends[range[1]] = i;
-    }
-
-    /**
-     * Gets a number of tokens that precede a given node or token in the token
-     * stream.
-     * @param {(ASTNode|Token)} node The AST node or token.
-     * @param {int} [beforeCount=0] The number of tokens before the node or
-     *     token to retrieve.
-     * @returns {Token[]} Array of objects representing tokens.
-     */
-    api.getTokensBefore = function(node, beforeCount) {
-        const first = starts[node.range[0]];
-
-        return get(first - (beforeCount || 0), first);
-    };
-
-    /**
-     * Gets the token that precedes a given node or token in the token stream.
-     * @param {(ASTNode|Token)} node The AST node or token.
-     * @param {int} [skip=0] A number of tokens to skip before the given node or
-     *     token.
-     * @returns {Token} An object representing the token.
-     */
-    api.getTokenBefore = function(node, skip) {
-        return tokens[starts[node.range[0]] - (skip || 0) - 1];
-    };
-
-    /**
-     * Gets a number of tokens that follow a given node or token in the token
-     * stream.
-     * @param {(ASTNode|Token)} node The AST node or token.
-     * @param {int} [afterCount=0] The number of tokens after the node or token
-     *     to retrieve.
-     * @returns {Token[]} Array of objects representing tokens.
-     */
-    api.getTokensAfter = function(node, afterCount) {
-        const start = lastTokenIndex(node) + 1;
-
-        return get(start, start + (afterCount || 0));
-    };
-
-    /**
-     * Gets the token that follows a given node or token in the token stream.
-     * @param {(ASTNode|Token)} node The AST node or token.
-     * @param {int} [skip=0] A number of tokens to skip after the given node or
-     *     token.
-     * @returns {Token} An object representing the token.
-     */
-    api.getTokenAfter = function(node, skip) {
-        return tokens[lastTokenIndex(node) + (skip || 0) + 1];
-    };
-
-    /**
-     * Gets all tokens that are related to the given node.
-     * @param {ASTNode} node The AST node.
-     * @param {int} [beforeCount=0] The number of tokens before the node to retrieve.
-     * @param {int} [afterCount=0] The number of tokens after the node to retrieve.
-     * @returns {Token[]} Array of objects representing tokens.
-     */
-    api.getTokens = function(node, beforeCount, afterCount) {
-        return get(
-            starts[node.range[0]] - (beforeCount || 0),
-            lastTokenIndex(node) + (afterCount || 0) + 1
-        );
-    };
-
-    /**
-     * Gets the first `count` tokens of the given node's token stream.
-     * @param {ASTNode} node The AST node.
-     * @param {int} [count=0] The number of tokens of the node to retrieve.
-     * @returns {Token[]} Array of objects representing tokens.
-     */
-    api.getFirstTokens = function(node, count) {
-        const first = starts[node.range[0]];
-
-        return get(
-            first,
-            Math.min(lastTokenIndex(node) + 1, first + (count || 0))
-        );
-    };
-
-    /**
-     * Gets the first token of the given node's token stream.
-     * @param {ASTNode} node The AST node.
-     * @param {int} [skip=0] A number of tokens to skip.
-     * @returns {Token} An object representing the token.
-     */
-    api.getFirstToken = function(node, skip) {
-        return tokens[starts[node.range[0]] + (skip || 0)];
-    };
-
-    /**
-     * Gets the last `count` tokens of the given node.
-     * @param {ASTNode} node The AST node.
-     * @param {int} [count=0] The number of tokens of the node to retrieve.
-     * @returns {Token[]} Array of objects representing tokens.
-     */
-    api.getLastTokens = function(node, count) {
-        const last = lastTokenIndex(node) + 1;
-
-        return get(Math.max(starts[node.range[0]], last - (count || 0)), last);
-    };
-
-    /**
-     * Gets the last token of the given node's token stream.
-     * @param {ASTNode} node The AST node.
-     * @param {int} [skip=0] A number of tokens to skip.
-     * @returns {Token} An object representing the token.
-     */
-    api.getLastToken = function(node, skip) {
-        return tokens[lastTokenIndex(node) - (skip || 0)];
-    };
-
-    /**
-     * Gets all of the tokens between two non-overlapping nodes.
-     * @param {ASTNode} left Node before the desired token range.
-     * @param {ASTNode} right Node after the desired token range.
-     * @param {int} [padding=0] Number of extra tokens on either side of center.
-     * @returns {Token[]} Tokens between left and right plus padding.
-     */
-    api.getTokensBetween = function(left, right, padding) {
-        padding = padding || 0;
-        return get(
-            lastTokenIndex(left) + 1 - padding,
-            starts[right.range[0]] + padding
-        );
-    };
-
-    /**
-     * Gets the token starting at the specified index.
-     * @param {int} startIndex Index of the start of the token's range.
-     * @returns {Token} The token starting at index, or null if no such token.
-     */
-    api.getTokenByRangeStart = function(startIndex) {
-        return (tokens[starts[startIndex]] || null);
-    };
-
-    return api;
-};
diff --git a/tools/eslint/lib/token-store/backward-token-comment-cursor.js b/tools/eslint/lib/token-store/backward-token-comment-cursor.js
new file mode 100644
index 00000000000000..7c2137a176ff21
--- /dev/null
+++ b/tools/eslint/lib/token-store/backward-token-comment-cursor.js
@@ -0,0 +1,57 @@
+/**
+ * @fileoverview Define the cursor which iterates tokens and comments in reverse.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const Cursor = require("./cursor");
+const utils = require("./utils");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor which iterates tokens and comments in reverse.
+ */
+module.exports = class BackwardTokenCommentCursor extends Cursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     */
+    constructor(tokens, comments, indexMap, startLoc, endLoc) {
+        super();
+        this.tokens = tokens;
+        this.comments = comments;
+        this.tokenIndex = utils.getLastIndex(tokens, indexMap, endLoc);
+        this.commentIndex = utils.search(comments, endLoc) - 1;
+        this.border = startLoc;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        const token = (this.tokenIndex >= 0) ? this.tokens[this.tokenIndex] : null;
+        const comment = (this.commentIndex >= 0) ? this.comments[this.commentIndex] : null;
+
+        if (token && (!comment || token.range[1] > comment.range[1])) {
+            this.current = token;
+            this.tokenIndex -= 1;
+        } else if (comment) {
+            this.current = comment;
+            this.commentIndex -= 1;
+        } else {
+            this.current = null;
+        }
+
+        return Boolean(this.current) && (this.border === -1 || this.current.range[0] >= this.border);
+    }
+};
diff --git a/tools/eslint/lib/token-store/backward-token-cursor.js b/tools/eslint/lib/token-store/backward-token-cursor.js
new file mode 100644
index 00000000000000..caa117faeac286
--- /dev/null
+++ b/tools/eslint/lib/token-store/backward-token-cursor.js
@@ -0,0 +1,56 @@
+/**
+ * @fileoverview Define the cursor which iterates tokens only in reverse.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const Cursor = require("./cursor");
+const utils = require("./utils");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor which iterates tokens only in reverse.
+ */
+module.exports = class BackwardTokenCursor extends Cursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     */
+    constructor(tokens, comments, indexMap, startLoc, endLoc) {
+        super();
+        this.tokens = tokens;
+        this.index = utils.getLastIndex(tokens, indexMap, endLoc);
+        this.indexEnd = utils.getFirstIndex(tokens, indexMap, startLoc);
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        if (this.index >= this.indexEnd) {
+            this.current = this.tokens[this.index];
+            this.index -= 1;
+            return true;
+        }
+        return false;
+    }
+
+    //
+    // Shorthand for performance.
+    //
+
+    /** @inheritdoc */
+    getOneToken() {
+        return (this.index >= this.indexEnd) ? this.tokens[this.index] : null;
+    }
+};
diff --git a/tools/eslint/lib/token-store/cursor.js b/tools/eslint/lib/token-store/cursor.js
new file mode 100644
index 00000000000000..4e1595c6dcb8a3
--- /dev/null
+++ b/tools/eslint/lib/token-store/cursor.js
@@ -0,0 +1,76 @@
+/**
+ * @fileoverview Define the abstract class about cursors which iterate tokens.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The abstract class about cursors which iterate tokens.
+ *
+ * This class has 2 abstract methods.
+ *
+ * - `current: Token | Comment | null` ... The current token.
+ * - `moveNext(): boolean` ... Moves this cursor to the next token. If the next token didn't exist, it returns `false`.
+ *
+ * This is similar to ES2015 Iterators.
+ * However, Iterators were slow (at 2017-01), so I created this class as similar to C# IEnumerable.
+ *
+ * There are the following known sub classes.
+ *
+ * - ForwardTokenCursor .......... The cursor which iterates tokens only.
+ * - BackwardTokenCursor ......... The cursor which iterates tokens only in reverse.
+ * - ForwardTokenCommentCursor ... The cursor which iterates tokens and comments.
+ * - BackwardTokenCommentCursor .. The cursor which iterates tokens and comments in reverse.
+ * - DecorativeCursor
+ *     - FilterCursor ............ The cursor which ignores the specified tokens.
+ *     - SkipCursor .............. The cursor which ignores the first few tokens.
+ *     - LimitCursor ............. The cursor which limits the count of tokens.
+ *
+ */
+module.exports = class Cursor {
+
+    /**
+     * Initializes this cursor.
+     */
+    constructor() {
+        this.current = null;
+    }
+
+    /**
+     * Gets the first token.
+     * This consumes this cursor.
+     * @returns {Token|Comment} The first token or null.
+     */
+    getOneToken() {
+        return this.moveNext() ? this.current : null;
+    }
+
+    /**
+     * Gets the first tokens.
+     * This consumes this cursor.
+     * @returns {(Token|Comment)[]} All tokens.
+     */
+    getAllTokens() {
+        const tokens = [];
+
+        while (this.moveNext()) {
+            tokens.push(this.current);
+        }
+
+        return tokens;
+    }
+
+    /**
+     * Moves this cursor to the next token.
+     * @returns {boolean} `true` if the next token exists.
+     * @abstract
+     */
+    /* istanbul ignore next */
+    moveNext() { // eslint-disable-line class-methods-use-this
+        throw new Error("Not implemented.");
+    }
+};
diff --git a/tools/eslint/lib/token-store/cursors.js b/tools/eslint/lib/token-store/cursors.js
new file mode 100644
index 00000000000000..b315c7e65e1a7c
--- /dev/null
+++ b/tools/eslint/lib/token-store/cursors.js
@@ -0,0 +1,92 @@
+/**
+ * @fileoverview Define 2 token factories; forward and backward.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const BackwardTokenCommentCursor = require("./backward-token-comment-cursor");
+const BackwardTokenCursor = require("./backward-token-cursor");
+const FilterCursor = require("./filter-cursor");
+const ForwardTokenCommentCursor = require("./forward-token-comment-cursor");
+const ForwardTokenCursor = require("./forward-token-cursor");
+const LimitCursor = require("./limit-cursor");
+const SkipCursor = require("./skip-cursor");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor factory.
+ * @private
+ */
+class CursorFactory {
+
+    /**
+     * Initializes this cursor.
+     * @param {Function} TokenCursor - The class of the cursor which iterates tokens only.
+     * @param {Function} TokenCommentCursor - The class of the cursor which iterates the mix of tokens and comments.
+     */
+    constructor(TokenCursor, TokenCommentCursor) {
+        this.TokenCursor = TokenCursor;
+        this.TokenCommentCursor = TokenCommentCursor;
+    }
+
+    /**
+     * Creates a base cursor instance that can be decorated by createCursor.
+     *
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     * @param {boolean} includeComments - The flag to iterate comments as well.
+     * @returns {Cursor} The created base cursor.
+     */
+    createBaseCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments) {
+        const Cursor = includeComments ? this.TokenCommentCursor : this.TokenCursor;
+
+        return new Cursor(tokens, comments, indexMap, startLoc, endLoc);
+    }
+
+    /**
+     * Creates a cursor that iterates tokens with normalized options.
+     *
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     * @param {boolean} includeComments - The flag to iterate comments as well.
+     * @param {Function|null} filter - The predicate function to choose tokens.
+     * @param {number} skip - The count of tokens the cursor skips.
+     * @param {number} count - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+     * @returns {Cursor} The created cursor.
+     */
+    createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, skip, count) {
+        let cursor = this.createBaseCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments);
+
+        if (filter) {
+            cursor = new FilterCursor(cursor, filter);
+        }
+        if (skip >= 1) {
+            cursor = new SkipCursor(cursor, skip);
+        }
+        if (count >= 0) {
+            cursor = new LimitCursor(cursor, count);
+        }
+
+        return cursor;
+    }
+}
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+exports.forward = new CursorFactory(ForwardTokenCursor, ForwardTokenCommentCursor);
+exports.backward = new CursorFactory(BackwardTokenCursor, BackwardTokenCommentCursor);
diff --git a/tools/eslint/lib/token-store/decorative-cursor.js b/tools/eslint/lib/token-store/decorative-cursor.js
new file mode 100644
index 00000000000000..f0bff9c51dba76
--- /dev/null
+++ b/tools/eslint/lib/token-store/decorative-cursor.js
@@ -0,0 +1,39 @@
+/**
+ * @fileoverview Define the abstract class about cursors which manipulate another cursor.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const Cursor = require("./cursor");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The abstract class about cursors which manipulate another cursor.
+ */
+module.exports = class DecorativeCursor extends Cursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Cursor} cursor - The cursor to be decorated.
+     */
+    constructor(cursor) {
+        super();
+        this.cursor = cursor;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        const retv = this.cursor.moveNext();
+
+        this.current = this.cursor.current;
+
+        return retv;
+    }
+};
diff --git a/tools/eslint/lib/token-store/filter-cursor.js b/tools/eslint/lib/token-store/filter-cursor.js
new file mode 100644
index 00000000000000..7133627bd395a1
--- /dev/null
+++ b/tools/eslint/lib/token-store/filter-cursor.js
@@ -0,0 +1,43 @@
+/**
+ * @fileoverview Define the cursor which ignores specified tokens.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const DecorativeCursor = require("./decorative-cursor");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The decorative cursor which ignores specified tokens.
+ */
+module.exports = class FilterCursor extends DecorativeCursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Cursor} cursor - The cursor to be decorated.
+     * @param {Function} predicate - The predicate function to decide tokens this cursor iterates.
+     */
+    constructor(cursor, predicate) {
+        super(cursor);
+        this.predicate = predicate;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        const predicate = this.predicate;
+
+        while (super.moveNext()) {
+            if (predicate(this.current)) {
+                return true;
+            }
+        }
+        return false;
+    }
+};
diff --git a/tools/eslint/lib/token-store/forward-token-comment-cursor.js b/tools/eslint/lib/token-store/forward-token-comment-cursor.js
new file mode 100644
index 00000000000000..be08552970fcd1
--- /dev/null
+++ b/tools/eslint/lib/token-store/forward-token-comment-cursor.js
@@ -0,0 +1,57 @@
+/**
+ * @fileoverview Define the cursor which iterates tokens and comments.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const Cursor = require("./cursor");
+const utils = require("./utils");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor which iterates tokens and comments.
+ */
+module.exports = class ForwardTokenCommentCursor extends Cursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     */
+    constructor(tokens, comments, indexMap, startLoc, endLoc) {
+        super();
+        this.tokens = tokens;
+        this.comments = comments;
+        this.tokenIndex = utils.getFirstIndex(tokens, indexMap, startLoc);
+        this.commentIndex = utils.search(comments, startLoc);
+        this.border = endLoc;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        const token = (this.tokenIndex < this.tokens.length) ? this.tokens[this.tokenIndex] : null;
+        const comment = (this.commentIndex < this.comments.length) ? this.comments[this.commentIndex] : null;
+
+        if (token && (!comment || token.range[0] < comment.range[0])) {
+            this.current = token;
+            this.tokenIndex += 1;
+        } else if (comment) {
+            this.current = comment;
+            this.commentIndex += 1;
+        } else {
+            this.current = null;
+        }
+
+        return Boolean(this.current) && (this.border === -1 || this.current.range[1] <= this.border);
+    }
+};
diff --git a/tools/eslint/lib/token-store/forward-token-cursor.js b/tools/eslint/lib/token-store/forward-token-cursor.js
new file mode 100644
index 00000000000000..5748cb45a62981
--- /dev/null
+++ b/tools/eslint/lib/token-store/forward-token-cursor.js
@@ -0,0 +1,61 @@
+/**
+ * @fileoverview Define the cursor which iterates tokens only.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const Cursor = require("./cursor");
+const utils = require("./utils");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor which iterates tokens only.
+ */
+module.exports = class ForwardTokenCursor extends Cursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     */
+    constructor(tokens, comments, indexMap, startLoc, endLoc) {
+        super();
+        this.tokens = tokens;
+        this.index = utils.getFirstIndex(tokens, indexMap, startLoc);
+        this.indexEnd = utils.getLastIndex(tokens, indexMap, endLoc);
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        if (this.index <= this.indexEnd) {
+            this.current = this.tokens[this.index];
+            this.index += 1;
+            return true;
+        }
+        return false;
+    }
+
+    //
+    // Shorthand for performance.
+    //
+
+    /** @inheritdoc */
+    getOneToken() {
+        return (this.index <= this.indexEnd) ? this.tokens[this.index] : null;
+    }
+
+    /** @inheritdoc */
+    getAllTokens() {
+        return this.tokens.slice(this.index, this.indexEnd + 1);
+    }
+};
diff --git a/tools/eslint/lib/token-store/index.js b/tools/eslint/lib/token-store/index.js
new file mode 100644
index 00000000000000..86d05cf7b3f834
--- /dev/null
+++ b/tools/eslint/lib/token-store/index.js
@@ -0,0 +1,604 @@
+/**
+ * @fileoverview Object to handle access and retrieval of tokens.
+ * @author Brandon Mills
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const assert = require("assert");
+const cursors = require("./cursors");
+const ForwardTokenCursor = require("./forward-token-cursor");
+const PaddedTokenCursor = require("./padded-token-cursor");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+const PUBLIC_METHODS = Object.freeze([
+    "getTokenByRangeStart",
+
+    "getFirstToken",
+    "getLastToken",
+    "getTokenBefore",
+    "getTokenAfter",
+    "getFirstTokenBetween",
+    "getLastTokenBetween",
+
+    "getFirstTokens",
+    "getLastTokens",
+    "getTokensBefore",
+    "getTokensAfter",
+    "getFirstTokensBetween",
+    "getLastTokensBetween",
+
+    "getTokens",
+    "getTokensBetween",
+
+    "getTokenOrCommentBefore",
+    "getTokenOrCommentAfter"
+]);
+
+/**
+ * Creates the map from locations to indices in `tokens`.
+ *
+ * The first/last location of tokens is mapped to the index of the token.
+ * The first/last location of comments is mapped to the index of the next token of each comment.
+ *
+ * @param {Token[]} tokens - The array of tokens.
+ * @param {Comment[]} comments - The array of comments.
+ * @returns {Object} The map from locations to indices in `tokens`.
+ * @private
+ */
+function createIndexMap(tokens, comments) {
+    const map = Object.create(null);
+    let tokenIndex = 0;
+    let commentIndex = 0;
+    let nextStart = 0;
+    let range = null;
+
+    while (tokenIndex < tokens.length || commentIndex < comments.length) {
+        nextStart = (commentIndex < comments.length) ? comments[commentIndex].range[0] : Number.MAX_SAFE_INTEGER;
+        while (tokenIndex < tokens.length && (range = tokens[tokenIndex].range)[0] < nextStart) {
+            map[range[0]] = tokenIndex;
+            map[range[1] - 1] = tokenIndex;
+            tokenIndex += 1;
+        }
+
+        nextStart = (tokenIndex < tokens.length) ? tokens[tokenIndex].range[0] : Number.MAX_SAFE_INTEGER;
+        while (commentIndex < comments.length && (range = comments[commentIndex].range)[0] < nextStart) {
+            map[range[0]] = tokenIndex;
+            map[range[1] - 1] = tokenIndex;
+            commentIndex += 1;
+        }
+    }
+
+    return map;
+}
+
+/**
+ * Creates the cursor iterates tokens with options.
+ *
+ * @param {CursorFactory} factory - The cursor factory to initialize cursor.
+ * @param {Token[]} tokens - The array of tokens.
+ * @param {Comment[]} comments - The array of comments.
+ * @param {Object} indexMap - The map from locations to indices in `tokens`.
+ * @param {number} startLoc - The start location of the iteration range.
+ * @param {number} endLoc - The end location of the iteration range.
+ * @param {number|Function|Object} [opts=0] - The option object. If this is a number then it's `opts.skip`. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments=false] - The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
+ * @param {number} [opts.skip=0] - The count of tokens the cursor skips.
+ * @returns {Cursor} The created cursor.
+ * @private
+ */
+function createCursorWithSkip(factory, tokens, comments, indexMap, startLoc, endLoc, opts) {
+    let includeComments = false;
+    let skip = 0;
+    let filter = null;
+
+    if (typeof opts === "number") {
+        skip = opts | 0;
+    } else if (typeof opts === "function") {
+        filter = opts;
+    } else if (opts) {
+        includeComments = !!opts.includeComments;
+        skip = opts.skip | 0;
+        filter = opts.filter || null;
+    }
+    assert(skip >= 0, "options.skip should be zero or a positive integer.");
+    assert(!filter || typeof filter === "function", "options.filter should be a function.");
+
+    return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, skip, -1);
+}
+
+/**
+ * Creates the cursor iterates tokens with options.
+ *
+ * @param {CursorFactory} factory - The cursor factory to initialize cursor.
+ * @param {Token[]} tokens - The array of tokens.
+ * @param {Comment[]} comments - The array of comments.
+ * @param {Object} indexMap - The map from locations to indices in `tokens`.
+ * @param {number} startLoc - The start location of the iteration range.
+ * @param {number} endLoc - The end location of the iteration range.
+ * @param {number|Function|Object} [opts=0] - The option object. If this is a number then it's `opts.count`. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments] - The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
+ * @param {number} [opts.count=0] - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+ * @returns {Cursor} The created cursor.
+ * @private
+ */
+function createCursorWithCount(factory, tokens, comments, indexMap, startLoc, endLoc, opts) {
+    let includeComments = false;
+    let count = 0;
+    let countExists = false;
+    let filter = null;
+
+    if (typeof opts === "number") {
+        count = opts | 0;
+        countExists = true;
+    } else if (typeof opts === "function") {
+        filter = opts;
+    } else if (opts) {
+        includeComments = !!opts.includeComments;
+        count = opts.count | 0;
+        countExists = typeof opts.count === "number";
+        filter = opts.filter || null;
+    }
+    assert(count >= 0, "options.count should be zero or a positive integer.");
+    assert(!filter || typeof filter === "function", "options.filter should be a function.");
+
+    return factory.createCursor(tokens, comments, indexMap, startLoc, endLoc, includeComments, filter, 0, countExists ? count : -1);
+}
+
+/**
+ * Creates the cursor iterates tokens with options.
+ * This is overload function of the below.
+ *
+ * @param {Token[]} tokens - The array of tokens.
+ * @param {Comment[]} comments - The array of comments.
+ * @param {Object} indexMap - The map from locations to indices in `tokens`.
+ * @param {number} startLoc - The start location of the iteration range.
+ * @param {number} endLoc - The end location of the iteration range.
+ * @param {Function|Object} opts - The option object. If this is a function then it's `opts.filter`.
+ * @param {boolean} [opts.includeComments] - The flag to iterate comments as well.
+ * @param {Function|null} [opts.filter=null] - The predicate function to choose tokens.
+ * @param {number} [opts.count=0] - The maximum count of tokens the cursor iterates. Zero is no iteration for backward compatibility.
+ * @returns {Cursor} The created cursor.
+ * @private
+ */
+/**
+ * Creates the cursor iterates tokens with options.
+ *
+ * @param {Token[]} tokens - The array of tokens.
+ * @param {Comment[]} comments - The array of comments.
+ * @param {Object} indexMap - The map from locations to indices in `tokens`.
+ * @param {number} startLoc - The start location of the iteration range.
+ * @param {number} endLoc - The end location of the iteration range.
+ * @param {number} [beforeCount=0] - The number of tokens before the node to retrieve.
+ * @param {boolean} [afterCount=0] - The number of tokens after the node to retrieve.
+ * @returns {Cursor} The created cursor.
+ * @private
+ */
+function createCursorWithPadding(tokens, comments, indexMap, startLoc, endLoc, beforeCount, afterCount) {
+    if (typeof beforeCount === "undefined" && typeof afterCount === "undefined") {
+        return new ForwardTokenCursor(tokens, comments, indexMap, startLoc, endLoc);
+    }
+    if (typeof beforeCount === "number" || typeof beforeCount === "undefined") {
+        return new PaddedTokenCursor(tokens, comments, indexMap, startLoc, endLoc, beforeCount | 0, afterCount | 0);
+    }
+    return createCursorWithCount(cursors.forward, tokens, comments, indexMap, startLoc, endLoc, beforeCount);
+}
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The token store.
+ *
+ * This class provides methods to get tokens by locations as fast as possible.
+ * The methods are a part of public API, so we should be careful if it changes this class.
+ *
+ * People can get tokens in O(1) by the hash map which is mapping from the location of tokens/comments to tokens.
+ * Also people can get a mix of tokens and comments in O(log k), the k is the number of comments.
+ * Assuming that comments to be much fewer than tokens, this does not make hash map from token's locations to comments to reduce memory cost.
+ * This uses binary-searching instead for comments.
+ */
+module.exports = class TokenStore {
+
+    /**
+     * Initializes this token store.
+     *
+     * ※ `comments` needs to be cloned for backward compatibility.
+     * After this initialization, ESLint removes a shebang's comment from `comments`.
+     * However, so far we had been concatenating 'tokens' and 'comments' before,
+     * so the shebang's comment had remained in the concatenated array.
+     * As a result, both the result of `getTokenOrCommentAfter` and `getTokenOrCommentBefore`
+     * methods had included the shebang's comment.
+     * And some rules depends on this behavior.
+     *
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     */
+    constructor(tokens, comments) {
+        this.tokens = tokens;
+        this.comments = comments.slice(0);
+        this.indexMap = createIndexMap(tokens, comments);
+    }
+
+    //--------------------------------------------------------------------------
+    // Gets single token.
+    //--------------------------------------------------------------------------
+
+    /**
+     * Gets the token starting at the specified index.
+     * @param {number} offset - Index of the start of the token's range.
+     * @param {Object} [options=0] - The option object.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @returns {Token|null} The token starting at index, or null if no such token.
+     */
+    getTokenByRangeStart(offset, options) {
+        const includeComments = options && options.includeComments;
+        const token = cursors.forward.createBaseCursor(
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            offset,
+            -1,
+            includeComments
+        ).getOneToken();
+
+        if (token && token.range[0] === offset) {
+            return token;
+        }
+        return null;
+    }
+
+    /**
+     * Gets the first token of the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} An object representing the token.
+     */
+    getFirstToken(node, options) {
+        return createCursorWithSkip(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[0],
+            node.range[1],
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the last token of the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} An object representing the token.
+     */
+    getLastToken(node, options) {
+        return createCursorWithSkip(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[0],
+            node.range[1],
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the token that precedes a given node or token.
+     * @param {ASTNode|Token|Comment} node - The AST node or token.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} An object representing the token.
+     */
+    getTokenBefore(node, options) {
+        return createCursorWithSkip(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            -1,
+            node.range[0],
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the token that follows a given node or token.
+     * @param {ASTNode|Token|Comment} node - The AST node or token.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} An object representing the token.
+     */
+    getTokenAfter(node, options) {
+        return createCursorWithSkip(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[1],
+            -1,
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the first token between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left - Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right - Node after the desired token range.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} An object representing the token.
+     */
+    getFirstTokenBetween(left, right, options) {
+        return createCursorWithSkip(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            left.range[1],
+            right.range[0],
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the last token between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right Node after the desired token range.
+     * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.skip`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.skip=0] - The count of tokens the cursor skips.
+     * @returns {Token|null} Tokens between left and right.
+     */
+    getLastTokenBetween(left, right, options) {
+        return createCursorWithSkip(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            left.range[1],
+            right.range[0],
+            options
+        ).getOneToken();
+    }
+
+    /**
+     * Gets the token that precedes a given node or token in the token stream.
+     * This is defined for backward compatibility. Use `includeComments` option instead.
+     * TODO: We have a plan to remove this in a future major version.
+     * @param {ASTNode|Token|Comment} node The AST node or token.
+     * @param {number} [skip=0] A number of tokens to skip.
+     * @returns {Token|null} An object representing the token.
+     * @deprecated
+     */
+    getTokenOrCommentBefore(node, skip) {
+        return this.getTokenBefore(node, { includeComments: true, skip });
+    }
+
+    /**
+     * Gets the token that follows a given node or token in the token stream.
+     * This is defined for backward compatibility. Use `includeComments` option instead.
+     * TODO: We have a plan to remove this in a future major version.
+     * @param {ASTNode|Token|Comment} node The AST node or token.
+     * @param {number} [skip=0] A number of tokens to skip.
+     * @returns {Token|null} An object representing the token.
+     * @deprecated
+     */
+    getTokenOrCommentAfter(node, skip) {
+        return this.getTokenAfter(node, { includeComments: true, skip });
+    }
+
+    //--------------------------------------------------------------------------
+    // Gets multiple tokens.
+    //--------------------------------------------------------------------------
+
+    /**
+     * Gets the first `count` tokens of the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens.
+     */
+    getFirstTokens(node, options) {
+        return createCursorWithCount(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[0],
+            node.range[1],
+            options
+        ).getAllTokens();
+    }
+
+    /**
+     * Gets the last `count` tokens of the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens.
+     */
+    getLastTokens(node, options) {
+        return createCursorWithCount(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[0],
+            node.range[1],
+            options
+        ).getAllTokens().reverse();
+    }
+
+    /**
+     * Gets the `count` tokens that precedes a given node or token.
+     * @param {ASTNode|Token|Comment} node - The AST node or token.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens.
+     */
+    getTokensBefore(node, options) {
+        return createCursorWithCount(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            -1,
+            node.range[0],
+            options
+        ).getAllTokens().reverse();
+    }
+
+    /**
+     * Gets the `count` tokens that follows a given node or token.
+     * @param {ASTNode|Token|Comment} node - The AST node or token.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens.
+     */
+    getTokensAfter(node, options) {
+        return createCursorWithCount(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[1],
+            -1,
+            options
+        ).getAllTokens();
+    }
+
+    /**
+     * Gets the first `count` tokens between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left - Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right - Node after the desired token range.
+     * @param {number|Function|Object} [options=0] - The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens between left and right.
+     */
+    getFirstTokensBetween(left, right, options) {
+        return createCursorWithCount(
+            cursors.forward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            left.range[1],
+            right.range[0],
+            options
+        ).getAllTokens();
+    }
+
+    /**
+     * Gets the last `count` tokens between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right Node after the desired token range.
+     * @param {number|Function|Object} [options=0] The option object. If this is a number then it's `options.count`. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens between left and right.
+     */
+    getLastTokensBetween(left, right, options) {
+        return createCursorWithCount(
+            cursors.backward,
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            left.range[1],
+            right.range[0],
+            options
+        ).getAllTokens().reverse();
+    }
+
+    /**
+     * Gets all tokens that are related to the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {Function|Object} options The option object. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Array of objects representing tokens.
+     */
+    /**
+     * Gets all tokens that are related to the given node.
+     * @param {ASTNode} node - The AST node.
+     * @param {int} [beforeCount=0] - The number of tokens before the node to retrieve.
+     * @param {int} [afterCount=0] - The number of tokens after the node to retrieve.
+     * @returns {Token[]} Array of objects representing tokens.
+     */
+    getTokens(node, beforeCount, afterCount) {
+        return createCursorWithPadding(
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            node.range[0],
+            node.range[1],
+            beforeCount,
+            afterCount
+        ).getAllTokens();
+    }
+
+    /**
+     * Gets all of the tokens between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right Node after the desired token range.
+     * @param {Function|Object} options The option object. If this is a function then it's `options.filter`.
+     * @param {boolean} [options.includeComments=false] - The flag to iterate comments as well.
+     * @param {Function|null} [options.filter=null] - The predicate function to choose tokens.
+     * @param {number} [options.count=0] - The maximum count of tokens the cursor iterates.
+     * @returns {Token[]} Tokens between left and right.
+     */
+    /**
+     * Gets all of the tokens between two non-overlapping nodes.
+     * @param {ASTNode|Token|Comment} left Node before the desired token range.
+     * @param {ASTNode|Token|Comment} right Node after the desired token range.
+     * @param {int} [padding=0] Number of extra tokens on either side of center.
+     * @returns {Token[]} Tokens between left and right.
+     */
+    getTokensBetween(left, right, padding) {
+        return createCursorWithPadding(
+            this.tokens,
+            this.comments,
+            this.indexMap,
+            left.range[1],
+            right.range[0],
+            padding,
+            padding
+        ).getAllTokens();
+    }
+};
+
+module.exports.PUBLIC_METHODS = PUBLIC_METHODS;
diff --git a/tools/eslint/lib/token-store/limit-cursor.js b/tools/eslint/lib/token-store/limit-cursor.js
new file mode 100644
index 00000000000000..efb46cf0e3f40d
--- /dev/null
+++ b/tools/eslint/lib/token-store/limit-cursor.js
@@ -0,0 +1,40 @@
+/**
+ * @fileoverview Define the cursor which limits the number of tokens.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const DecorativeCursor = require("./decorative-cursor");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The decorative cursor which limits the number of tokens.
+ */
+module.exports = class LimitCursor extends DecorativeCursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Cursor} cursor - The cursor to be decorated.
+     * @param {number} count - The count of tokens this cursor iterates.
+     */
+    constructor(cursor, count) {
+        super(cursor);
+        this.count = count;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        if (this.count > 0) {
+            this.count -= 1;
+            return super.moveNext();
+        }
+        return false;
+    }
+};
diff --git a/tools/eslint/lib/token-store/padded-token-cursor.js b/tools/eslint/lib/token-store/padded-token-cursor.js
new file mode 100644
index 00000000000000..c083aed1e9bab9
--- /dev/null
+++ b/tools/eslint/lib/token-store/padded-token-cursor.js
@@ -0,0 +1,38 @@
+/**
+ * @fileoverview Define the cursor which iterates tokens only, with inflated range.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const ForwardTokenCursor = require("./forward-token-cursor");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The cursor which iterates tokens only, with inflated range.
+ * This is for the backward compatibility of padding options.
+ */
+module.exports = class PaddedTokenCursor extends ForwardTokenCursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Token[]} tokens - The array of tokens.
+     * @param {Comment[]} comments - The array of comments.
+     * @param {Object} indexMap - The map from locations to indices in `tokens`.
+     * @param {number} startLoc - The start location of the iteration range.
+     * @param {number} endLoc - The end location of the iteration range.
+     * @param {number} beforeCount - The number of tokens this cursor iterates before start.
+     * @param {number} afterCount - The number of tokens this cursor iterates after end.
+     */
+    constructor(tokens, comments, indexMap, startLoc, endLoc, beforeCount, afterCount) {
+        super(tokens, comments, indexMap, startLoc, endLoc);
+        this.index = Math.max(0, this.index - beforeCount);
+        this.indexEnd = Math.min(tokens.length - 1, this.indexEnd + afterCount);
+    }
+};
diff --git a/tools/eslint/lib/token-store/skip-cursor.js b/tools/eslint/lib/token-store/skip-cursor.js
new file mode 100644
index 00000000000000..ab34dfab0db3c6
--- /dev/null
+++ b/tools/eslint/lib/token-store/skip-cursor.js
@@ -0,0 +1,42 @@
+/**
+ * @fileoverview Define the cursor which ignores the first few tokens.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const DecorativeCursor = require("./decorative-cursor");
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * The decorative cursor which ignores the first few tokens.
+ */
+module.exports = class SkipCursor extends DecorativeCursor {
+
+    /**
+     * Initializes this cursor.
+     * @param {Cursor} cursor - The cursor to be decorated.
+     * @param {number} count - The count of tokens this cursor skips.
+     */
+    constructor(cursor, count) {
+        super(cursor);
+        this.count = count;
+    }
+
+    /** @inheritdoc */
+    moveNext() {
+        while (this.count > 0) {
+            this.count -= 1;
+            if (!super.moveNext()) {
+                return false;
+            }
+        }
+        return super.moveNext();
+    }
+};
diff --git a/tools/eslint/lib/token-store/utils.js b/tools/eslint/lib/token-store/utils.js
new file mode 100644
index 00000000000000..f83b6cf699999c
--- /dev/null
+++ b/tools/eslint/lib/token-store/utils.js
@@ -0,0 +1,100 @@
+/**
+ * @fileoverview Define utilify functions for token store.
+ * @author Toru Nagashima
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const lodash = require("lodash");
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+ * Gets `token.range[0]` from the given token.
+ *
+ * @param {Node|Token|Comment} token - The token to get.
+ * @returns {number} The start location.
+ * @private
+ */
+function getStartLocation(token) {
+    return token.range[0];
+}
+
+//------------------------------------------------------------------------------
+// Exports
+//------------------------------------------------------------------------------
+
+/**
+ * Binary-searches the index of the first token which is after the given location.
+ * If it was not found, this returns `tokens.length`.
+ *
+ * @param {(Token|Comment)[]} tokens - It searches the token in this list.
+ * @param {number} location - The location to search.
+ * @returns {number} The found index or `tokens.length`.
+ */
+exports.search = function search(tokens, location) {
+    return lodash.sortedIndexBy(
+        tokens,
+        { range: [location] },
+        getStartLocation
+    );
+};
+
+/**
+ * Gets the index of the `startLoc` in `tokens`.
+ * `startLoc` can be the value of `node.range[1]`, so this checks about `startLoc - 1` as well.
+ *
+ * @param {(Token|Comment)[]} tokens - The tokens to find an index.
+ * @param {Object} indexMap - The map from locations to indices.
+ * @param {number} startLoc - The location to get an index.
+ * @returns {number} The index.
+ */
+exports.getFirstIndex = function getFirstIndex(tokens, indexMap, startLoc) {
+    if (startLoc in indexMap) {
+        return indexMap[startLoc];
+    }
+    if ((startLoc - 1) in indexMap) {
+        const index = indexMap[startLoc - 1];
+        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null;
+
+        // For the map of "comment's location -> token's index", it points the next token of a comment.
+        // In that case, +1 is unnecessary.
+        if (token && token.range[0] >= startLoc) {
+            return index;
+        }
+        return index + 1;
+    }
+    return 0;
+};
+
+/**
+ * Gets the index of the `endLoc` in `tokens`.
+ * The information of end locations are recorded at `endLoc - 1` in `indexMap`, so this checks about `endLoc - 1` as well.
+ *
+ * @param {(Token|Comment)[]} tokens - The tokens to find an index.
+ * @param {Object} indexMap - The map from locations to indices.
+ * @param {number} endLoc - The location to get an index.
+ * @returns {number} The index.
+ */
+exports.getLastIndex = function getLastIndex(tokens, indexMap, endLoc) {
+    if (endLoc in indexMap) {
+        return indexMap[endLoc] - 1;
+    }
+    if ((endLoc - 1) in indexMap) {
+        const index = indexMap[endLoc - 1];
+        const token = (index >= 0 && index < tokens.length) ? tokens[index] : null;
+
+        // For the map of "comment's location -> token's index", it points the next token of a comment.
+        // In that case, -1 is necessary.
+        if (token && token.range[1] > endLoc) {
+            return index - 1;
+        }
+        return index;
+    }
+    return tokens.length - 1;
+};
diff --git a/tools/eslint/lib/util/comment-event-generator.js b/tools/eslint/lib/util/comment-event-generator.js
index dfa7132ff850ef..239a9834d0ed20 100644
--- a/tools/eslint/lib/util/comment-event-generator.js
+++ b/tools/eslint/lib/util/comment-event-generator.js
@@ -70,46 +70,47 @@ function emitCommentsExit(generator, comments) {
  * This is the decorator pattern.
  * This generates events of comments before/after events which are generated the original generator.
  *
- * @param {EventGenerator} originalEventGenerator - An event generator which is the decoration target.
- * @param {SourceCode} sourceCode - A source code which has comments.
- * @returns {CommentEventGenerator} new instance.
+ * Comment event generator class
  */
-function CommentEventGenerator(originalEventGenerator, sourceCode) {
-    this.original = originalEventGenerator;
-    this.emitter = originalEventGenerator.emitter;
-    this.sourceCode = sourceCode;
-    this.commentLocsEnter = [];
-    this.commentLocsExit = [];
-}
+class CommentEventGenerator {
 
-CommentEventGenerator.prototype = {
-    constructor: CommentEventGenerator,
+    /**
+     * @param {EventGenerator} originalEventGenerator - An event generator which is the decoration target.
+     * @param {SourceCode} sourceCode - A source code which has comments.
+     */
+    constructor(originalEventGenerator, sourceCode) {
+        this.original = originalEventGenerator;
+        this.emitter = originalEventGenerator.emitter;
+        this.sourceCode = sourceCode;
+        this.commentLocsEnter = [];
+        this.commentLocsExit = [];
+    }
 
     /**
      * Emits an event of entering comments.
      * @param {ASTNode} node - A node which was entered.
      * @returns {void}
      */
-    enterNode: function enterNode(node) {
+    enterNode(node) {
         const comments = this.sourceCode.getComments(node);
 
         emitCommentsEnter(this, comments.leading);
         this.original.enterNode(node);
         emitCommentsEnter(this, comments.trailing);
-    },
+    }
 
     /**
      * Emits an event of leaving comments.
      * @param {ASTNode} node - A node which was left.
      * @returns {void}
      */
-    leaveNode: function leaveNode(node) {
+    leaveNode(node) {
         const comments = this.sourceCode.getComments(node);
 
         emitCommentsExit(this, comments.trailing);
         this.original.leaveNode(node);
         emitCommentsExit(this, comments.leading);
     }
-};
+}
 
 module.exports = CommentEventGenerator;
diff --git a/tools/eslint/lib/util/fix-tracker.js b/tools/eslint/lib/util/fix-tracker.js
new file mode 100644
index 00000000000000..189072e1abc161
--- /dev/null
+++ b/tools/eslint/lib/util/fix-tracker.js
@@ -0,0 +1,121 @@
+/**
+ * @fileoverview Helper class to aid in constructing fix commands.
+ * @author Alan Pierce
+ */
+"use strict";
+
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const astUtils = require("../ast-utils");
+
+//------------------------------------------------------------------------------
+// Public Interface
+//------------------------------------------------------------------------------
+
+/**
+ * A helper class to combine fix options into a fix command. Currently, it
+ * exposes some "retain" methods that extend the range of the text being
+ * replaced so that other fixes won't touch that region in the same pass.
+ */
+class FixTracker {
+
+    /**
+     * Create a new FixTracker.
+     *
+     * @param {ruleFixer} fixer A ruleFixer instance.
+     * @param {SourceCode} sourceCode A SourceCode object for the current code.
+     */
+    constructor(fixer, sourceCode) {
+        this.fixer = fixer;
+        this.sourceCode = sourceCode;
+        this.retainedRange = null;
+    }
+
+    /**
+     * Mark the given range as "retained", meaning that other fixes may not
+     * may not modify this region in the same pass.
+     *
+     * @param {int[]} range The range to retain.
+     * @returns {FixTracker} The same RuleFixer, for chained calls.
+     */
+    retainRange(range) {
+        this.retainedRange = range;
+        return this;
+    }
+
+    /**
+     * Given a node, find the function containing it (or the entire program) and
+     * mark it as retained, meaning that other fixes may not modify it in this
+     * pass. This is useful for avoiding conflicts in fixes that modify control
+     * flow.
+     *
+     * @param {ASTNode} node The node to use as a starting point.
+     * @returns {FixTracker} The same RuleFixer, for chained calls.
+     */
+    retainEnclosingFunction(node) {
+        const functionNode = astUtils.getUpperFunction(node);
+
+        return this.retainRange(
+            functionNode ? functionNode.range : this.sourceCode.ast.range);
+    }
+
+    /**
+     * Given a node or token, find the token before and afterward, and mark that
+     * range as retained, meaning that other fixes may not modify it in this
+     * pass. This is useful for avoiding conflicts in fixes that make a small
+     * change to the code where the AST should not be changed.
+     *
+     * @param {ASTNode|Token} nodeOrToken The node or token to use as a starting
+     *      point. The token to the left and right are use in the range.
+     * @returns {FixTracker} The same RuleFixer, for chained calls.
+     */
+    retainSurroundingTokens(nodeOrToken) {
+        const tokenBefore = this.sourceCode.getTokenBefore(nodeOrToken) || nodeOrToken;
+        const tokenAfter = this.sourceCode.getTokenAfter(nodeOrToken) || nodeOrToken;
+
+        return this.retainRange([tokenBefore.range[0], tokenAfter.range[1]]);
+    }
+
+    /**
+     * Create a fix command that replaces the given range with the given text,
+     * accounting for any retained ranges.
+     *
+     * @param {int[]} range The range to remove in the fix.
+     * @param {string} text The text to insert in place of the range.
+     * @returns {Object} The fix command.
+     */
+    replaceTextRange(range, text) {
+        let actualRange;
+
+        if (this.retainedRange) {
+            actualRange = [
+                Math.min(this.retainedRange[0], range[0]),
+                Math.max(this.retainedRange[1], range[1])
+            ];
+        } else {
+            actualRange = range;
+        }
+
+        return this.fixer.replaceTextRange(
+            actualRange,
+            this.sourceCode.text.slice(actualRange[0], range[0]) +
+                text +
+                this.sourceCode.text.slice(range[1], actualRange[1])
+        );
+    }
+
+    /**
+     * Create a fix command that removes the given node or token, accounting for
+     * any retained ranges.
+     *
+     * @param {ASTNode|Token} nodeOrToken The node or token to remove.
+     * @returns {Object} The fix command.
+     */
+    remove(nodeOrToken) {
+        return this.replaceTextRange(nodeOrToken.range, "");
+    }
+}
+
+module.exports = FixTracker;
diff --git a/tools/eslint/lib/util/glob-util.js b/tools/eslint/lib/util/glob-util.js
index 198e069e9f0850..4c21fc55106d99 100644
--- a/tools/eslint/lib/util/glob-util.js
+++ b/tools/eslint/lib/util/glob-util.js
@@ -86,7 +86,7 @@ function resolveFileGlobPatterns(patterns, options) {
 
     const processPathExtensions = processPath(options);
 
-    return patterns.map(processPathExtensions);
+    return patterns.filter(p => p.length).map(processPathExtensions);
 }
 
 /**
@@ -165,7 +165,7 @@ function listFilesToProcess(globPatterns, options) {
             const globOptions = {
                 nodir: true,
                 dot: true,
-                cwd,
+                cwd
             };
 
             new GlobSync(pattern, globOptions, shouldIgnore).found.forEach(globMatch => {
diff --git a/tools/eslint/lib/util/glob.js b/tools/eslint/lib/util/glob.js
index 915dcff08ef186..a231e16f4d0bce 100644
--- a/tools/eslint/lib/util/glob.js
+++ b/tools/eslint/lib/util/glob.js
@@ -15,7 +15,7 @@ const Sync = require("glob").GlobSync,
 // Private
 //------------------------------------------------------------------------------
 
-const IGNORE = typeof Symbol === "function" ? Symbol("ignore") : "_shouldIgnore";
+const IGNORE = Symbol("ignore");
 
 /**
  * Subclass of `glob.GlobSync`
diff --git a/tools/eslint/lib/util/node-event-generator.js b/tools/eslint/lib/util/node-event-generator.js
index 1666ae93f53406..568a3b7fe104be 100644
--- a/tools/eslint/lib/util/node-event-generator.js
+++ b/tools/eslint/lib/util/node-event-generator.js
@@ -5,6 +5,185 @@
 
 "use strict";
 
+//------------------------------------------------------------------------------
+// Requirements
+//------------------------------------------------------------------------------
+
+const esquery = require("esquery");
+const lodash = require("lodash");
+
+//------------------------------------------------------------------------------
+// Typedefs
+//------------------------------------------------------------------------------
+
+/**
+ * An object describing an AST selector
+ * @typedef {Object} ASTSelector
+ * @property {string} rawSelector The string that was parsed into this selector
+ * @property {boolean} isExit `true` if this should be emitted when exiting the node rather than when entering
+ * @property {Object} parsedSelector An object (from esquery) describing the matching behavior of the selector
+ * @property {string[]|null} listenerTypes A list of node types that could possibly cause the selector to match,
+ * or `null` if all node types could cause a match
+ * @property {number} attributeCount The total number of classes, pseudo-classes, and attribute queries in this selector
+ * @property {number} identifierCount The total number of identifier queries in this selector
+ */
+
+//------------------------------------------------------------------------------
+// Helpers
+//------------------------------------------------------------------------------
+
+/**
+* Gets the possible types of a selector
+* @param {Object} parsedSelector An object (from esquery) describing the matching behavior of the selector
+* @returns {string[]|null} The node types that could possibly trigger this selector, or `null` if all node types could trigger it
+*/
+function getPossibleTypes(parsedSelector) {
+    switch (parsedSelector.type) {
+        case "identifier":
+            return [parsedSelector.value];
+
+        case "matches": {
+            const typesForComponents = parsedSelector.selectors.map(getPossibleTypes);
+
+            if (typesForComponents.every(typesForComponent => typesForComponent)) {
+                return lodash.union.apply(null, typesForComponents);
+            }
+            return null;
+        }
+
+        case "compound": {
+            const typesForComponents = parsedSelector.selectors.map(getPossibleTypes).filter(typesForComponent => typesForComponent);
+
+            // If all of the components could match any type, then the compound could also match any type.
+            if (!typesForComponents.length) {
+                return null;
+            }
+
+            /*
+             * If at least one of the components could only match a particular type, the compound could only match
+             * the intersection of those types.
+             */
+            return lodash.intersection.apply(null, typesForComponents);
+        }
+
+        case "child":
+        case "descendant":
+        case "sibling":
+        case "adjacent":
+            return getPossibleTypes(parsedSelector.right);
+
+        default:
+            return null;
+
+    }
+}
+
+/**
+ * Counts the number of class, pseudo-class, and attribute queries in this selector
+ * @param {Object} parsedSelector An object (from esquery) describing the selector's matching behavior
+ * @returns {number} The number of class, pseudo-class, and attribute queries in this selector
+ */
+function countClassAttributes(parsedSelector) {
+    switch (parsedSelector.type) {
+        case "child":
+        case "descendant":
+        case "sibling":
+        case "adjacent":
+            return countClassAttributes(parsedSelector.left) + countClassAttributes(parsedSelector.right);
+
+        case "compound":
+        case "not":
+        case "matches":
+            return parsedSelector.selectors.reduce((sum, childSelector) => sum + countClassAttributes(childSelector), 0);
+
+        case "attribute":
+        case "field":
+        case "nth-child":
+        case "nth-last-child":
+            return 1;
+
+        default:
+            return 0;
+    }
+}
+
+/**
+ * Counts the number of identifier queries in this selector
+ * @param {Object} parsedSelector An object (from esquery) describing the selector's matching behavior
+ * @returns {number} The number of identifier queries
+ */
+function countIdentifiers(parsedSelector) {
+    switch (parsedSelector.type) {
+        case "child":
+        case "descendant":
+        case "sibling":
+        case "adjacent":
+            return countIdentifiers(parsedSelector.left) + countIdentifiers(parsedSelector.right);
+
+        case "compound":
+        case "not":
+        case "matches":
+            return parsedSelector.selectors.reduce((sum, childSelector) => sum + countIdentifiers(childSelector), 0);
+
+        case "identifier":
+            return 1;
+
+        default:
+            return 0;
+    }
+}
+
+/**
+ * Compares the specificity of two selector objects, with CSS-like rules.
+ * @param {ASTSelector} selectorA An AST selector descriptor
+ * @param {ASTSelector} selectorB Another AST selector descriptor
+ * @returns {number}
+ * a value less than 0 if selectorA is less specific than selectorB
+ * a value greater than 0 if selectorA is more specific than selectorB
+ * a value less than 0 if selectorA and selectorB have the same specificity, and selectorA <= selectorB alphabetically
+ * a value greater than 0 if selectorA and selectorB have the same specificity, and selectorA > selectorB alphabetically
+ */
+function compareSpecificity(selectorA, selectorB) {
+    return selectorA.attributeCount - selectorB.attributeCount ||
+        selectorA.identifierCount - selectorB.identifierCount ||
+        (selectorA.rawSelector <= selectorB.rawSelector ? -1 : 1);
+}
+
+/**
+ * Parses a raw selector string, and throws a useful error if parsing fails.
+ * @param {string} rawSelector A raw AST selector
+ * @returns {Object} An object (from esquery) describing the matching behavior of this selector
+ * @throws {Error} An error if the selector is invalid
+ */
+function tryParseSelector(rawSelector) {
+    try {
+        return esquery.parse(rawSelector.replace(/:exit$/, ""));
+    } catch (err) {
+        if (typeof err.offset === "number") {
+            throw new Error(`Syntax error in selector "${rawSelector}" at position ${err.offset}: ${err.message}`);
+        }
+        throw err;
+    }
+}
+
+/**
+ * Parses a raw selector string, and returns the parsed selector along with specificity and type information.
+ * @param {string} rawSelector A raw AST selector
+ * @returns {ASTSelector} A selector descriptor
+ */
+const parseSelector = lodash.memoize(rawSelector => {
+    const parsedSelector = tryParseSelector(rawSelector);
+
+    return {
+        rawSelector,
+        isExit: rawSelector.endsWith(":exit"),
+        parsedSelector,
+        listenerTypes: getPossibleTypes(parsedSelector),
+        attributeCount: countClassAttributes(parsedSelector),
+        identifierCount: countIdentifiers(parsedSelector)
+    };
+});
+
 //------------------------------------------------------------------------------
 // Public Interface
 //------------------------------------------------------------------------------
@@ -24,10 +203,97 @@
 class NodeEventGenerator {
 
     /**
-     * @param {EventEmitter} emitter - An event emitter which is the destination of events.
-     */
+    * @param {EventEmitter} emitter - An event emitter which is the destination of events. This emitter must already
+    * have registered listeners for all of the events that it needs to listen for.
+    * @returns {NodeEventGenerator} new instance
+    */
     constructor(emitter) {
         this.emitter = emitter;
+        this.currentAncestry = [];
+        this.enterSelectorsByNodeType = new Map();
+        this.exitSelectorsByNodeType = new Map();
+        this.anyTypeEnterSelectors = [];
+        this.anyTypeExitSelectors = [];
+
+        const eventNames = typeof emitter.eventNames === "function"
+
+            // Use the built-in eventNames() function if available (Node 6+)
+            ? emitter.eventNames()
+
+            /*
+             * Otherwise, use the private _events property.
+             * Using a private property isn't ideal here, but this seems to
+             * be the best way to get a list of event names without overriding
+             * addEventListener, which would hurt performance. This property
+             * is widely used and unlikely to be removed in a future version
+             * (see https://github.com/nodejs/node/issues/1817). Also, future
+             * node versions will have eventNames() anyway.
+             */
+            : Object.keys(emitter._events); // eslint-disable-line no-underscore-dangle
+
+        eventNames.forEach(rawSelector => {
+            const selector = parseSelector(rawSelector);
+
+            if (selector.listenerTypes) {
+                selector.listenerTypes.forEach(nodeType => {
+                    const typeMap = selector.isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType;
+
+                    if (!typeMap.has(nodeType)) {
+                        typeMap.set(nodeType, []);
+                    }
+                    typeMap.get(nodeType).push(selector);
+                });
+            } else {
+                (selector.isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors).push(selector);
+            }
+        });
+
+        this.anyTypeEnterSelectors.sort(compareSpecificity);
+        this.anyTypeExitSelectors.sort(compareSpecificity);
+        this.enterSelectorsByNodeType.forEach(selectorList => selectorList.sort(compareSpecificity));
+        this.exitSelectorsByNodeType.forEach(selectorList => selectorList.sort(compareSpecificity));
+    }
+
+    /**
+     * Checks a selector against a node, and emits it if it matches
+     * @param {ASTNode} node The node to check
+     * @param {ASTSelector} selector An AST selector descriptor
+     * @returns {void}
+     */
+    applySelector(node, selector) {
+        if (esquery.matches(node, selector.parsedSelector, this.currentAncestry)) {
+            this.emitter.emit(selector.rawSelector, node);
+        }
+    }
+
+    /**
+     * Applies all appropriate selectors to a node, in specificity order
+     * @param {ASTNode} node The node to check
+     * @param {boolean} isExit `false` if the node is currently being entered, `true` if it's currently being exited
+     * @returns {void}
+     */
+    applySelectors(node, isExit) {
+        const selectorsByNodeType = (isExit ? this.exitSelectorsByNodeType : this.enterSelectorsByNodeType).get(node.type) || [];
+        const anyTypeSelectors = isExit ? this.anyTypeExitSelectors : this.anyTypeEnterSelectors;
+
+        /*
+         * selectorsByNodeType and anyTypeSelectors were already sorted by specificity in the constructor.
+         * Iterate through each of them, applying selectors in the right order.
+         */
+        let selectorsByTypeIndex = 0;
+        let anyTypeSelectorsIndex = 0;
+
+        while (selectorsByTypeIndex < selectorsByNodeType.length || anyTypeSelectorsIndex < anyTypeSelectors.length) {
+            if (
+                selectorsByTypeIndex >= selectorsByNodeType.length ||
+                anyTypeSelectorsIndex < anyTypeSelectors.length &&
+                compareSpecificity(anyTypeSelectors[anyTypeSelectorsIndex], selectorsByNodeType[selectorsByTypeIndex]) < 0
+            ) {
+                this.applySelector(node, anyTypeSelectors[anyTypeSelectorsIndex++]);
+            } else {
+                this.applySelector(node, selectorsByNodeType[selectorsByTypeIndex++]);
+            }
+        }
     }
 
     /**
@@ -36,7 +302,10 @@ class NodeEventGenerator {
      * @returns {void}
      */
     enterNode(node) {
-        this.emitter.emit(node.type, node);
+        if (node.parent) {
+            this.currentAncestry.unshift(node.parent);
+        }
+        this.applySelectors(node, false);
     }
 
     /**
@@ -45,7 +314,8 @@ class NodeEventGenerator {
      * @returns {void}
      */
     leaveNode(node) {
-        this.emitter.emit(`${node.type}:exit`, node);
+        this.applySelectors(node, true);
+        this.currentAncestry.shift();
     }
 }
 
diff --git a/tools/eslint/lib/util/rule-fixer.js b/tools/eslint/lib/util/rule-fixer.js
index e6afe85f502f38..bdd80d13b162d4 100644
--- a/tools/eslint/lib/util/rule-fixer.js
+++ b/tools/eslint/lib/util/rule-fixer.js
@@ -34,14 +34,9 @@ function insertTextAt(index, text) {
 
 /**
  * Creates code fixing commands for rules.
- * @constructor
  */
-function RuleFixer() {
-    Object.freeze(this);
-}
 
-RuleFixer.prototype = {
-    constructor: RuleFixer,
+const ruleFixer = Object.freeze({
 
     /**
      * Creates a fix command that inserts text after the given node or token.
@@ -139,7 +134,7 @@ RuleFixer.prototype = {
         };
     }
 
-};
+});
 
 
-module.exports = RuleFixer;
+module.exports = ruleFixer;
diff --git a/tools/eslint/lib/util/source-code-fixer.js b/tools/eslint/lib/util/source-code-fixer.js
index 3b702e509e77a4..6490a467fa725b 100644
--- a/tools/eslint/lib/util/source-code-fixer.js
+++ b/tools/eslint/lib/util/source-code-fixer.js
@@ -16,6 +16,17 @@ const debug = require("debug")("eslint:text-fixer");
 
 const BOM = "\uFEFF";
 
+/**
+ * Compares items in a messages array by range.
+ * @param {Message} a The first message.
+ * @param {Message} b The second message.
+ * @returns {int} -1 if a comes before b, 1 if a comes after b, 0 if equal.
+ * @private
+ */
+function compareMessagesByFixRange(a, b) {
+    return a.fix.range[0] - b.fix.range[0] || a.fix.range[1] - b.fix.range[1];
+}
+
 /**
  * Compares items in a messages array by line and column.
  * @param {Message} a The first message.
@@ -24,13 +35,7 @@ const BOM = "\uFEFF";
  * @private
  */
 function compareMessagesByLocation(a, b) {
-    const lineDiff = a.line - b.line;
-
-    if (lineDiff === 0) {
-        return a.column - b.column;
-    } else {
-        return lineDiff;
-    }
+    return a.line - b.line || a.column - b.column;
 }
 
 //------------------------------------------------------------------------------
@@ -68,9 +73,10 @@ SourceCodeFixer.applyFixes = function(sourceCode, messages) {
     // clone the array
     const remainingMessages = [],
         fixes = [],
+        bom = (sourceCode.hasBOM ? BOM : ""),
         text = sourceCode.text;
-    let lastFixPos = text.length + 1,
-        prefix = (sourceCode.hasBOM ? BOM : "");
+    let lastPos = Number.NEGATIVE_INFINITY,
+        output = bom;
 
     messages.forEach(problem => {
         if (problem.hasOwnProperty("fix")) {
@@ -83,53 +89,43 @@ SourceCodeFixer.applyFixes = function(sourceCode, messages) {
     if (fixes.length) {
         debug("Found fixes to apply");
 
-        // sort in reverse order of occurrence
-        fixes.sort((a, b) => b.fix.range[1] - a.fix.range[1] || b.fix.range[0] - a.fix.range[0]);
-
-        // split into array of characters for easier manipulation
-        const chars = text.split("");
-
-        fixes.forEach(problem => {
+        for (const problem of fixes.sort(compareMessagesByFixRange)) {
             const fix = problem.fix;
-            let start = fix.range[0];
+            const start = fix.range[0];
             const end = fix.range[1];
-            let insertionText = fix.text;
-
-            if (end < lastFixPos) {
-                if (start < 0) {
 
-                    // Remove BOM.
-                    prefix = "";
-                    start = 0;
-                }
-
-                if (start === 0 && insertionText[0] === BOM) {
-
-                    // Set BOM.
-                    prefix = BOM;
-                    insertionText = insertionText.slice(1);
-                }
-
-                chars.splice(start, end - start, insertionText);
-                lastFixPos = start;
-            } else {
+            // Remain it as a problem if it's overlapped or it's a negative range
+            if (lastPos >= start || start > end) {
                 remainingMessages.push(problem);
+                continue;
             }
-        });
+
+            // Remove BOM.
+            if ((start < 0 && end >= 0) || (start === 0 && fix.text.startsWith(BOM))) {
+                output = "";
+            }
+
+            // Make output to this fix.
+            output += text.slice(Math.max(0, lastPos), Math.max(0, start));
+            output += fix.text;
+            lastPos = end;
+        }
+        output += text.slice(Math.max(0, lastPos));
 
         return {
             fixed: true,
             messages: remainingMessages.sort(compareMessagesByLocation),
-            output: prefix + chars.join("")
-        };
-    } else {
-        debug("No fixes to apply");
-        return {
-            fixed: false,
-            messages,
-            output: prefix + text
+            output
         };
     }
+
+    debug("No fixes to apply");
+    return {
+        fixed: false,
+        messages,
+        output: bom + text
+    };
+
 };
 
 module.exports = SourceCodeFixer;
diff --git a/tools/eslint/lib/util/source-code.js b/tools/eslint/lib/util/source-code.js
index 5d073039d81cd7..5106c1e61fa98a 100644
--- a/tools/eslint/lib/util/source-code.js
+++ b/tools/eslint/lib/util/source-code.js
@@ -8,8 +8,10 @@
 // Requirements
 //------------------------------------------------------------------------------
 
-const createTokenStore = require("../token-store.js"),
-    Traverser = require("./traverser");
+const TokenStore = require("../token-store"),
+    Traverser = require("./traverser"),
+    astUtils = require("../ast-utils"),
+    lodash = require("lodash");
 
 //------------------------------------------------------------------------------
 // Private
@@ -56,9 +58,9 @@ function findJSDocComment(comments, line) {
 
                 if (line - comments[i].loc.end.line <= 1) {
                     return comments[i];
-                } else {
-                    break;
                 }
+                break;
+
             }
         }
     }
@@ -77,6 +79,28 @@ function looksLikeExport(astNode) {
         astNode.type === "ExportAllDeclaration" || astNode.type === "ExportSpecifier";
 }
 
+/**
+ * Merges two sorted lists into a larger sorted list in O(n) time
+ * @param {Token[]} tokens The list of tokens
+ * @param {Token[]} comments The list of comments
+ * @returns {Token[]} A sorted list of tokens and comments
+ */
+function sortedMerge(tokens, comments) {
+    const result = [];
+    let tokenIndex = 0;
+    let commentIndex = 0;
+
+    while (tokenIndex < tokens.length || commentIndex < comments.length) {
+        if (commentIndex >= comments.length || tokenIndex < tokens.length && tokens[tokenIndex].range[0] < comments[commentIndex].range[0]) {
+            result.push(tokens[tokenIndex++]);
+        } else {
+            result.push(comments[commentIndex++]);
+        }
+    }
+
+    return result;
+}
+
 
 //------------------------------------------------------------------------------
 // Public Interface
@@ -115,23 +139,35 @@ function SourceCode(text, ast) {
      * This is done to avoid each rule needing to do so separately.
      * @type string[]
      */
-    this.lines = SourceCode.splitLines(this.text);
+    this.lines = [];
+    this.lineStartIndices = [0];
+
+    const lineEndingPattern = astUtils.createGlobalLinebreakMatcher();
+    let match;
+
+    /*
+     * Previously, this was implemented using a regex that
+     * matched a sequence of non-linebreak characters followed by a
+     * linebreak, then adding the lengths of the matches. However,
+     * this caused a catastrophic backtracking issue when the end
+     * of a file contained a large number of non-newline characters.
+     * To avoid this, the current implementation just matches newlines
+     * and uses match.index to get the correct line start indices.
+     */
+    while ((match = lineEndingPattern.exec(this.text))) {
+        this.lines.push(this.text.slice(this.lineStartIndices[this.lineStartIndices.length - 1], match.index));
+        this.lineStartIndices.push(match.index + match[0].length);
+    }
+    this.lines.push(this.text.slice(this.lineStartIndices[this.lineStartIndices.length - 1]));
 
-    this.tokensAndComments = ast.tokens
-        .concat(ast.comments)
-        .sort((left, right) => left.range[0] - right.range[0]);
+    this.tokensAndComments = sortedMerge(ast.tokens, ast.comments);
 
     // create token store methods
-    const tokenStore = createTokenStore(ast.tokens);
+    const tokenStore = new TokenStore(ast.tokens, ast.comments);
 
-    Object.keys(tokenStore).forEach(methodName => {
-        this[methodName] = tokenStore[methodName];
-    });
-
-    const tokensAndCommentsStore = createTokenStore(this.tokensAndComments);
-
-    this.getTokenOrCommentBefore = tokensAndCommentsStore.getTokenBefore;
-    this.getTokenOrCommentAfter = tokensAndCommentsStore.getTokenAfter;
+    for (const methodName of TokenStore.PUBLIC_METHODS) {
+        this[methodName] = tokenStore[methodName].bind(tokenStore);
+    }
 
     // don't allow modification of this object
     Object.freeze(this);
@@ -145,7 +181,7 @@ function SourceCode(text, ast) {
  * @public
  */
 SourceCode.splitLines = function(text) {
-    return text.split(/\r\n|\r|\n|\u2028|\u2029/g);
+    return text.split(astUtils.createGlobalLinebreakMatcher());
 };
 
 SourceCode.prototype = {
@@ -162,9 +198,9 @@ SourceCode.prototype = {
         if (node) {
             return this.text.slice(Math.max(node.range[0] - (beforeCount || 0), 0),
                 node.range[1] + (afterCount || 0));
-        } else {
-            return this.text;
         }
+        return this.text;
+
 
     },
 
@@ -296,6 +332,83 @@ SourceCode.prototype = {
         const text = this.text.slice(first.range[1], second.range[0]);
 
         return /\s/.test(text.replace(/\/\*.*?\*\//g, ""));
+    },
+
+    /**
+    * Converts a source text index into a (line, column) pair.
+    * @param {number} index The index of a character in a file
+    * @returns {Object} A {line, column} location object with a 0-indexed column
+    */
+    getLocFromIndex(index) {
+        if (typeof index !== "number") {
+            throw new TypeError("Expected `index` to be a number.");
+        }
+
+        if (index < 0 || index > this.text.length) {
+            throw new RangeError(`Index out of range (requested index ${index}, but source text has length ${this.text.length}).`);
+        }
+
+        /*
+         * For an argument of this.text.length, return the location one "spot" past the last character
+         * of the file. If the last character is a linebreak, the location will be column 0 of the next
+         * line; otherwise, the location will be in the next column on the same line.
+         *
+         * See getIndexFromLoc for the motivation for this special case.
+         */
+        if (index === this.text.length) {
+            return { line: this.lines.length, column: this.lines[this.lines.length - 1].length };
+        }
+
+        /*
+         * To figure out which line rangeIndex is on, determine the last index at which rangeIndex could
+         * be inserted into lineIndices to keep the list sorted.
+         */
+        const lineNumber = lodash.sortedLastIndex(this.lineStartIndices, index);
+
+        return { line: lineNumber, column: index - this.lineStartIndices[lineNumber - 1] };
+
+    },
+
+    /**
+    * Converts a (line, column) pair into a range index.
+    * @param {Object} loc A line/column location
+    * @param {number} loc.line The line number of the location (1-indexed)
+    * @param {number} loc.column The column number of the location (0-indexed)
+    * @returns {number} The range index of the location in the file.
+    */
+    getIndexFromLoc(loc) {
+        if (typeof loc !== "object" || typeof loc.line !== "number" || typeof loc.column !== "number") {
+            throw new TypeError("Expected `loc` to be an object with numeric `line` and `column` properties.");
+        }
+
+        if (loc.line <= 0) {
+            throw new RangeError(`Line number out of range (line ${loc.line} requested). Line numbers should be 1-based.`);
+        }
+
+        if (loc.line > this.lineStartIndices.length) {
+            throw new RangeError(`Line number out of range (line ${loc.line} requested, but only ${this.lineStartIndices.length} lines present).`);
+        }
+
+        const lineStartIndex = this.lineStartIndices[loc.line - 1];
+        const lineEndIndex = loc.line === this.lineStartIndices.length ? this.text.length : this.lineStartIndices[loc.line];
+        const positionIndex = lineStartIndex + loc.column;
+
+        /*
+         * By design, getIndexFromLoc({ line: lineNum, column: 0 }) should return the start index of
+         * the given line, provided that the line number is valid element of this.lines. Since the
+         * last element of this.lines is an empty string for files with trailing newlines, add a
+         * special case where getting the index for the first location after the end of the file
+         * will return the length of the file, rather than throwing an error. This allows rules to
+         * use getIndexFromLoc consistently without worrying about edge cases at the end of a file.
+         */
+        if (
+            loc.line === this.lineStartIndices.length && positionIndex > lineEndIndex ||
+            loc.line < this.lineStartIndices.length && positionIndex >= lineEndIndex
+        ) {
+            throw new RangeError(`Column number out of range (column ${loc.column} requested, but the length of line ${loc.line} is ${lineEndIndex - lineStartIndex}).`);
+        }
+
+        return positionIndex;
     }
 };
 
diff --git a/tools/eslint/lib/util/traverser.js b/tools/eslint/lib/util/traverser.js
index d5710bb8ac7b2d..fc070186b3b60e 100644
--- a/tools/eslint/lib/util/traverser.js
+++ b/tools/eslint/lib/util/traverser.js
@@ -14,41 +14,32 @@ const estraverse = require("estraverse");
 // Helpers
 //------------------------------------------------------------------------------
 
-const KEY_BLACKLIST = [
+const KEY_BLACKLIST = new Set([
     "parent",
     "leadingComments",
     "trailingComments"
-];
+]);
 
 /**
  * Wrapper around an estraverse controller that ensures the correct keys
  * are visited.
  * @constructor
  */
-function Traverser() {
-
-    const controller = Object.create(new estraverse.Controller()),
-        originalTraverse = controller.traverse;
-
-    // intercept call to traverse() and add the fallback key to the visitor
-    controller.traverse = function(node, visitor) {
+class Traverser extends estraverse.Controller {
+    traverse(node, visitor) {
         visitor.fallback = Traverser.getKeys;
-        return originalTraverse.call(this, node, visitor);
-    };
-
-    return controller;
+        return super.traverse(node, visitor);
+    }
+
+    /**
+     * Calculates the keys to use for traversal.
+     * @param {ASTNode} node The node to read keys from.
+     * @returns {string[]} An array of keys to visit on the node.
+     * @private
+     */
+    static getKeys(node) {
+        return Object.keys(node).filter(key => !KEY_BLACKLIST.has(key));
+    }
 }
 
-/**
- * Calculates the keys to use for traversal.
- * @param {ASTNode} node The node to read keys from.
- * @returns {string[]} An array of keys to visit on the node.
- * @private
- */
-Traverser.getKeys = function(node) {
-    return Object.keys(node).filter(key => KEY_BLACKLIST.indexOf(key) === -1);
-};
-
 module.exports = Traverser;
-
-
diff --git a/tools/eslint/messages/extend-config-missing.txt b/tools/eslint/messages/extend-config-missing.txt
new file mode 100644
index 00000000000000..38e64581970b0e
--- /dev/null
+++ b/tools/eslint/messages/extend-config-missing.txt
@@ -0,0 +1,3 @@
+ESLint couldn't find the config "<%- configName %>" to extend from. Please check that the name of the config is correct.
+
+If you still have problems, please stop by https://gitter.im/eslint/eslint to chat with the team.
diff --git a/tools/eslint/node_modules/acorn/AUTHORS b/tools/eslint/node_modules/acorn/AUTHORS
index 306404542a3b07..1377f6034ed673 100644
--- a/tools/eslint/node_modules/acorn/AUTHORS
+++ b/tools/eslint/node_modules/acorn/AUTHORS
@@ -23,6 +23,7 @@ Jesse McCarthy
 Jiaxing Wang
 Joel Kemp
 Johannes Herr
+John-David Dalton
 Jordan Klassen
 Jürg Lehni
 Kai Cataldo
@@ -41,6 +42,7 @@ Max Schaefer
 Max Zerzouri
 Mihai Bazon
 Mike Rennie
+naoh
 Nicholas C. Zakas
 Nick Fitzgerald
 Olivier Thomann
@@ -55,6 +57,8 @@ Richard Gibson
 Rich Harris
 Sebastian McKenzie
 Simen Bekkhus
+Teddy Katz
 Timothy Gu
 Toru Nagashima
+Wexpo Lyu
 zsjforcn
diff --git a/tools/eslint/node_modules/acorn/README.md b/tools/eslint/node_modules/acorn/README.md
index 82dc28717adfe0..2186c7e70d136e 100644
--- a/tools/eslint/node_modules/acorn/README.md
+++ b/tools/eslint/node_modules/acorn/README.md
@@ -1,7 +1,8 @@
 # Acorn
 
 [![Build Status](https://travis-ci.org/ternjs/acorn.svg?branch=master)](https://travis-ci.org/ternjs/acorn)
-[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn)  
+[![NPM version](https://img.shields.io/npm/v/acorn.svg)](https://www.npmjs.com/package/acorn)
+[![CDNJS](https://img.shields.io/cdnjs/v/acorn.svg)](https://cdnjs.com/libraries/acorn)
 [Author funding status: ![maintainer happiness](https://marijnhaverbeke.nl/fund/status_s.png?force)](https://marijnhaverbeke.nl/fund/)
 
 A tiny, fast JavaScript parser, written completely in JavaScript.
diff --git a/tools/eslint/node_modules/acorn/bin/acorn b/tools/eslint/node_modules/acorn/bin/acorn
index 78ebd4f0ea2420..41b786f4296169 100755
--- a/tools/eslint/node_modules/acorn/bin/acorn
+++ b/tools/eslint/node_modules/acorn/bin/acorn
@@ -29,7 +29,7 @@ for (var i = 2; i < process.argv.length; ++i) {
   else if (arg == "--compact") compact = true
   else if (arg == "--help") help(0)
   else if (arg == "--tokenize") tokenize = true
-  else if (arg == "--module") options.sourceType = 'module'
+  else if (arg == "--module") options.sourceType = "module"
   else {
     var match = arg.match(/^--ecma(\d+)$/)
     if (match)
@@ -41,18 +41,20 @@ for (var i = 2; i < process.argv.length; ++i) {
 
 function run(code) {
   var result
-  if (!tokenize) {
-    try { result = acorn.parse(code, options) }
-    catch(e) { console.error(e.message); process.exit(1) }
-  } else {
-    result = []
-    var tokenizer = acorn.tokenizer(code, options), token
-    while (true) {
-      try { token = tokenizer.getToken() }
-      catch(e) { console.error(e.message); process.exit(1) }
-      result.push(token)
-      if (token.type == acorn.tokTypes.eof) break
+  try {
+    if (!tokenize) {
+      result = acorn.parse(code, options)
+    } else {
+      result = []
+      var tokenizer = acorn.tokenizer(code, options), token
+      do {
+        token = tokenizer.getToken()
+        result.push(token)
+      } while (token.type != acorn.tokTypes.eof)
     }
+  } catch (e) {
+    console.error(e.message)
+    process.exit(1)
   }
   if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2))
 }
diff --git a/tools/eslint/node_modules/acorn/dist/acorn.es.js b/tools/eslint/node_modules/acorn/dist/acorn.es.js
index 32dd5954ea0e68..74417b8aa83559 100644
--- a/tools/eslint/node_modules/acorn/dist/acorn.es.js
+++ b/tools/eslint/node_modules/acorn/dist/acorn.es.js
@@ -38,7 +38,11 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null
 // offset starts at 0x10000, and each pair of numbers represents an
 // offset to the next range, and then a size of the range. They were
 // generated by bin/generate-identifier-regex.js
+
+// eslint-disable-next-line comma-spacing
 var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541]
+
+// eslint-disable-next-line comma-spacing
 var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]
 
 // This has a complexity linear to the value of the code. The
@@ -244,16 +248,20 @@ var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/
 
 var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g
 
-function isArray(obj) {
-  return Object.prototype.toString.call(obj) === "[object Array]"
-}
+var ref = Object.prototype;
+var hasOwnProperty = ref.hasOwnProperty;
+var toString = ref.toString;
 
 // Checks if an object has a property.
 
 function has(obj, propName) {
-  return Object.prototype.hasOwnProperty.call(obj, propName)
+  return hasOwnProperty.call(obj, propName)
 }
 
+var isArray = Array.isArray || (function (obj) { return (
+  toString.call(obj) === "[object Array]"
+); })
+
 // These are used when `options.locations` is on, for the
 // `startLoc` and `endLoc` properties.
 
@@ -401,9 +409,9 @@ function getOptions(opts) {
 }
 
 function pushComment(options, array) {
-  return function (block, text, start, end, startLoc, endLoc) {
+  return function(block, text, start, end, startLoc, endLoc) {
     var comment = {
-      type: block ? 'Block' : 'Line',
+      type: block ? "Block" : "Line",
       value: text,
       start: start,
       end: end
@@ -481,7 +489,8 @@ var Parser = function Parser(options, input, startPos) {
   this.exprAllowed = true
 
   // Figure out if it's a module code.
-  this.strict = this.inModule = options.sourceType === "module"
+  this.inModule = options.sourceType === "module"
+  this.strict = this.inModule || this.strictDirective(this.pos)
 
   // Used to signify the start of a potential arrow function
   this.potentialArrowAt = -1
@@ -494,8 +503,12 @@ var Parser = function Parser(options, input, startPos) {
   this.labels = []
 
   // If enabled, skip leading hashbang line.
-  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!')
+  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
     this.skipLineComment(2)
+
+  // Scope tracking for duplicate variable names (see scope.js)
+  this.scopeStack = []
+  this.enterFunctionScope()
 };
 
 // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them
@@ -526,12 +539,18 @@ var pp = Parser.prototype
 
 // ## Parser utilities
 
-// Test whether a statement node is the string literal `"use strict"`.
+var literal = /^(?:'((?:[^']|\.)*)'|"((?:[^"]|\.)*)"|;)/
+pp.strictDirective = function(start) {
+  var this$1 = this;
 
-pp.isUseStrict = function(stmt) {
-  return this.options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" &&
-    stmt.expression.type === "Literal" &&
-    stmt.expression.raw.slice(1, -1) === "use strict"
+  for (;;) {
+    skipWhiteSpace.lastIndex = start
+    start += skipWhiteSpace.exec(this$1.input)[0].length
+    var match = literal.exec(this$1.input.slice(start))
+    if (!match) return false
+    if ((match[1] || match[2]) == "use strict") return true
+    start += match[0].length
+  }
 }
 
 // Predicate that tests whether the next token is of the given
@@ -611,20 +630,21 @@ pp.unexpected = function(pos) {
 }
 
 var DestructuringErrors = function DestructuringErrors() {
-  this.shorthandAssign = 0
-  this.trailingComma = 0
+  this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1
 };
 
-pp.checkPatternErrors = function(refDestructuringErrors, andThrow) {
-  var trailing = refDestructuringErrors && refDestructuringErrors.trailingComma
-  if (!andThrow) return !!trailing
-  if (trailing) this.raise(trailing, "Comma is not permitted after the rest element")
+pp.checkPatternErrors = function(refDestructuringErrors, isAssign) {
+  if (!refDestructuringErrors) return
+  if (refDestructuringErrors.trailingComma > -1)
+    this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element")
+  var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind
+  if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern")
 }
 
 pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
-  var pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign
-  if (!andThrow) return !!pos
-  if (pos) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
+  var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1
+  if (!andThrow) return pos >= 0
+  if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
 }
 
 pp.checkYieldAwaitInDefaultParams = function() {
@@ -634,6 +654,12 @@ pp.checkYieldAwaitInDefaultParams = function() {
     this.raise(this.awaitPos, "Await expression cannot be a default value")
 }
 
+pp.isSimpleAssignTarget = function(expr) {
+  if (expr.type === "ParenthesizedExpression")
+    return this.isSimpleAssignTarget(expr.expression)
+  return expr.type === "Identifier" || expr.type === "MemberExpression"
+}
+
 var pp$1 = Parser.prototype
 
 // ### Statement parsing
@@ -646,15 +672,11 @@ var pp$1 = Parser.prototype
 pp$1.parseTopLevel = function(node) {
   var this$1 = this;
 
-  var first = true, exports = {}
+  var exports = {}
   if (!node.body) node.body = []
   while (this.type !== tt.eof) {
     var stmt = this$1.parseStatement(true, true, exports)
     node.body.push(stmt)
-    if (first) {
-      if (this$1.isUseStrict(stmt)) this$1.setStrict(true)
-      first = false
-    }
   }
   this.next()
   if (this.options.ecmaVersion >= 6) {
@@ -672,7 +694,8 @@ pp$1.isLet = function() {
   var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)
   if (nextCh === 91 || nextCh == 123) return true // '{' and '['
   if (isIdentifierStart(nextCh, true)) {
-    for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {}
+    var pos = next + 1
+    while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos
     var ident = this.input.slice(next, pos)
     if (!this.isKeyword(ident)) return true
   }
@@ -779,7 +802,8 @@ pp$1.parseBreakContinueStatement = function(node, keyword) {
 
   // Verify that there is an actual destination to break or
   // continue to.
-  for (var i = 0; i < this.labels.length; ++i) {
+  var i = 0
+  for (; i < this.labels.length; ++i) {
     var lab = this$1.labels[i]
     if (node.label == null || lab.name === node.label.name) {
       if (lab.kind != null && (isBreak || lab.kind === "loop")) break
@@ -821,6 +845,7 @@ pp$1.parseDoStatement = function(node) {
 pp$1.parseForStatement = function(node) {
   this.next()
   this.labels.push(loopLabel)
+  this.enterLexicalScope()
   this.expect(tt.parenL)
   if (this.type === tt.semi) return this.parseFor(node, null)
   var isLet = this.isLet()
@@ -837,9 +862,9 @@ pp$1.parseForStatement = function(node) {
   var refDestructuringErrors = new DestructuringErrors
   var init = this.parseExpression(true, refDestructuringErrors)
   if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) {
-    this.checkPatternErrors(refDestructuringErrors, true)
     this.toAssignable(init)
     this.checkLVal(init)
+    this.checkPatternErrors(refDestructuringErrors, true)
     return this.parseForIn(node, init)
   } else {
     this.checkExpressionErrors(refDestructuringErrors, true)
@@ -887,12 +912,14 @@ pp$1.parseSwitchStatement = function(node) {
   node.cases = []
   this.expect(tt.braceL)
   this.labels.push(switchLabel)
+  this.enterLexicalScope()
 
   // Statements under must be grouped (by label) in SwitchCase
   // nodes. `cur` is used to keep the node that we are currently
   // adding statements to.
 
-  for (var cur, sawDefault = false; this.type != tt.braceR;) {
+  var cur
+  for (var sawDefault = false; this.type != tt.braceR;) {
     if (this$1.type === tt._case || this$1.type === tt._default) {
       var isCase = this$1.type === tt._case
       if (cur) this$1.finishNode(cur, "SwitchCase")
@@ -912,6 +939,7 @@ pp$1.parseSwitchStatement = function(node) {
       cur.consequent.push(this$1.parseStatement(true))
     }
   }
+  this.exitLexicalScope()
   if (cur) this.finishNode(cur, "SwitchCase")
   this.next() // Closing brace
   this.labels.pop()
@@ -940,9 +968,11 @@ pp$1.parseTryStatement = function(node) {
     this.next()
     this.expect(tt.parenL)
     clause.param = this.parseBindingAtom()
-    this.checkLVal(clause.param, true)
+    this.enterLexicalScope()
+    this.checkLVal(clause.param, "let")
     this.expect(tt.parenR)
-    clause.body = this.parseBlock()
+    clause.body = this.parseBlock(false)
+    this.exitLexicalScope()
     node.handler = this.finishNode(clause, "CatchClause")
   }
   node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null
@@ -995,6 +1025,10 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
   }
   this.labels.push({name: maybeName, kind: kind, statementStart: this.start})
   node.body = this.parseStatement(true)
+  if (node.body.type == "ClassDeclaration" ||
+      node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
+      node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
+    this.raiseRecoverable(node.body.start, "Invalid labeled declaration")
   this.labels.pop()
   node.label = expr
   return this.finishNode(node, "LabeledStatement")
@@ -1010,22 +1044,23 @@ pp$1.parseExpressionStatement = function(node, expr) {
 // strict"` declarations when `allowStrict` is true (used for
 // function bodies).
 
-pp$1.parseBlock = function(allowStrict) {
+pp$1.parseBlock = function(createNewLexicalScope) {
   var this$1 = this;
+  if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;
 
-  var node = this.startNode(), first = true, oldStrict
+  var node = this.startNode()
   node.body = []
   this.expect(tt.braceL)
+  if (createNewLexicalScope) {
+    this.enterLexicalScope()
+  }
   while (!this.eat(tt.braceR)) {
     var stmt = this$1.parseStatement(true)
     node.body.push(stmt)
-    if (first && allowStrict && this$1.isUseStrict(stmt)) {
-      oldStrict = this$1.strict
-      this$1.setStrict(this$1.strict = true)
-    }
-    first = false
   }
-  if (oldStrict === false) this.setStrict(false)
+  if (createNewLexicalScope) {
+    this.exitLexicalScope()
+  }
   return this.finishNode(node, "BlockStatement")
 }
 
@@ -1040,6 +1075,7 @@ pp$1.parseFor = function(node, init) {
   this.expect(tt.semi)
   node.update = this.type === tt.parenR ? null : this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, "ForStatement")
@@ -1054,6 +1090,7 @@ pp$1.parseForIn = function(node, init) {
   node.left = init
   node.right = this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, type)
@@ -1068,7 +1105,7 @@ pp$1.parseVar = function(node, isFor, kind) {
   node.kind = kind
   for (;;) {
     var decl = this$1.startNode()
-    this$1.parseVarId(decl)
+    this$1.parseVarId(decl, kind)
     if (this$1.eat(tt.eq)) {
       decl.init = this$1.parseMaybeAssign(isFor)
     } else if (kind === "const" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) {
@@ -1084,9 +1121,9 @@ pp$1.parseVar = function(node, isFor, kind) {
   return node
 }
 
-pp$1.parseVarId = function(decl) {
-  decl.id = this.parseBindingAtom()
-  this.checkLVal(decl.id, true)
+pp$1.parseVarId = function(decl, kind) {
+  decl.id = this.parseBindingAtom(kind)
+  this.checkLVal(decl.id, kind, false)
 }
 
 // Parse a function declaration or literal (depending on the
@@ -1099,17 +1136,25 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
 
-  if (isStatement)
-    node.id = this.parseIdent()
+  if (isStatement) {
+    node.id = isStatement === "nullableID" && this.type != tt.name ? null : this.parseIdent()
+    if (node.id) {
+      this.checkLVal(node.id, "var")
+    }
+  }
 
-  var oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
   this.inGenerator = node.generator
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
+
+  if (!isStatement)
+    node.id = this.type == tt.name ? this.parseIdent() : null
 
-  if (!isStatement && this.type === tt.name)
-    node.id = this.parseIdent()
   this.parseFunctionParams(node)
   this.parseFunctionBody(node, allowExpressionBody)
 
@@ -1117,6 +1162,7 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
 }
 
@@ -1133,6 +1179,7 @@ pp$1.parseClass = function(node, isStatement) {
   var this$1 = this;
 
   this.next()
+
   this.parseClassId(node, isStatement)
   this.parseClassSuper(node)
   var classBody = this.startNode()
@@ -1202,7 +1249,7 @@ pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) {
 }
 
 pp$1.parseClassId = function(node, isStatement) {
-  node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null
+  node.id = this.type === tt.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null
 }
 
 pp$1.parseClassSuper = function(node) {
@@ -1224,20 +1271,19 @@ pp$1.parseExport = function(node, exports) {
   }
   if (this.eat(tt._default)) { // export default ...
     this.checkExport(exports, "default", this.lastTokStart)
-    var parens = this.type == tt.parenL
-    var expr = this.parseMaybeAssign()
-    var needsSemi = true
-    if (!parens && (expr.type == "FunctionExpression" ||
-                    expr.type == "ClassExpression")) {
-      needsSemi = false
-      if (expr.id) {
-        expr.type = expr.type == "FunctionExpression"
-          ? "FunctionDeclaration"
-          : "ClassDeclaration"
-      }
+    var isAsync
+    if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {
+      var fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", false, isAsync)
+    } else if (this.type === tt._class) {
+      var cNode = this.startNode()
+      node.declaration = this.parseClass(cNode, "nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    if (needsSemi) this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   // export var|const|let|function|class ...
@@ -1271,7 +1317,7 @@ pp$1.parseExport = function(node, exports) {
 
 pp$1.checkExport = function(exports, name, pos) {
   if (!exports) return
-  if (Object.prototype.hasOwnProperty.call(exports, name))
+  if (has(exports, name))
     this.raiseRecoverable(pos, "Duplicate export '" + name + "'")
   exports[name] = true
 }
@@ -1305,12 +1351,12 @@ pp$1.checkVariableExport = function(exports, decls) {
 }
 
 pp$1.shouldParseExportStatement = function() {
-  return this.type.keyword === "var"
-    || this.type.keyword === "const"
-    || this.type.keyword === "class"
-    || this.type.keyword === "function"
-    || this.isLet()
-    || this.isAsyncFunction()
+  return this.type.keyword === "var" ||
+    this.type.keyword === "const" ||
+    this.type.keyword === "class" ||
+    this.type.keyword === "function" ||
+    this.isLet() ||
+    this.isAsyncFunction()
 }
 
 // Parses a comma-separated list of module exports.
@@ -1328,7 +1374,7 @@ pp$1.parseExportSpecifiers = function(exports) {
     } else first = false
 
     var node = this$1.startNode()
-    node.local = this$1.parseIdent(this$1.type === tt._default)
+    node.local = this$1.parseIdent(true)
     node.exported = this$1.eatContextual("as") ? this$1.parseIdent(true) : node.local
     this$1.checkExport(exports, node.exported.name, node.exported.start)
     nodes.push(this$1.finishNode(node, "ExportSpecifier"))
@@ -1363,7 +1409,7 @@ pp$1.parseImportSpecifiers = function() {
     // import defaultObj, { x, y as z } from '...'
     var node = this.startNode()
     node.local = this.parseIdent()
-    this.checkLVal(node.local, true)
+    this.checkLVal(node.local, "let")
     nodes.push(this.finishNode(node, "ImportDefaultSpecifier"))
     if (!this.eat(tt.comma)) return nodes
   }
@@ -1372,7 +1418,7 @@ pp$1.parseImportSpecifiers = function() {
     this.next()
     this.expectContextual("as")
     node$1.local = this.parseIdent()
-    this.checkLVal(node$1.local, true)
+    this.checkLVal(node$1.local, "let")
     nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier"))
     return nodes
   }
@@ -1392,7 +1438,7 @@ pp$1.parseImportSpecifiers = function() {
       if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start)
       if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, "The keyword '" + node$2.local.name + "' is reserved")
     }
-    this$1.checkLVal(node$2.local, true)
+    this$1.checkLVal(node$2.local, "let")
     nodes.push(this$1.finishNode(node$2, "ImportSpecifier"))
   }
   return nodes
@@ -1408,7 +1454,7 @@ pp$2.toAssignable = function(node, isBinding) {
 
   if (this.options.ecmaVersion >= 6 && node) {
     switch (node.type) {
-      case "Identifier":
+    case "Identifier":
       if (this.inAsync && node.name === "await")
         this.raise(node.start, "Can not use 'await' as identifier inside an async function")
       break
@@ -1574,51 +1620,68 @@ pp$2.parseMaybeDefault = function(startPos, startLoc, left) {
 
 // Verify that a node is an lval — something that can be assigned
 // to.
+// bindingType can be either:
+// 'var' indicating that the lval creates a 'var' binding
+// 'let' indicating that the lval creates a lexical ('let' or 'const') binding
+// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references
 
-pp$2.checkLVal = function(expr, isBinding, checkClashes) {
+pp$2.checkLVal = function(expr, bindingType, checkClashes) {
   var this$1 = this;
 
   switch (expr.type) {
   case "Identifier":
     if (this.strict && this.reservedWordsStrictBind.test(expr.name))
-      this.raiseRecoverable(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
+      this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
     if (checkClashes) {
       if (has(checkClashes, expr.name))
         this.raiseRecoverable(expr.start, "Argument name clash")
       checkClashes[expr.name] = true
     }
+    if (bindingType && bindingType !== "none") {
+      if (
+        bindingType === "var" && !this.canDeclareVarName(expr.name) ||
+        bindingType !== "var" && !this.canDeclareLexicalName(expr.name)
+      ) {
+        this.raiseRecoverable(expr.start, ("Identifier '" + (expr.name) + "' has already been declared"))
+      }
+      if (bindingType === "var") {
+        this.declareVarName(expr.name)
+      } else {
+        this.declareLexicalName(expr.name)
+      }
+    }
     break
 
   case "MemberExpression":
-    if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression")
+    if (bindingType) this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression")
     break
 
   case "ObjectPattern":
     for (var i = 0; i < expr.properties.length; i++)
-      this$1.checkLVal(expr.properties[i].value, isBinding, checkClashes)
+      this$1.checkLVal(expr.properties[i].value, bindingType, checkClashes)
     break
 
   case "ArrayPattern":
     for (var i$1 = 0; i$1 < expr.elements.length; i$1++) {
       var elem = expr.elements[i$1]
-      if (elem) this$1.checkLVal(elem, isBinding, checkClashes)
+      if (elem) this$1.checkLVal(elem, bindingType, checkClashes)
     }
     break
 
   case "AssignmentPattern":
-    this.checkLVal(expr.left, isBinding, checkClashes)
+    this.checkLVal(expr.left, bindingType, checkClashes)
     break
 
   case "RestElement":
-    this.checkLVal(expr.argument, isBinding, checkClashes)
+    this.checkLVal(expr.argument, bindingType, checkClashes)
     break
 
   case "ParenthesizedExpression":
-    this.checkLVal(expr.expression, isBinding, checkClashes)
+    this.checkLVal(expr.expression, bindingType, checkClashes)
     break
 
   default:
-    this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue")
+    this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue")
   }
 }
 
@@ -1668,8 +1731,13 @@ pp$3.checkPropClash = function(prop, propHash) {
   name = "$" + name
   var other = propHash[name]
   if (other) {
-    var isGetSet = kind !== "init"
-    if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init))
+    var redefinition
+    if (kind === "init") {
+      redefinition = this.strict && other.init || other.get || other.set
+    } else {
+      redefinition = other.init || other[kind]
+    }
+    if (redefinition)
       this.raiseRecoverable(key.start, "Redefinition of property")
   } else {
     other = propHash[name] = {
@@ -1716,11 +1784,16 @@ pp$3.parseExpression = function(noIn, refDestructuringErrors) {
 pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   if (this.inGenerator && this.isContextual("yield")) return this.parseYield()
 
-  var ownDestructuringErrors = false
-  if (!refDestructuringErrors) {
+  var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1
+  if (refDestructuringErrors) {
+    oldParenAssign = refDestructuringErrors.parenthesizedAssign
+    oldTrailingComma = refDestructuringErrors.trailingComma
+    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1
+  } else {
     refDestructuringErrors = new DestructuringErrors
     ownDestructuringErrors = true
   }
+
   var startPos = this.start, startLoc = this.startLoc
   if (this.type == tt.parenL || this.type == tt.name)
     this.potentialArrowAt = this.start
@@ -1732,7 +1805,7 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
     var node = this.startNodeAt(startPos, startLoc)
     node.operator = this.value
     node.left = this.type === tt.eq ? this.toAssignable(left) : left
-    refDestructuringErrors.shorthandAssign = 0 // reset because shorthand default was used correctly
+    refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly
     this.checkLVal(left)
     this.next()
     node.right = this.parseMaybeAssign(noIn)
@@ -1740,6 +1813,8 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   } else {
     if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)
   }
+  if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign
+  if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma
   return left
 }
 
@@ -1766,7 +1841,7 @@ pp$3.parseExprOps = function(noIn, refDestructuringErrors) {
   var startPos = this.start, startLoc = this.startLoc
   var expr = this.parseMaybeUnary(refDestructuringErrors, false)
   if (this.checkExpressionErrors(refDestructuringErrors)) return expr
-  return this.parseExprOp(expr, startPos, startLoc, -1, noIn)
+  return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
 }
 
 // Parse binary operators with the operator precedence parsing
@@ -1848,34 +1923,34 @@ pp$3.parseExprSubscripts = function(refDestructuringErrors) {
   var expr = this.parseExprAtom(refDestructuringErrors)
   var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"
   if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr
-  return this.parseSubscripts(expr, startPos, startLoc)
+  var result = this.parseSubscripts(expr, startPos, startLoc)
+  if (refDestructuringErrors && result.type === "MemberExpression") {
+    if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1
+    if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1
+  }
+  return result
 }
 
 pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
   var this$1 = this;
 
-  for (;;) {
-    var maybeAsyncArrow = this$1.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon()
-    if (this$1.eat(tt.dot)) {
+  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
+      this.lastTokEnd == base.end && !this.canInsertSemicolon()
+  for (var computed;;) {
+    if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) {
       var node = this$1.startNodeAt(startPos, startLoc)
       node.object = base
-      node.property = this$1.parseIdent(true)
-      node.computed = false
+      node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true)
+      node.computed = !!computed
+      if (computed) this$1.expect(tt.bracketR)
       base = this$1.finishNode(node, "MemberExpression")
-    } else if (this$1.eat(tt.bracketL)) {
-      var node$1 = this$1.startNodeAt(startPos, startLoc)
-      node$1.object = base
-      node$1.property = this$1.parseExpression()
-      node$1.computed = true
-      this$1.expect(tt.bracketR)
-      base = this$1.finishNode(node$1, "MemberExpression")
     } else if (!noCalls && this$1.eat(tt.parenL)) {
       var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos
       this$1.yieldPos = 0
       this$1.awaitPos = 0
       var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors)
       if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) {
-        this$1.checkPatternErrors(refDestructuringErrors, true)
+        this$1.checkPatternErrors(refDestructuringErrors, false)
         this$1.checkYieldAwaitInDefaultParams()
         this$1.yieldPos = oldYieldPos
         this$1.awaitPos = oldAwaitPos
@@ -1884,15 +1959,15 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
       this$1.checkExpressionErrors(refDestructuringErrors, true)
       this$1.yieldPos = oldYieldPos || this$1.yieldPos
       this$1.awaitPos = oldAwaitPos || this$1.awaitPos
-      var node$2 = this$1.startNodeAt(startPos, startLoc)
-      node$2.callee = base
-      node$2.arguments = exprList
-      base = this$1.finishNode(node$2, "CallExpression")
+      var node$1 = this$1.startNodeAt(startPos, startLoc)
+      node$1.callee = base
+      node$1.arguments = exprList
+      base = this$1.finishNode(node$1, "CallExpression")
     } else if (this$1.type === tt.backQuote) {
-      var node$3 = this$1.startNodeAt(startPos, startLoc)
-      node$3.tag = base
-      node$3.quasi = this$1.parseTemplate()
-      base = this$1.finishNode(node$3, "TaggedTemplateExpression")
+      var node$2 = this$1.startNodeAt(startPos, startLoc)
+      node$2.tag = base
+      node$2.quasi = this$1.parseTemplate()
+      base = this$1.finishNode(node$2, "TaggedTemplateExpression")
     } else {
       return base
     }
@@ -1951,7 +2026,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) {
     return this.finishNode(node, "Literal")
 
   case tt.parenL:
-    return this.parseParenAndDistinguishExpression(canBeArrow)
+    var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)
+    if (refDestructuringErrors) {
+      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))
+        refDestructuringErrors.parenthesizedAssign = start
+      if (refDestructuringErrors.parenthesizedBind < 0)
+        refDestructuringErrors.parenthesizedBind = start
+    }
+    return expr
 
   case tt.bracketL:
     node = this.startNode()
@@ -2029,7 +2111,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) {
     this.expect(tt.parenR)
 
     if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {
-      this.checkPatternErrors(refDestructuringErrors, true)
+      this.checkPatternErrors(refDestructuringErrors, false)
       this.checkYieldAwaitInDefaultParams()
       if (innerParenStart) this.unexpected(innerParenStart)
       this.yieldPos = oldYieldPos
@@ -2103,7 +2185,7 @@ pp$3.parseNew = function() {
 pp$3.parseTemplateElement = function() {
   var elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"),
     cooked: this.value
   }
   this.next()
@@ -2210,7 +2292,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
     if (isPattern) {
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else if (this.type === tt.eq && refDestructuringErrors) {
-      if (!refDestructuringErrors.shorthandAssign)
+      if (refDestructuringErrors.shorthandAssign < 0)
         refDestructuringErrors.shorthandAssign = this.start
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else {
@@ -2249,7 +2331,8 @@ pp$3.initFunction = function(node) {
 // Parse object or class method.
 
 pp$3.parseMethod = function(isGenerator, isAsync) {
-  var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
   this.initFunction(node)
   if (this.options.ecmaVersion >= 6)
@@ -2261,6 +2344,8 @@ pp$3.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
 
   this.expect(tt.parenL)
   node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)
@@ -2271,14 +2356,17 @@ pp$3.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "FunctionExpression")
 }
 
 // Parse arrow function expression with given parameters.
 
 pp$3.parseArrowExpression = function(node, params, isAsync) {
-  var oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
+  this.enterFunctionScope()
   this.initFunction(node)
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
@@ -2287,6 +2375,7 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
 
   node.params = this.toAssignableList(params, true)
   this.parseFunctionBody(node, true)
@@ -2295,6 +2384,7 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "ArrowFunctionExpression")
 }
 
@@ -2302,37 +2392,42 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
 
 pp$3.parseFunctionBody = function(node, isArrowFunction) {
   var isExpression = isArrowFunction && this.type !== tt.braceL
+  var oldStrict = this.strict, useStrict = false
 
   if (isExpression) {
     node.body = this.parseMaybeAssign()
     node.expression = true
+    this.checkParams(node, false)
   } else {
+    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)
+    if (!oldStrict || nonSimple) {
+      useStrict = this.strictDirective(this.end)
+      // If this is a strict mode function, verify that argument names
+      // are not repeated, and it does not try to bind the words `eval`
+      // or `arguments`.
+      if (useStrict && nonSimple)
+        this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list")
+    }
     // Start a new scope with regard to labels and the `inFunction`
     // flag (restore them to their old value afterwards).
-    var oldInFunc = this.inFunction, oldLabels = this.labels
-    this.inFunction = true; this.labels = []
-    node.body = this.parseBlock(true)
+    var oldLabels = this.labels
+    this.labels = []
+    if (useStrict) this.strict = true
+
+    // Add the params to varDeclaredNames to ensure that an error is thrown
+    // if a let/const declaration in the function clashes with one of the params.
+    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))
+    node.body = this.parseBlock(false)
     node.expression = false
-    this.inFunction = oldInFunc; this.labels = oldLabels
+    this.labels = oldLabels
   }
+  this.exitFunctionScope()
 
-  // If this is a strict mode function, verify that argument names
-  // are not repeated, and it does not try to bind the words `eval`
-  // or `arguments`.
-  var useStrict = (!isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) ? node.body.body[0] : null
-  if (useStrict && this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params))
-    this.raiseRecoverable(useStrict.start, "Illegal 'use strict' directive in function with non-simple parameter list")
-
-  if (this.strict || useStrict) {
-    var oldStrict = this.strict
-    this.strict = true
-    if (node.id)
-      this.checkLVal(node.id, true)
-    this.checkParams(node)
-    this.strict = oldStrict
-  } else if (isArrowFunction || !this.isSimpleParamList(node.params)) {
-    this.checkParams(node)
+  if (this.strict && node.id) {
+    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'
+    this.checkLVal(node.id, "none")
   }
+  this.strict = oldStrict
 }
 
 pp$3.isSimpleParamList = function(params) {
@@ -2344,11 +2439,11 @@ pp$3.isSimpleParamList = function(params) {
 // Checks function params for various disallowed patterns such as using "eval"
 // or "arguments" and duplicate parameters.
 
-pp$3.checkParams = function(node) {
+pp$3.checkParams = function(node, allowDuplicates) {
   var this$1 = this;
 
   var nameHash = {}
-  for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], true, nameHash)
+  for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], "var", allowDuplicates ? null : nameHash)
 }
 
 // Parses a comma-separated list of expressions, and returns them as
@@ -2372,11 +2467,11 @@ pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestruct
       elt = null
     else if (this$1.type === tt.ellipsis) {
       elt = this$1.parseSpread(refDestructuringErrors)
-      if (this$1.type === tt.comma && refDestructuringErrors && !refDestructuringErrors.trailingComma) {
+      if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0)
         refDestructuringErrors.trailingComma = this$1.start
-      }
-    } else
+    } else {
       elt = this$1.parseMaybeAssign(false, refDestructuringErrors)
+    }
     elts.push(elt)
   }
   return elts
@@ -2458,6 +2553,82 @@ pp$4.curPosition = function() {
   }
 }
 
+var pp$5 = Parser.prototype
+
+// Object.assign polyfill
+var assign = Object.assign || function(target) {
+  var sources = [], len = arguments.length - 1;
+  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];
+
+  for (var i = 0; i < sources.length; i++) {
+    var source = sources[i]
+    for (var key in source) {
+      if (has(source, key)) {
+        target[key] = source[key]
+      }
+    }
+  }
+  return target
+}
+
+// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.
+
+pp$5.enterFunctionScope = function() {
+  // var: a hash of var-declared names in the current lexical scope
+  // lexical: a hash of lexically-declared names in the current lexical scope
+  // childVar: a hash of var-declared names in all child lexical scopes of the current lexical scope (within the current function scope)
+  // parentLexical: a hash of lexically-declared names in all parent lexical scopes of the current lexical scope (within the current function scope)
+  this.scopeStack.push({var: {}, lexical: {}, childVar: {}, parentLexical: {}})
+}
+
+pp$5.exitFunctionScope = function() {
+  this.scopeStack.pop()
+}
+
+pp$5.enterLexicalScope = function() {
+  var parentScope = this.scopeStack[this.scopeStack.length - 1]
+  var childScope = {var: {}, lexical: {}, childVar: {}, parentLexical: {}}
+
+  this.scopeStack.push(childScope)
+  assign(childScope.parentLexical, parentScope.lexical, parentScope.parentLexical)
+}
+
+pp$5.exitLexicalScope = function() {
+  var childScope = this.scopeStack.pop()
+  var parentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  assign(parentScope.childVar, childScope.var, childScope.childVar)
+}
+
+/**
+ * A name can be declared with `var` if there are no variables with the same name declared with `let`/`const`
+ * in the current lexical scope or any of the parent lexical scopes in this function.
+ */
+pp$5.canDeclareVarName = function(name) {
+  var currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.parentLexical, name)
+}
+
+/**
+ * A name can be declared with `let`/`const` if there are no variables with the same name declared with `let`/`const`
+ * in the current scope, and there are no variables with the same name declared with `var` in the current scope or in
+ * any child lexical scopes in this function.
+ */
+pp$5.canDeclareLexicalName = function(name) {
+  var currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.var, name) && !has(currentScope.childVar, name)
+}
+
+pp$5.declareVarName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].var[name] = true
+}
+
+pp$5.declareLexicalName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].lexical[name] = true
+}
+
 var Node = function Node(parser, pos, loc) {
   this.type = ""
   this.start = pos
@@ -2472,13 +2643,13 @@ var Node = function Node(parser, pos, loc) {
 
 // Start an AST node, attaching a start offset.
 
-var pp$5 = Parser.prototype
+var pp$6 = Parser.prototype
 
-pp$5.startNode = function() {
+pp$6.startNode = function() {
   return new Node(this, this.start, this.startLoc)
 }
 
-pp$5.startNodeAt = function(pos, loc) {
+pp$6.startNodeAt = function(pos, loc) {
   return new Node(this, pos, loc)
 }
 
@@ -2494,13 +2665,13 @@ function finishNodeAt(node, type, pos, loc) {
   return node
 }
 
-pp$5.finishNode = function(node, type) {
+pp$6.finishNode = function(node, type) {
   return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)
 }
 
 // Finish node at given position
 
-pp$5.finishNodeAt = function(node, type, pos, loc) {
+pp$6.finishNodeAt = function(node, type, pos, loc) {
   return finishNodeAt.call(this, node, type, pos, loc)
 }
 
@@ -2508,11 +2679,12 @@ pp$5.finishNodeAt = function(node, type, pos, loc) {
 // given point in the program is loosely based on sweet.js' approach.
 // See https://github.com/mozilla/sweet.js/wiki/design
 
-var TokContext = function TokContext(token, isExpr, preserveSpace, override) {
+var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {
   this.token = token
   this.isExpr = !!isExpr
   this.preserveSpace = !!preserveSpace
   this.override = override
+  this.generator = !!generator
 };
 
 var types = {
@@ -2522,16 +2694,18 @@ var types = {
   p_stat: new TokContext("(", false),
   p_expr: new TokContext("(", true),
   q_tmpl: new TokContext("`", true, true, function (p) { return p.readTmplToken(); }),
-  f_expr: new TokContext("function", true)
+  f_expr: new TokContext("function", true),
+  f_expr_gen: new TokContext("function", true, false, null, true),
+  f_gen: new TokContext("function", false, false, null, true)
 }
 
-var pp$6 = Parser.prototype
+var pp$7 = Parser.prototype
 
-pp$6.initialContext = function() {
+pp$7.initialContext = function() {
   return [types.b_stat]
 }
 
-pp$6.braceIsBlock = function(prevType) {
+pp$7.braceIsBlock = function(prevType) {
   if (prevType === tt.colon) {
     var parent = this.curContext()
     if (parent === types.b_stat || parent === types.b_expr)
@@ -2539,14 +2713,22 @@ pp$6.braceIsBlock = function(prevType) {
   }
   if (prevType === tt._return)
     return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))
-  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR)
+  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType == tt.arrow)
     return true
   if (prevType == tt.braceL)
     return this.curContext() === types.b_stat
   return !this.exprAllowed
 }
 
-pp$6.updateContext = function(prevType) {
+pp$7.inGeneratorContext = function() {
+  var this$1 = this;
+
+  for (var i = this.context.length - 1; i >= 0; i--)
+    if (this$1.context[i].generator) return true
+  return false
+}
+
+pp$7.updateContext = function(prevType) {
   var update, type = this.type
   if (type.keyword && prevType == tt.dot)
     this.exprAllowed = false
@@ -2563,8 +2745,8 @@ tt.parenR.updateContext = tt.braceR.updateContext = function() {
     this.exprAllowed = true
     return
   }
-  var out = this.context.pop()
-  if (out === types.b_stat && this.curContext() === types.f_expr) {
+  var out = this.context.pop(), cur
+  if (out === types.b_stat && (cur = this.curContext()) && cur.token === "function") {
     this.context.pop()
     this.exprAllowed = false
   } else if (out === types.b_tmpl) {
@@ -2609,6 +2791,26 @@ tt.backQuote.updateContext = function() {
   this.exprAllowed = false
 }
 
+tt.star.updateContext = function(prevType) {
+  if (prevType == tt._function) {
+    if (this.curContext() === types.f_expr)
+      this.context[this.context.length - 1] = types.f_expr_gen
+    else
+      this.context.push(types.f_gen)
+  }
+  this.exprAllowed = true
+}
+
+tt.name.updateContext = function(prevType) {
+  var allowed = false
+  if (this.options.ecmaVersion >= 6) {
+    if (this.value == "of" && !this.exprAllowed ||
+        this.value == "yield" && this.inGeneratorContext())
+      allowed = true
+  }
+  this.exprAllowed = allowed
+}
+
 // Object type used to represent tokens. Note that normally, tokens
 // simply exist as properties on the parser object. This is only
 // used for the onToken callback and the external tokenizer.
@@ -2626,14 +2828,14 @@ var Token = function Token(p) {
 
 // ## Tokenizer
 
-var pp$7 = Parser.prototype
+var pp$8 = Parser.prototype
 
 // Are we running under Rhino?
 var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]"
 
 // Move to the next token
 
-pp$7.next = function() {
+pp$8.next = function() {
   if (this.options.onToken)
     this.options.onToken(new Token(this))
 
@@ -2644,50 +2846,38 @@ pp$7.next = function() {
   this.nextToken()
 }
 
-pp$7.getToken = function() {
+pp$8.getToken = function() {
   this.next()
   return new Token(this)
 }
 
 // If we're in an ES6 environment, make parsers iterable
 if (typeof Symbol !== "undefined")
-  pp$7[Symbol.iterator] = function () {
-    var self = this
-    return {next: function () {
-      var token = self.getToken()
-      return {
-        done: token.type === tt.eof,
-        value: token
+  pp$8[Symbol.iterator] = function() {
+    var this$1 = this;
+
+    return {
+      next: function () {
+        var token = this$1.getToken()
+        return {
+          done: token.type === tt.eof,
+          value: token
+        }
       }
-    }}
+    }
   }
 
 // Toggle strict mode. Re-reads the next number or string to please
 // pedantic tests (`"use strict"; 010;` should fail).
 
-pp$7.setStrict = function(strict) {
-  var this$1 = this;
-
-  this.strict = strict
-  if (this.type !== tt.num && this.type !== tt.string) return
-  this.pos = this.start
-  if (this.options.locations) {
-    while (this.pos < this.lineStart) {
-      this$1.lineStart = this$1.input.lastIndexOf("\n", this$1.lineStart - 2) + 1
-      --this$1.curLine
-    }
-  }
-  this.nextToken()
-}
-
-pp$7.curContext = function() {
+pp$8.curContext = function() {
   return this.context[this.context.length - 1]
 }
 
 // Read a single token, updating the parser object's token-related
 // properties.
 
-pp$7.nextToken = function() {
+pp$8.nextToken = function() {
   var curContext = this.curContext()
   if (!curContext || !curContext.preserveSpace) this.skipSpace()
 
@@ -2699,7 +2889,7 @@ pp$7.nextToken = function() {
   else this.readToken(this.fullCharCodeAtPos())
 }
 
-pp$7.readToken = function(code) {
+pp$8.readToken = function(code) {
   // Identifier or keyword. '\uXXXX' sequences are allowed in
   // identifiers, so '\' also dispatches to that.
   if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */)
@@ -2708,14 +2898,14 @@ pp$7.readToken = function(code) {
   return this.getTokenFromCode(code)
 }
 
-pp$7.fullCharCodeAtPos = function() {
+pp$8.fullCharCodeAtPos = function() {
   var code = this.input.charCodeAt(this.pos)
   if (code <= 0xd7ff || code >= 0xe000) return code
   var next = this.input.charCodeAt(this.pos + 1)
   return (code << 10) + next - 0x35fdc00
 }
 
-pp$7.skipBlockComment = function() {
+pp$8.skipBlockComment = function() {
   var this$1 = this;
 
   var startLoc = this.options.onComment && this.curPosition()
@@ -2735,12 +2925,12 @@ pp$7.skipBlockComment = function() {
                            startLoc, this.curPosition())
 }
 
-pp$7.skipLineComment = function(startSkip) {
+pp$8.skipLineComment = function(startSkip) {
   var this$1 = this;
 
   var start = this.pos
   var startLoc = this.options.onComment && this.curPosition()
-  var ch = this.input.charCodeAt(this.pos+=startSkip)
+  var ch = this.input.charCodeAt(this.pos += startSkip)
   while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
     ++this$1.pos
     ch = this$1.input.charCodeAt(this$1.pos)
@@ -2753,44 +2943,44 @@ pp$7.skipLineComment = function(startSkip) {
 // Called at the start of the parse and after every token. Skips
 // whitespace and comments, and.
 
-pp$7.skipSpace = function() {
+pp$8.skipSpace = function() {
   var this$1 = this;
 
   loop: while (this.pos < this.input.length) {
     var ch = this$1.input.charCodeAt(this$1.pos)
     switch (ch) {
-      case 32: case 160: // ' '
-        ++this$1.pos
-        break
-      case 13:
-        if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {
-          ++this$1.pos
-        }
-      case 10: case 8232: case 8233:
+    case 32: case 160: // ' '
+      ++this$1.pos
+      break
+    case 13:
+      if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {
         ++this$1.pos
-        if (this$1.options.locations) {
-          ++this$1.curLine
-          this$1.lineStart = this$1.pos
-        }
+      }
+    case 10: case 8232: case 8233:
+      ++this$1.pos
+      if (this$1.options.locations) {
+        ++this$1.curLine
+        this$1.lineStart = this$1.pos
+      }
+      break
+    case 47: // '/'
+      switch (this$1.input.charCodeAt(this$1.pos + 1)) {
+      case 42: // '*'
+        this$1.skipBlockComment()
         break
-      case 47: // '/'
-        switch (this$1.input.charCodeAt(this$1.pos + 1)) {
-          case 42: // '*'
-            this$1.skipBlockComment()
-            break
-          case 47:
-            this$1.skipLineComment(2)
-            break
-          default:
-            break loop
-        }
+      case 47:
+        this$1.skipLineComment(2)
         break
       default:
-        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
-          ++this$1.pos
-        } else {
-          break loop
-        }
+        break loop
+      }
+      break
+    default:
+      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
+        ++this$1.pos
+      } else {
+        break loop
+      }
     }
   }
 }
@@ -2800,7 +2990,7 @@ pp$7.skipSpace = function() {
 // the token, so that the next one's `start` will point at the
 // right position.
 
-pp$7.finishToken = function(type, val) {
+pp$8.finishToken = function(type, val) {
   this.end = this.pos
   if (this.options.locations) this.endLoc = this.curPosition()
   var prevType = this.type
@@ -2819,7 +3009,7 @@ pp$7.finishToken = function(type, val) {
 //
 // All in the name of speed.
 //
-pp$7.readToken_dot = function() {
+pp$8.readToken_dot = function() {
   var next = this.input.charCodeAt(this.pos + 1)
   if (next >= 48 && next <= 57) return this.readNumber(true)
   var next2 = this.input.charCodeAt(this.pos + 2)
@@ -2832,14 +3022,14 @@ pp$7.readToken_dot = function() {
   }
 }
 
-pp$7.readToken_slash = function() { // '/'
+pp$8.readToken_slash = function() { // '/'
   var next = this.input.charCodeAt(this.pos + 1)
-  if (this.exprAllowed) {++this.pos; return this.readRegexp()}
+  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(tt.slash, 1)
 }
 
-pp$7.readToken_mult_modulo_exp = function(code) { // '%*'
+pp$8.readToken_mult_modulo_exp = function(code) { // '%*'
   var next = this.input.charCodeAt(this.pos + 1)
   var size = 1
   var tokentype = code === 42 ? tt.star : tt.modulo
@@ -2855,20 +3045,20 @@ pp$7.readToken_mult_modulo_exp = function(code) { // '%*'
   return this.finishOp(tokentype, size)
 }
 
-pp$7.readToken_pipe_amp = function(code) { // '|&'
+pp$8.readToken_pipe_amp = function(code) { // '|&'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)
 }
 
-pp$7.readToken_caret = function() { // '^'
+pp$8.readToken_caret = function() { // '^'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(tt.bitwiseXOR, 1)
 }
 
-pp$7.readToken_plus_min = function(code) { // '+-'
+pp$8.readToken_plus_min = function(code) { // '+-'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === code) {
     if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 &&
@@ -2884,7 +3074,7 @@ pp$7.readToken_plus_min = function(code) { // '+-'
   return this.finishOp(tt.plusMin, 1)
 }
 
-pp$7.readToken_lt_gt = function(code) { // '<>'
+pp$8.readToken_lt_gt = function(code) { // '<>'
   var next = this.input.charCodeAt(this.pos + 1)
   var size = 1
   if (next === code) {
@@ -2904,7 +3094,7 @@ pp$7.readToken_lt_gt = function(code) { // '<>'
   return this.finishOp(tt.relational, size)
 }
 
-pp$7.readToken_eq_excl = function(code) { // '=!'
+pp$8.readToken_eq_excl = function(code) { // '=!'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)
   if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'
@@ -2914,7 +3104,7 @@ pp$7.readToken_eq_excl = function(code) { // '=!'
   return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)
 }
 
-pp$7.getTokenFromCode = function(code) {
+pp$8.getTokenFromCode = function(code) {
   switch (code) {
     // The interpretation of a dot depends on whether it is followed
     // by a digit or another two dots.
@@ -2987,7 +3177,7 @@ pp$7.getTokenFromCode = function(code) {
   this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'")
 }
 
-pp$7.finishOp = function(type, size) {
+pp$8.finishOp = function(type, size) {
   var str = this.input.slice(this.pos, this.pos + size)
   this.pos += size
   return this.finishToken(type, str)
@@ -3009,7 +3199,7 @@ function tryCreateRegexp(src, flags, throwErrorAt, parser) {
 
 var regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u")
 
-pp$7.readRegexp = function() {
+pp$8.readRegexp = function() {
   var this$1 = this;
 
   var escaped, inClass, start = this.pos
@@ -3074,7 +3264,7 @@ pp$7.readRegexp = function() {
 // were read, the integer value otherwise. When `len` is given, this
 // will return `null` unless the integer has exactly `len` digits.
 
-pp$7.readInt = function(radix, len) {
+pp$8.readInt = function(radix, len) {
   var this$1 = this;
 
   var start = this.pos, total = 0
@@ -3093,7 +3283,7 @@ pp$7.readInt = function(radix, len) {
   return total
 }
 
-pp$7.readRadixNumber = function(radix) {
+pp$8.readRadixNumber = function(radix) {
   this.pos += 2 // 0x
   var val = this.readInt(radix)
   if (val == null) this.raise(this.start + 2, "Expected number in radix " + radix)
@@ -3103,7 +3293,7 @@ pp$7.readRadixNumber = function(radix) {
 
 // Read an integer, octal integer, or floating-point number.
 
-pp$7.readNumber = function(startsWithDot) {
+pp$8.readNumber = function(startsWithDot) {
   var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48
   if (!startsWithDot && this.readInt(10) === null) this.raise(start, "Invalid number")
   if (octal && this.pos == start + 1) octal = false
@@ -3132,13 +3322,13 @@ pp$7.readNumber = function(startsWithDot) {
 
 // Read a string value, interpreting backslash-escapes.
 
-pp$7.readCodePoint = function() {
+pp$8.readCodePoint = function() {
   var ch = this.input.charCodeAt(this.pos), code
 
   if (ch === 123) {
     if (this.options.ecmaVersion < 6) this.unexpected()
     var codePos = ++this.pos
-    code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)
+    code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos)
     ++this.pos
     if (code > 0x10FFFF) this.raise(codePos, "Code point out of bounds")
   } else {
@@ -3154,7 +3344,7 @@ function codePointToString(code) {
   return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)
 }
 
-pp$7.readString = function(quote) {
+pp$8.readString = function(quote) {
   var this$1 = this;
 
   var out = "", chunkStart = ++this.pos
@@ -3177,7 +3367,7 @@ pp$7.readString = function(quote) {
 
 // Reads template string tokens.
 
-pp$7.readTmplToken = function() {
+pp$8.readTmplToken = function() {
   var this$1 = this;
 
   var out = "", chunkStart = this.pos
@@ -3205,14 +3395,14 @@ pp$7.readTmplToken = function() {
       out += this$1.input.slice(chunkStart, this$1.pos)
       ++this$1.pos
       switch (ch) {
-        case 13:
-          if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos
-        case 10:
-          out += "\n"
-          break
-        default:
-          out += String.fromCharCode(ch)
-          break
+      case 13:
+        if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos
+      case 10:
+        out += "\n"
+        break
+      default:
+        out += String.fromCharCode(ch)
+        break
       }
       if (this$1.options.locations) {
         ++this$1.curLine
@@ -3227,7 +3417,7 @@ pp$7.readTmplToken = function() {
 
 // Used to read escaped characters
 
-pp$7.readEscapedChar = function(inTemplate) {
+pp$8.readEscapedChar = function(inTemplate) {
   var ch = this.input.charCodeAt(++this.pos)
   ++this.pos
   switch (ch) {
@@ -3263,7 +3453,7 @@ pp$7.readEscapedChar = function(inTemplate) {
 
 // Used to read character escape sequences ('\x', '\u', '\U').
 
-pp$7.readHexChar = function(len) {
+pp$8.readHexChar = function(len) {
   var codePos = this.pos
   var n = this.readInt(16, len)
   if (n === null) this.raise(codePos, "Bad character escape sequence")
@@ -3276,7 +3466,7 @@ pp$7.readHexChar = function(len) {
 // Incrementally adds only escaped chars, adding other chunks as-is
 // as a micro-optimization.
 
-pp$7.readWord1 = function() {
+pp$8.readWord1 = function() {
   var this$1 = this;
 
   this.containsEsc = false
@@ -3309,11 +3499,13 @@ pp$7.readWord1 = function() {
 // Read an identifier or keyword token. Will check for reserved
 // words when necessary.
 
-pp$7.readWord = function() {
+pp$8.readWord = function() {
   var word = this.readWord1()
   var type = tt.name
-  if ((this.options.ecmaVersion >= 6 || !this.containsEsc) && this.keywords.test(word))
+  if (this.keywords.test(word)) {
+    if (this.containsEsc) this.raiseRecoverable(this.start, "Escape sequence in keyword " + word)
     type = keywordTypes[word]
+  }
   return this.finishToken(type, word)
 }
 
@@ -3338,7 +3530,7 @@ pp$7.readWord = function() {
 // [dammit]: acorn_loose.js
 // [walk]: util/walk.js
 
-var version = "4.0.4"
+var version = "5.0.3"
 
 // The main exported interface (under `self.acorn` when in the
 // browser) is a `parse` function that takes a code string and
@@ -3371,10 +3563,11 @@ function tokenizer(input, options) {
 // This is a terrible kludge to support the existing, pre-ES6
 // interface where the loose parser module retroactively adds exports
 // to this module.
+// eslint-disable-line camelcase
 function addLooseExports(parse, Parser, plugins) {
-  parse_dammit = parse
+  parse_dammit = parse // eslint-disable-line camelcase
   LooseParser = Parser
   pluginsLoose = plugins
 }
 
-export { version, parse, parseExpressionAt, tokenizer, parse_dammit, LooseParser, pluginsLoose, addLooseExports, Parser, plugins, defaultOptions, Position, SourceLocation, getLineInfo, Node, TokenType, tt as tokTypes, TokContext, types as tokContexts, isIdentifierChar, isIdentifierStart, Token, isNewLine, lineBreak, lineBreakG };
\ No newline at end of file
+export { version, parse, parseExpressionAt, tokenizer, parse_dammit, LooseParser, pluginsLoose, addLooseExports, Parser, plugins, defaultOptions, Position, SourceLocation, getLineInfo, Node, TokenType, tt as tokTypes, keywordTypes, TokContext, types as tokContexts, isIdentifierChar, isIdentifierStart, Token, isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace };
\ No newline at end of file
diff --git a/tools/eslint/node_modules/acorn/dist/acorn.js b/tools/eslint/node_modules/acorn/dist/acorn.js
index ea572b3ebd3f4b..ce66e72fea5483 100644
--- a/tools/eslint/node_modules/acorn/dist/acorn.js
+++ b/tools/eslint/node_modules/acorn/dist/acorn.js
@@ -44,7 +44,11 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null
 // offset starts at 0x10000, and each pair of numbers represents an
 // offset to the next range, and then a size of the range. They were
 // generated by bin/generate-identifier-regex.js
+
+// eslint-disable-next-line comma-spacing
 var astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541]
+
+// eslint-disable-next-line comma-spacing
 var astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]
 
 // This has a complexity linear to the value of the code. The
@@ -250,16 +254,20 @@ var nonASCIIwhitespace = /[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/
 
 var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g
 
-function isArray(obj) {
-  return Object.prototype.toString.call(obj) === "[object Array]"
-}
+var ref = Object.prototype;
+var hasOwnProperty = ref.hasOwnProperty;
+var toString = ref.toString;
 
 // Checks if an object has a property.
 
 function has(obj, propName) {
-  return Object.prototype.hasOwnProperty.call(obj, propName)
+  return hasOwnProperty.call(obj, propName)
 }
 
+var isArray = Array.isArray || (function (obj) { return (
+  toString.call(obj) === "[object Array]"
+); })
+
 // These are used when `options.locations` is on, for the
 // `startLoc` and `endLoc` properties.
 
@@ -407,9 +415,9 @@ function getOptions(opts) {
 }
 
 function pushComment(options, array) {
-  return function (block, text, start, end, startLoc, endLoc) {
+  return function(block, text, start, end, startLoc, endLoc) {
     var comment = {
-      type: block ? 'Block' : 'Line',
+      type: block ? "Block" : "Line",
       value: text,
       start: start,
       end: end
@@ -487,7 +495,8 @@ var Parser = function Parser(options, input, startPos) {
   this.exprAllowed = true
 
   // Figure out if it's a module code.
-  this.strict = this.inModule = options.sourceType === "module"
+  this.inModule = options.sourceType === "module"
+  this.strict = this.inModule || this.strictDirective(this.pos)
 
   // Used to signify the start of a potential arrow function
   this.potentialArrowAt = -1
@@ -500,8 +509,12 @@ var Parser = function Parser(options, input, startPos) {
   this.labels = []
 
   // If enabled, skip leading hashbang line.
-  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!')
+  if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
     this.skipLineComment(2)
+
+  // Scope tracking for duplicate variable names (see scope.js)
+  this.scopeStack = []
+  this.enterFunctionScope()
 };
 
 // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them
@@ -532,12 +545,18 @@ var pp = Parser.prototype
 
 // ## Parser utilities
 
-// Test whether a statement node is the string literal `"use strict"`.
+var literal = /^(?:'((?:[^']|\.)*)'|"((?:[^"]|\.)*)"|;)/
+pp.strictDirective = function(start) {
+  var this$1 = this;
 
-pp.isUseStrict = function(stmt) {
-  return this.options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" &&
-    stmt.expression.type === "Literal" &&
-    stmt.expression.raw.slice(1, -1) === "use strict"
+  for (;;) {
+    skipWhiteSpace.lastIndex = start
+    start += skipWhiteSpace.exec(this$1.input)[0].length
+    var match = literal.exec(this$1.input.slice(start))
+    if (!match) return false
+    if ((match[1] || match[2]) == "use strict") return true
+    start += match[0].length
+  }
 }
 
 // Predicate that tests whether the next token is of the given
@@ -617,20 +636,21 @@ pp.unexpected = function(pos) {
 }
 
 var DestructuringErrors = function DestructuringErrors() {
-  this.shorthandAssign = 0
-  this.trailingComma = 0
+  this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1
 };
 
-pp.checkPatternErrors = function(refDestructuringErrors, andThrow) {
-  var trailing = refDestructuringErrors && refDestructuringErrors.trailingComma
-  if (!andThrow) return !!trailing
-  if (trailing) this.raise(trailing, "Comma is not permitted after the rest element")
+pp.checkPatternErrors = function(refDestructuringErrors, isAssign) {
+  if (!refDestructuringErrors) return
+  if (refDestructuringErrors.trailingComma > -1)
+    this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element")
+  var parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind
+  if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern")
 }
 
 pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
-  var pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign
-  if (!andThrow) return !!pos
-  if (pos) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
+  var pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1
+  if (!andThrow) return pos >= 0
+  if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
 }
 
 pp.checkYieldAwaitInDefaultParams = function() {
@@ -640,6 +660,12 @@ pp.checkYieldAwaitInDefaultParams = function() {
     this.raise(this.awaitPos, "Await expression cannot be a default value")
 }
 
+pp.isSimpleAssignTarget = function(expr) {
+  if (expr.type === "ParenthesizedExpression")
+    return this.isSimpleAssignTarget(expr.expression)
+  return expr.type === "Identifier" || expr.type === "MemberExpression"
+}
+
 var pp$1 = Parser.prototype
 
 // ### Statement parsing
@@ -652,15 +678,11 @@ var pp$1 = Parser.prototype
 pp$1.parseTopLevel = function(node) {
   var this$1 = this;
 
-  var first = true, exports = {}
+  var exports = {}
   if (!node.body) node.body = []
   while (this.type !== tt.eof) {
     var stmt = this$1.parseStatement(true, true, exports)
     node.body.push(stmt)
-    if (first) {
-      if (this$1.isUseStrict(stmt)) this$1.setStrict(true)
-      first = false
-    }
   }
   this.next()
   if (this.options.ecmaVersion >= 6) {
@@ -678,7 +700,8 @@ pp$1.isLet = function() {
   var next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)
   if (nextCh === 91 || nextCh == 123) return true // '{' and '['
   if (isIdentifierStart(nextCh, true)) {
-    for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {}
+    var pos = next + 1
+    while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos
     var ident = this.input.slice(next, pos)
     if (!this.isKeyword(ident)) return true
   }
@@ -785,7 +808,8 @@ pp$1.parseBreakContinueStatement = function(node, keyword) {
 
   // Verify that there is an actual destination to break or
   // continue to.
-  for (var i = 0; i < this.labels.length; ++i) {
+  var i = 0
+  for (; i < this.labels.length; ++i) {
     var lab = this$1.labels[i]
     if (node.label == null || lab.name === node.label.name) {
       if (lab.kind != null && (isBreak || lab.kind === "loop")) break
@@ -827,6 +851,7 @@ pp$1.parseDoStatement = function(node) {
 pp$1.parseForStatement = function(node) {
   this.next()
   this.labels.push(loopLabel)
+  this.enterLexicalScope()
   this.expect(tt.parenL)
   if (this.type === tt.semi) return this.parseFor(node, null)
   var isLet = this.isLet()
@@ -843,9 +868,9 @@ pp$1.parseForStatement = function(node) {
   var refDestructuringErrors = new DestructuringErrors
   var init = this.parseExpression(true, refDestructuringErrors)
   if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) {
-    this.checkPatternErrors(refDestructuringErrors, true)
     this.toAssignable(init)
     this.checkLVal(init)
+    this.checkPatternErrors(refDestructuringErrors, true)
     return this.parseForIn(node, init)
   } else {
     this.checkExpressionErrors(refDestructuringErrors, true)
@@ -893,12 +918,14 @@ pp$1.parseSwitchStatement = function(node) {
   node.cases = []
   this.expect(tt.braceL)
   this.labels.push(switchLabel)
+  this.enterLexicalScope()
 
   // Statements under must be grouped (by label) in SwitchCase
   // nodes. `cur` is used to keep the node that we are currently
   // adding statements to.
 
-  for (var cur, sawDefault = false; this.type != tt.braceR;) {
+  var cur
+  for (var sawDefault = false; this.type != tt.braceR;) {
     if (this$1.type === tt._case || this$1.type === tt._default) {
       var isCase = this$1.type === tt._case
       if (cur) this$1.finishNode(cur, "SwitchCase")
@@ -918,6 +945,7 @@ pp$1.parseSwitchStatement = function(node) {
       cur.consequent.push(this$1.parseStatement(true))
     }
   }
+  this.exitLexicalScope()
   if (cur) this.finishNode(cur, "SwitchCase")
   this.next() // Closing brace
   this.labels.pop()
@@ -946,9 +974,11 @@ pp$1.parseTryStatement = function(node) {
     this.next()
     this.expect(tt.parenL)
     clause.param = this.parseBindingAtom()
-    this.checkLVal(clause.param, true)
+    this.enterLexicalScope()
+    this.checkLVal(clause.param, "let")
     this.expect(tt.parenR)
-    clause.body = this.parseBlock()
+    clause.body = this.parseBlock(false)
+    this.exitLexicalScope()
     node.handler = this.finishNode(clause, "CatchClause")
   }
   node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null
@@ -1001,6 +1031,10 @@ pp$1.parseLabeledStatement = function(node, maybeName, expr) {
   }
   this.labels.push({name: maybeName, kind: kind, statementStart: this.start})
   node.body = this.parseStatement(true)
+  if (node.body.type == "ClassDeclaration" ||
+      node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
+      node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
+    this.raiseRecoverable(node.body.start, "Invalid labeled declaration")
   this.labels.pop()
   node.label = expr
   return this.finishNode(node, "LabeledStatement")
@@ -1016,22 +1050,23 @@ pp$1.parseExpressionStatement = function(node, expr) {
 // strict"` declarations when `allowStrict` is true (used for
 // function bodies).
 
-pp$1.parseBlock = function(allowStrict) {
+pp$1.parseBlock = function(createNewLexicalScope) {
   var this$1 = this;
+  if ( createNewLexicalScope === void 0 ) createNewLexicalScope = true;
 
-  var node = this.startNode(), first = true, oldStrict
+  var node = this.startNode()
   node.body = []
   this.expect(tt.braceL)
+  if (createNewLexicalScope) {
+    this.enterLexicalScope()
+  }
   while (!this.eat(tt.braceR)) {
     var stmt = this$1.parseStatement(true)
     node.body.push(stmt)
-    if (first && allowStrict && this$1.isUseStrict(stmt)) {
-      oldStrict = this$1.strict
-      this$1.setStrict(this$1.strict = true)
-    }
-    first = false
   }
-  if (oldStrict === false) this.setStrict(false)
+  if (createNewLexicalScope) {
+    this.exitLexicalScope()
+  }
   return this.finishNode(node, "BlockStatement")
 }
 
@@ -1046,6 +1081,7 @@ pp$1.parseFor = function(node, init) {
   this.expect(tt.semi)
   node.update = this.type === tt.parenR ? null : this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, "ForStatement")
@@ -1060,6 +1096,7 @@ pp$1.parseForIn = function(node, init) {
   node.left = init
   node.right = this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, type)
@@ -1074,7 +1111,7 @@ pp$1.parseVar = function(node, isFor, kind) {
   node.kind = kind
   for (;;) {
     var decl = this$1.startNode()
-    this$1.parseVarId(decl)
+    this$1.parseVarId(decl, kind)
     if (this$1.eat(tt.eq)) {
       decl.init = this$1.parseMaybeAssign(isFor)
     } else if (kind === "const" && !(this$1.type === tt._in || (this$1.options.ecmaVersion >= 6 && this$1.isContextual("of")))) {
@@ -1090,9 +1127,9 @@ pp$1.parseVar = function(node, isFor, kind) {
   return node
 }
 
-pp$1.parseVarId = function(decl) {
-  decl.id = this.parseBindingAtom()
-  this.checkLVal(decl.id, true)
+pp$1.parseVarId = function(decl, kind) {
+  decl.id = this.parseBindingAtom(kind)
+  this.checkLVal(decl.id, kind, false)
 }
 
 // Parse a function declaration or literal (depending on the
@@ -1105,17 +1142,25 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
 
-  if (isStatement)
-    node.id = this.parseIdent()
+  if (isStatement) {
+    node.id = isStatement === "nullableID" && this.type != tt.name ? null : this.parseIdent()
+    if (node.id) {
+      this.checkLVal(node.id, "var")
+    }
+  }
 
-  var oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
   this.inGenerator = node.generator
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
+
+  if (!isStatement)
+    node.id = this.type == tt.name ? this.parseIdent() : null
 
-  if (!isStatement && this.type === tt.name)
-    node.id = this.parseIdent()
   this.parseFunctionParams(node)
   this.parseFunctionBody(node, allowExpressionBody)
 
@@ -1123,6 +1168,7 @@ pp$1.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
 }
 
@@ -1139,6 +1185,7 @@ pp$1.parseClass = function(node, isStatement) {
   var this$1 = this;
 
   this.next()
+
   this.parseClassId(node, isStatement)
   this.parseClassSuper(node)
   var classBody = this.startNode()
@@ -1208,7 +1255,7 @@ pp$1.parseClassMethod = function(classBody, method, isGenerator, isAsync) {
 }
 
 pp$1.parseClassId = function(node, isStatement) {
-  node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null
+  node.id = this.type === tt.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null
 }
 
 pp$1.parseClassSuper = function(node) {
@@ -1230,20 +1277,19 @@ pp$1.parseExport = function(node, exports) {
   }
   if (this.eat(tt._default)) { // export default ...
     this.checkExport(exports, "default", this.lastTokStart)
-    var parens = this.type == tt.parenL
-    var expr = this.parseMaybeAssign()
-    var needsSemi = true
-    if (!parens && (expr.type == "FunctionExpression" ||
-                    expr.type == "ClassExpression")) {
-      needsSemi = false
-      if (expr.id) {
-        expr.type = expr.type == "FunctionExpression"
-          ? "FunctionDeclaration"
-          : "ClassDeclaration"
-      }
+    var isAsync
+    if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {
+      var fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", false, isAsync)
+    } else if (this.type === tt._class) {
+      var cNode = this.startNode()
+      node.declaration = this.parseClass(cNode, "nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    if (needsSemi) this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   // export var|const|let|function|class ...
@@ -1277,7 +1323,7 @@ pp$1.parseExport = function(node, exports) {
 
 pp$1.checkExport = function(exports, name, pos) {
   if (!exports) return
-  if (Object.prototype.hasOwnProperty.call(exports, name))
+  if (has(exports, name))
     this.raiseRecoverable(pos, "Duplicate export '" + name + "'")
   exports[name] = true
 }
@@ -1311,12 +1357,12 @@ pp$1.checkVariableExport = function(exports, decls) {
 }
 
 pp$1.shouldParseExportStatement = function() {
-  return this.type.keyword === "var"
-    || this.type.keyword === "const"
-    || this.type.keyword === "class"
-    || this.type.keyword === "function"
-    || this.isLet()
-    || this.isAsyncFunction()
+  return this.type.keyword === "var" ||
+    this.type.keyword === "const" ||
+    this.type.keyword === "class" ||
+    this.type.keyword === "function" ||
+    this.isLet() ||
+    this.isAsyncFunction()
 }
 
 // Parses a comma-separated list of module exports.
@@ -1334,7 +1380,7 @@ pp$1.parseExportSpecifiers = function(exports) {
     } else first = false
 
     var node = this$1.startNode()
-    node.local = this$1.parseIdent(this$1.type === tt._default)
+    node.local = this$1.parseIdent(true)
     node.exported = this$1.eatContextual("as") ? this$1.parseIdent(true) : node.local
     this$1.checkExport(exports, node.exported.name, node.exported.start)
     nodes.push(this$1.finishNode(node, "ExportSpecifier"))
@@ -1369,7 +1415,7 @@ pp$1.parseImportSpecifiers = function() {
     // import defaultObj, { x, y as z } from '...'
     var node = this.startNode()
     node.local = this.parseIdent()
-    this.checkLVal(node.local, true)
+    this.checkLVal(node.local, "let")
     nodes.push(this.finishNode(node, "ImportDefaultSpecifier"))
     if (!this.eat(tt.comma)) return nodes
   }
@@ -1378,7 +1424,7 @@ pp$1.parseImportSpecifiers = function() {
     this.next()
     this.expectContextual("as")
     node$1.local = this.parseIdent()
-    this.checkLVal(node$1.local, true)
+    this.checkLVal(node$1.local, "let")
     nodes.push(this.finishNode(node$1, "ImportNamespaceSpecifier"))
     return nodes
   }
@@ -1398,7 +1444,7 @@ pp$1.parseImportSpecifiers = function() {
       if (this$1.isKeyword(node$2.local.name)) this$1.unexpected(node$2.local.start)
       if (this$1.reservedWordsStrict.test(node$2.local.name)) this$1.raiseRecoverable(node$2.local.start, "The keyword '" + node$2.local.name + "' is reserved")
     }
-    this$1.checkLVal(node$2.local, true)
+    this$1.checkLVal(node$2.local, "let")
     nodes.push(this$1.finishNode(node$2, "ImportSpecifier"))
   }
   return nodes
@@ -1414,7 +1460,7 @@ pp$2.toAssignable = function(node, isBinding) {
 
   if (this.options.ecmaVersion >= 6 && node) {
     switch (node.type) {
-      case "Identifier":
+    case "Identifier":
       if (this.inAsync && node.name === "await")
         this.raise(node.start, "Can not use 'await' as identifier inside an async function")
       break
@@ -1580,51 +1626,68 @@ pp$2.parseMaybeDefault = function(startPos, startLoc, left) {
 
 // Verify that a node is an lval — something that can be assigned
 // to.
+// bindingType can be either:
+// 'var' indicating that the lval creates a 'var' binding
+// 'let' indicating that the lval creates a lexical ('let' or 'const') binding
+// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references
 
-pp$2.checkLVal = function(expr, isBinding, checkClashes) {
+pp$2.checkLVal = function(expr, bindingType, checkClashes) {
   var this$1 = this;
 
   switch (expr.type) {
   case "Identifier":
     if (this.strict && this.reservedWordsStrictBind.test(expr.name))
-      this.raiseRecoverable(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
+      this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
     if (checkClashes) {
       if (has(checkClashes, expr.name))
         this.raiseRecoverable(expr.start, "Argument name clash")
       checkClashes[expr.name] = true
     }
+    if (bindingType && bindingType !== "none") {
+      if (
+        bindingType === "var" && !this.canDeclareVarName(expr.name) ||
+        bindingType !== "var" && !this.canDeclareLexicalName(expr.name)
+      ) {
+        this.raiseRecoverable(expr.start, ("Identifier '" + (expr.name) + "' has already been declared"))
+      }
+      if (bindingType === "var") {
+        this.declareVarName(expr.name)
+      } else {
+        this.declareLexicalName(expr.name)
+      }
+    }
     break
 
   case "MemberExpression":
-    if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression")
+    if (bindingType) this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression")
     break
 
   case "ObjectPattern":
     for (var i = 0; i < expr.properties.length; i++)
-      this$1.checkLVal(expr.properties[i].value, isBinding, checkClashes)
+      this$1.checkLVal(expr.properties[i].value, bindingType, checkClashes)
     break
 
   case "ArrayPattern":
     for (var i$1 = 0; i$1 < expr.elements.length; i$1++) {
       var elem = expr.elements[i$1]
-      if (elem) this$1.checkLVal(elem, isBinding, checkClashes)
+      if (elem) this$1.checkLVal(elem, bindingType, checkClashes)
     }
     break
 
   case "AssignmentPattern":
-    this.checkLVal(expr.left, isBinding, checkClashes)
+    this.checkLVal(expr.left, bindingType, checkClashes)
     break
 
   case "RestElement":
-    this.checkLVal(expr.argument, isBinding, checkClashes)
+    this.checkLVal(expr.argument, bindingType, checkClashes)
     break
 
   case "ParenthesizedExpression":
-    this.checkLVal(expr.expression, isBinding, checkClashes)
+    this.checkLVal(expr.expression, bindingType, checkClashes)
     break
 
   default:
-    this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue")
+    this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue")
   }
 }
 
@@ -1674,8 +1737,13 @@ pp$3.checkPropClash = function(prop, propHash) {
   name = "$" + name
   var other = propHash[name]
   if (other) {
-    var isGetSet = kind !== "init"
-    if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init))
+    var redefinition
+    if (kind === "init") {
+      redefinition = this.strict && other.init || other.get || other.set
+    } else {
+      redefinition = other.init || other[kind]
+    }
+    if (redefinition)
       this.raiseRecoverable(key.start, "Redefinition of property")
   } else {
     other = propHash[name] = {
@@ -1722,11 +1790,16 @@ pp$3.parseExpression = function(noIn, refDestructuringErrors) {
 pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   if (this.inGenerator && this.isContextual("yield")) return this.parseYield()
 
-  var ownDestructuringErrors = false
-  if (!refDestructuringErrors) {
+  var ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1
+  if (refDestructuringErrors) {
+    oldParenAssign = refDestructuringErrors.parenthesizedAssign
+    oldTrailingComma = refDestructuringErrors.trailingComma
+    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1
+  } else {
     refDestructuringErrors = new DestructuringErrors
     ownDestructuringErrors = true
   }
+
   var startPos = this.start, startLoc = this.startLoc
   if (this.type == tt.parenL || this.type == tt.name)
     this.potentialArrowAt = this.start
@@ -1738,7 +1811,7 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
     var node = this.startNodeAt(startPos, startLoc)
     node.operator = this.value
     node.left = this.type === tt.eq ? this.toAssignable(left) : left
-    refDestructuringErrors.shorthandAssign = 0 // reset because shorthand default was used correctly
+    refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly
     this.checkLVal(left)
     this.next()
     node.right = this.parseMaybeAssign(noIn)
@@ -1746,6 +1819,8 @@ pp$3.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   } else {
     if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)
   }
+  if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign
+  if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma
   return left
 }
 
@@ -1772,7 +1847,7 @@ pp$3.parseExprOps = function(noIn, refDestructuringErrors) {
   var startPos = this.start, startLoc = this.startLoc
   var expr = this.parseMaybeUnary(refDestructuringErrors, false)
   if (this.checkExpressionErrors(refDestructuringErrors)) return expr
-  return this.parseExprOp(expr, startPos, startLoc, -1, noIn)
+  return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
 }
 
 // Parse binary operators with the operator precedence parsing
@@ -1854,34 +1929,34 @@ pp$3.parseExprSubscripts = function(refDestructuringErrors) {
   var expr = this.parseExprAtom(refDestructuringErrors)
   var skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"
   if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr
-  return this.parseSubscripts(expr, startPos, startLoc)
+  var result = this.parseSubscripts(expr, startPos, startLoc)
+  if (refDestructuringErrors && result.type === "MemberExpression") {
+    if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1
+    if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1
+  }
+  return result
 }
 
 pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
   var this$1 = this;
 
-  for (;;) {
-    var maybeAsyncArrow = this$1.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && !this$1.canInsertSemicolon()
-    if (this$1.eat(tt.dot)) {
+  var maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
+      this.lastTokEnd == base.end && !this.canInsertSemicolon()
+  for (var computed;;) {
+    if ((computed = this$1.eat(tt.bracketL)) || this$1.eat(tt.dot)) {
       var node = this$1.startNodeAt(startPos, startLoc)
       node.object = base
-      node.property = this$1.parseIdent(true)
-      node.computed = false
+      node.property = computed ? this$1.parseExpression() : this$1.parseIdent(true)
+      node.computed = !!computed
+      if (computed) this$1.expect(tt.bracketR)
       base = this$1.finishNode(node, "MemberExpression")
-    } else if (this$1.eat(tt.bracketL)) {
-      var node$1 = this$1.startNodeAt(startPos, startLoc)
-      node$1.object = base
-      node$1.property = this$1.parseExpression()
-      node$1.computed = true
-      this$1.expect(tt.bracketR)
-      base = this$1.finishNode(node$1, "MemberExpression")
     } else if (!noCalls && this$1.eat(tt.parenL)) {
       var refDestructuringErrors = new DestructuringErrors, oldYieldPos = this$1.yieldPos, oldAwaitPos = this$1.awaitPos
       this$1.yieldPos = 0
       this$1.awaitPos = 0
       var exprList = this$1.parseExprList(tt.parenR, this$1.options.ecmaVersion >= 8, false, refDestructuringErrors)
       if (maybeAsyncArrow && !this$1.canInsertSemicolon() && this$1.eat(tt.arrow)) {
-        this$1.checkPatternErrors(refDestructuringErrors, true)
+        this$1.checkPatternErrors(refDestructuringErrors, false)
         this$1.checkYieldAwaitInDefaultParams()
         this$1.yieldPos = oldYieldPos
         this$1.awaitPos = oldAwaitPos
@@ -1890,15 +1965,15 @@ pp$3.parseSubscripts = function(base, startPos, startLoc, noCalls) {
       this$1.checkExpressionErrors(refDestructuringErrors, true)
       this$1.yieldPos = oldYieldPos || this$1.yieldPos
       this$1.awaitPos = oldAwaitPos || this$1.awaitPos
-      var node$2 = this$1.startNodeAt(startPos, startLoc)
-      node$2.callee = base
-      node$2.arguments = exprList
-      base = this$1.finishNode(node$2, "CallExpression")
+      var node$1 = this$1.startNodeAt(startPos, startLoc)
+      node$1.callee = base
+      node$1.arguments = exprList
+      base = this$1.finishNode(node$1, "CallExpression")
     } else if (this$1.type === tt.backQuote) {
-      var node$3 = this$1.startNodeAt(startPos, startLoc)
-      node$3.tag = base
-      node$3.quasi = this$1.parseTemplate()
-      base = this$1.finishNode(node$3, "TaggedTemplateExpression")
+      var node$2 = this$1.startNodeAt(startPos, startLoc)
+      node$2.tag = base
+      node$2.quasi = this$1.parseTemplate()
+      base = this$1.finishNode(node$2, "TaggedTemplateExpression")
     } else {
       return base
     }
@@ -1957,7 +2032,14 @@ pp$3.parseExprAtom = function(refDestructuringErrors) {
     return this.finishNode(node, "Literal")
 
   case tt.parenL:
-    return this.parseParenAndDistinguishExpression(canBeArrow)
+    var start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)
+    if (refDestructuringErrors) {
+      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))
+        refDestructuringErrors.parenthesizedAssign = start
+      if (refDestructuringErrors.parenthesizedBind < 0)
+        refDestructuringErrors.parenthesizedBind = start
+    }
+    return expr
 
   case tt.bracketL:
     node = this.startNode()
@@ -2035,7 +2117,7 @@ pp$3.parseParenAndDistinguishExpression = function(canBeArrow) {
     this.expect(tt.parenR)
 
     if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {
-      this.checkPatternErrors(refDestructuringErrors, true)
+      this.checkPatternErrors(refDestructuringErrors, false)
       this.checkYieldAwaitInDefaultParams()
       if (innerParenStart) this.unexpected(innerParenStart)
       this.yieldPos = oldYieldPos
@@ -2109,7 +2191,7 @@ pp$3.parseNew = function() {
 pp$3.parseTemplateElement = function() {
   var elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"),
     cooked: this.value
   }
   this.next()
@@ -2216,7 +2298,7 @@ pp$3.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startP
     if (isPattern) {
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else if (this.type === tt.eq && refDestructuringErrors) {
-      if (!refDestructuringErrors.shorthandAssign)
+      if (refDestructuringErrors.shorthandAssign < 0)
         refDestructuringErrors.shorthandAssign = this.start
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else {
@@ -2255,7 +2337,8 @@ pp$3.initFunction = function(node) {
 // Parse object or class method.
 
 pp$3.parseMethod = function(isGenerator, isAsync) {
-  var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
   this.initFunction(node)
   if (this.options.ecmaVersion >= 6)
@@ -2267,6 +2350,8 @@ pp$3.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
 
   this.expect(tt.parenL)
   node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)
@@ -2277,14 +2362,17 @@ pp$3.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "FunctionExpression")
 }
 
 // Parse arrow function expression with given parameters.
 
 pp$3.parseArrowExpression = function(node, params, isAsync) {
-  var oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  var oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
+  this.enterFunctionScope()
   this.initFunction(node)
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
@@ -2293,6 +2381,7 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
 
   node.params = this.toAssignableList(params, true)
   this.parseFunctionBody(node, true)
@@ -2301,6 +2390,7 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "ArrowFunctionExpression")
 }
 
@@ -2308,37 +2398,42 @@ pp$3.parseArrowExpression = function(node, params, isAsync) {
 
 pp$3.parseFunctionBody = function(node, isArrowFunction) {
   var isExpression = isArrowFunction && this.type !== tt.braceL
+  var oldStrict = this.strict, useStrict = false
 
   if (isExpression) {
     node.body = this.parseMaybeAssign()
     node.expression = true
+    this.checkParams(node, false)
   } else {
+    var nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)
+    if (!oldStrict || nonSimple) {
+      useStrict = this.strictDirective(this.end)
+      // If this is a strict mode function, verify that argument names
+      // are not repeated, and it does not try to bind the words `eval`
+      // or `arguments`.
+      if (useStrict && nonSimple)
+        this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list")
+    }
     // Start a new scope with regard to labels and the `inFunction`
     // flag (restore them to their old value afterwards).
-    var oldInFunc = this.inFunction, oldLabels = this.labels
-    this.inFunction = true; this.labels = []
-    node.body = this.parseBlock(true)
+    var oldLabels = this.labels
+    this.labels = []
+    if (useStrict) this.strict = true
+
+    // Add the params to varDeclaredNames to ensure that an error is thrown
+    // if a let/const declaration in the function clashes with one of the params.
+    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))
+    node.body = this.parseBlock(false)
     node.expression = false
-    this.inFunction = oldInFunc; this.labels = oldLabels
+    this.labels = oldLabels
   }
+  this.exitFunctionScope()
 
-  // If this is a strict mode function, verify that argument names
-  // are not repeated, and it does not try to bind the words `eval`
-  // or `arguments`.
-  var useStrict = (!isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) ? node.body.body[0] : null
-  if (useStrict && this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params))
-    this.raiseRecoverable(useStrict.start, "Illegal 'use strict' directive in function with non-simple parameter list")
-
-  if (this.strict || useStrict) {
-    var oldStrict = this.strict
-    this.strict = true
-    if (node.id)
-      this.checkLVal(node.id, true)
-    this.checkParams(node)
-    this.strict = oldStrict
-  } else if (isArrowFunction || !this.isSimpleParamList(node.params)) {
-    this.checkParams(node)
+  if (this.strict && node.id) {
+    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'
+    this.checkLVal(node.id, "none")
   }
+  this.strict = oldStrict
 }
 
 pp$3.isSimpleParamList = function(params) {
@@ -2350,11 +2445,11 @@ pp$3.isSimpleParamList = function(params) {
 // Checks function params for various disallowed patterns such as using "eval"
 // or "arguments" and duplicate parameters.
 
-pp$3.checkParams = function(node) {
+pp$3.checkParams = function(node, allowDuplicates) {
   var this$1 = this;
 
   var nameHash = {}
-  for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], true, nameHash)
+  for (var i = 0; i < node.params.length; i++) this$1.checkLVal(node.params[i], "var", allowDuplicates ? null : nameHash)
 }
 
 // Parses a comma-separated list of expressions, and returns them as
@@ -2378,11 +2473,11 @@ pp$3.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestruct
       elt = null
     else if (this$1.type === tt.ellipsis) {
       elt = this$1.parseSpread(refDestructuringErrors)
-      if (this$1.type === tt.comma && refDestructuringErrors && !refDestructuringErrors.trailingComma) {
+      if (refDestructuringErrors && this$1.type === tt.comma && refDestructuringErrors.trailingComma < 0)
         refDestructuringErrors.trailingComma = this$1.start
-      }
-    } else
+    } else {
       elt = this$1.parseMaybeAssign(false, refDestructuringErrors)
+    }
     elts.push(elt)
   }
   return elts
@@ -2464,6 +2559,82 @@ pp$4.curPosition = function() {
   }
 }
 
+var pp$5 = Parser.prototype
+
+// Object.assign polyfill
+var assign = Object.assign || function(target) {
+  var sources = [], len = arguments.length - 1;
+  while ( len-- > 0 ) sources[ len ] = arguments[ len + 1 ];
+
+  for (var i = 0; i < sources.length; i++) {
+    var source = sources[i]
+    for (var key in source) {
+      if (has(source, key)) {
+        target[key] = source[key]
+      }
+    }
+  }
+  return target
+}
+
+// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.
+
+pp$5.enterFunctionScope = function() {
+  // var: a hash of var-declared names in the current lexical scope
+  // lexical: a hash of lexically-declared names in the current lexical scope
+  // childVar: a hash of var-declared names in all child lexical scopes of the current lexical scope (within the current function scope)
+  // parentLexical: a hash of lexically-declared names in all parent lexical scopes of the current lexical scope (within the current function scope)
+  this.scopeStack.push({var: {}, lexical: {}, childVar: {}, parentLexical: {}})
+}
+
+pp$5.exitFunctionScope = function() {
+  this.scopeStack.pop()
+}
+
+pp$5.enterLexicalScope = function() {
+  var parentScope = this.scopeStack[this.scopeStack.length - 1]
+  var childScope = {var: {}, lexical: {}, childVar: {}, parentLexical: {}}
+
+  this.scopeStack.push(childScope)
+  assign(childScope.parentLexical, parentScope.lexical, parentScope.parentLexical)
+}
+
+pp$5.exitLexicalScope = function() {
+  var childScope = this.scopeStack.pop()
+  var parentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  assign(parentScope.childVar, childScope.var, childScope.childVar)
+}
+
+/**
+ * A name can be declared with `var` if there are no variables with the same name declared with `let`/`const`
+ * in the current lexical scope or any of the parent lexical scopes in this function.
+ */
+pp$5.canDeclareVarName = function(name) {
+  var currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.parentLexical, name)
+}
+
+/**
+ * A name can be declared with `let`/`const` if there are no variables with the same name declared with `let`/`const`
+ * in the current scope, and there are no variables with the same name declared with `var` in the current scope or in
+ * any child lexical scopes in this function.
+ */
+pp$5.canDeclareLexicalName = function(name) {
+  var currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.var, name) && !has(currentScope.childVar, name)
+}
+
+pp$5.declareVarName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].var[name] = true
+}
+
+pp$5.declareLexicalName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].lexical[name] = true
+}
+
 var Node = function Node(parser, pos, loc) {
   this.type = ""
   this.start = pos
@@ -2478,13 +2649,13 @@ var Node = function Node(parser, pos, loc) {
 
 // Start an AST node, attaching a start offset.
 
-var pp$5 = Parser.prototype
+var pp$6 = Parser.prototype
 
-pp$5.startNode = function() {
+pp$6.startNode = function() {
   return new Node(this, this.start, this.startLoc)
 }
 
-pp$5.startNodeAt = function(pos, loc) {
+pp$6.startNodeAt = function(pos, loc) {
   return new Node(this, pos, loc)
 }
 
@@ -2500,13 +2671,13 @@ function finishNodeAt(node, type, pos, loc) {
   return node
 }
 
-pp$5.finishNode = function(node, type) {
+pp$6.finishNode = function(node, type) {
   return finishNodeAt.call(this, node, type, this.lastTokEnd, this.lastTokEndLoc)
 }
 
 // Finish node at given position
 
-pp$5.finishNodeAt = function(node, type, pos, loc) {
+pp$6.finishNodeAt = function(node, type, pos, loc) {
   return finishNodeAt.call(this, node, type, pos, loc)
 }
 
@@ -2514,11 +2685,12 @@ pp$5.finishNodeAt = function(node, type, pos, loc) {
 // given point in the program is loosely based on sweet.js' approach.
 // See https://github.com/mozilla/sweet.js/wiki/design
 
-var TokContext = function TokContext(token, isExpr, preserveSpace, override) {
+var TokContext = function TokContext(token, isExpr, preserveSpace, override, generator) {
   this.token = token
   this.isExpr = !!isExpr
   this.preserveSpace = !!preserveSpace
   this.override = override
+  this.generator = !!generator
 };
 
 var types = {
@@ -2528,16 +2700,18 @@ var types = {
   p_stat: new TokContext("(", false),
   p_expr: new TokContext("(", true),
   q_tmpl: new TokContext("`", true, true, function (p) { return p.readTmplToken(); }),
-  f_expr: new TokContext("function", true)
+  f_expr: new TokContext("function", true),
+  f_expr_gen: new TokContext("function", true, false, null, true),
+  f_gen: new TokContext("function", false, false, null, true)
 }
 
-var pp$6 = Parser.prototype
+var pp$7 = Parser.prototype
 
-pp$6.initialContext = function() {
+pp$7.initialContext = function() {
   return [types.b_stat]
 }
 
-pp$6.braceIsBlock = function(prevType) {
+pp$7.braceIsBlock = function(prevType) {
   if (prevType === tt.colon) {
     var parent = this.curContext()
     if (parent === types.b_stat || parent === types.b_expr)
@@ -2545,14 +2719,22 @@ pp$6.braceIsBlock = function(prevType) {
   }
   if (prevType === tt._return)
     return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))
-  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR)
+  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType == tt.arrow)
     return true
   if (prevType == tt.braceL)
     return this.curContext() === types.b_stat
   return !this.exprAllowed
 }
 
-pp$6.updateContext = function(prevType) {
+pp$7.inGeneratorContext = function() {
+  var this$1 = this;
+
+  for (var i = this.context.length - 1; i >= 0; i--)
+    if (this$1.context[i].generator) return true
+  return false
+}
+
+pp$7.updateContext = function(prevType) {
   var update, type = this.type
   if (type.keyword && prevType == tt.dot)
     this.exprAllowed = false
@@ -2569,8 +2751,8 @@ tt.parenR.updateContext = tt.braceR.updateContext = function() {
     this.exprAllowed = true
     return
   }
-  var out = this.context.pop()
-  if (out === types.b_stat && this.curContext() === types.f_expr) {
+  var out = this.context.pop(), cur
+  if (out === types.b_stat && (cur = this.curContext()) && cur.token === "function") {
     this.context.pop()
     this.exprAllowed = false
   } else if (out === types.b_tmpl) {
@@ -2615,6 +2797,26 @@ tt.backQuote.updateContext = function() {
   this.exprAllowed = false
 }
 
+tt.star.updateContext = function(prevType) {
+  if (prevType == tt._function) {
+    if (this.curContext() === types.f_expr)
+      this.context[this.context.length - 1] = types.f_expr_gen
+    else
+      this.context.push(types.f_gen)
+  }
+  this.exprAllowed = true
+}
+
+tt.name.updateContext = function(prevType) {
+  var allowed = false
+  if (this.options.ecmaVersion >= 6) {
+    if (this.value == "of" && !this.exprAllowed ||
+        this.value == "yield" && this.inGeneratorContext())
+      allowed = true
+  }
+  this.exprAllowed = allowed
+}
+
 // Object type used to represent tokens. Note that normally, tokens
 // simply exist as properties on the parser object. This is only
 // used for the onToken callback and the external tokenizer.
@@ -2632,14 +2834,14 @@ var Token = function Token(p) {
 
 // ## Tokenizer
 
-var pp$7 = Parser.prototype
+var pp$8 = Parser.prototype
 
 // Are we running under Rhino?
 var isRhino = typeof Packages == "object" && Object.prototype.toString.call(Packages) == "[object JavaPackage]"
 
 // Move to the next token
 
-pp$7.next = function() {
+pp$8.next = function() {
   if (this.options.onToken)
     this.options.onToken(new Token(this))
 
@@ -2650,50 +2852,38 @@ pp$7.next = function() {
   this.nextToken()
 }
 
-pp$7.getToken = function() {
+pp$8.getToken = function() {
   this.next()
   return new Token(this)
 }
 
 // If we're in an ES6 environment, make parsers iterable
 if (typeof Symbol !== "undefined")
-  pp$7[Symbol.iterator] = function () {
-    var self = this
-    return {next: function () {
-      var token = self.getToken()
-      return {
-        done: token.type === tt.eof,
-        value: token
+  pp$8[Symbol.iterator] = function() {
+    var this$1 = this;
+
+    return {
+      next: function () {
+        var token = this$1.getToken()
+        return {
+          done: token.type === tt.eof,
+          value: token
+        }
       }
-    }}
+    }
   }
 
 // Toggle strict mode. Re-reads the next number or string to please
 // pedantic tests (`"use strict"; 010;` should fail).
 
-pp$7.setStrict = function(strict) {
-  var this$1 = this;
-
-  this.strict = strict
-  if (this.type !== tt.num && this.type !== tt.string) return
-  this.pos = this.start
-  if (this.options.locations) {
-    while (this.pos < this.lineStart) {
-      this$1.lineStart = this$1.input.lastIndexOf("\n", this$1.lineStart - 2) + 1
-      --this$1.curLine
-    }
-  }
-  this.nextToken()
-}
-
-pp$7.curContext = function() {
+pp$8.curContext = function() {
   return this.context[this.context.length - 1]
 }
 
 // Read a single token, updating the parser object's token-related
 // properties.
 
-pp$7.nextToken = function() {
+pp$8.nextToken = function() {
   var curContext = this.curContext()
   if (!curContext || !curContext.preserveSpace) this.skipSpace()
 
@@ -2705,7 +2895,7 @@ pp$7.nextToken = function() {
   else this.readToken(this.fullCharCodeAtPos())
 }
 
-pp$7.readToken = function(code) {
+pp$8.readToken = function(code) {
   // Identifier or keyword. '\uXXXX' sequences are allowed in
   // identifiers, so '\' also dispatches to that.
   if (isIdentifierStart(code, this.options.ecmaVersion >= 6) || code === 92 /* '\' */)
@@ -2714,14 +2904,14 @@ pp$7.readToken = function(code) {
   return this.getTokenFromCode(code)
 }
 
-pp$7.fullCharCodeAtPos = function() {
+pp$8.fullCharCodeAtPos = function() {
   var code = this.input.charCodeAt(this.pos)
   if (code <= 0xd7ff || code >= 0xe000) return code
   var next = this.input.charCodeAt(this.pos + 1)
   return (code << 10) + next - 0x35fdc00
 }
 
-pp$7.skipBlockComment = function() {
+pp$8.skipBlockComment = function() {
   var this$1 = this;
 
   var startLoc = this.options.onComment && this.curPosition()
@@ -2741,12 +2931,12 @@ pp$7.skipBlockComment = function() {
                            startLoc, this.curPosition())
 }
 
-pp$7.skipLineComment = function(startSkip) {
+pp$8.skipLineComment = function(startSkip) {
   var this$1 = this;
 
   var start = this.pos
   var startLoc = this.options.onComment && this.curPosition()
-  var ch = this.input.charCodeAt(this.pos+=startSkip)
+  var ch = this.input.charCodeAt(this.pos += startSkip)
   while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
     ++this$1.pos
     ch = this$1.input.charCodeAt(this$1.pos)
@@ -2759,44 +2949,44 @@ pp$7.skipLineComment = function(startSkip) {
 // Called at the start of the parse and after every token. Skips
 // whitespace and comments, and.
 
-pp$7.skipSpace = function() {
+pp$8.skipSpace = function() {
   var this$1 = this;
 
   loop: while (this.pos < this.input.length) {
     var ch = this$1.input.charCodeAt(this$1.pos)
     switch (ch) {
-      case 32: case 160: // ' '
-        ++this$1.pos
-        break
-      case 13:
-        if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {
-          ++this$1.pos
-        }
-      case 10: case 8232: case 8233:
+    case 32: case 160: // ' '
+      ++this$1.pos
+      break
+    case 13:
+      if (this$1.input.charCodeAt(this$1.pos + 1) === 10) {
         ++this$1.pos
-        if (this$1.options.locations) {
-          ++this$1.curLine
-          this$1.lineStart = this$1.pos
-        }
+      }
+    case 10: case 8232: case 8233:
+      ++this$1.pos
+      if (this$1.options.locations) {
+        ++this$1.curLine
+        this$1.lineStart = this$1.pos
+      }
+      break
+    case 47: // '/'
+      switch (this$1.input.charCodeAt(this$1.pos + 1)) {
+      case 42: // '*'
+        this$1.skipBlockComment()
         break
-      case 47: // '/'
-        switch (this$1.input.charCodeAt(this$1.pos + 1)) {
-          case 42: // '*'
-            this$1.skipBlockComment()
-            break
-          case 47:
-            this$1.skipLineComment(2)
-            break
-          default:
-            break loop
-        }
+      case 47:
+        this$1.skipLineComment(2)
         break
       default:
-        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
-          ++this$1.pos
-        } else {
-          break loop
-        }
+        break loop
+      }
+      break
+    default:
+      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
+        ++this$1.pos
+      } else {
+        break loop
+      }
     }
   }
 }
@@ -2806,7 +2996,7 @@ pp$7.skipSpace = function() {
 // the token, so that the next one's `start` will point at the
 // right position.
 
-pp$7.finishToken = function(type, val) {
+pp$8.finishToken = function(type, val) {
   this.end = this.pos
   if (this.options.locations) this.endLoc = this.curPosition()
   var prevType = this.type
@@ -2825,7 +3015,7 @@ pp$7.finishToken = function(type, val) {
 //
 // All in the name of speed.
 //
-pp$7.readToken_dot = function() {
+pp$8.readToken_dot = function() {
   var next = this.input.charCodeAt(this.pos + 1)
   if (next >= 48 && next <= 57) return this.readNumber(true)
   var next2 = this.input.charCodeAt(this.pos + 2)
@@ -2838,14 +3028,14 @@ pp$7.readToken_dot = function() {
   }
 }
 
-pp$7.readToken_slash = function() { // '/'
+pp$8.readToken_slash = function() { // '/'
   var next = this.input.charCodeAt(this.pos + 1)
-  if (this.exprAllowed) {++this.pos; return this.readRegexp()}
+  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(tt.slash, 1)
 }
 
-pp$7.readToken_mult_modulo_exp = function(code) { // '%*'
+pp$8.readToken_mult_modulo_exp = function(code) { // '%*'
   var next = this.input.charCodeAt(this.pos + 1)
   var size = 1
   var tokentype = code === 42 ? tt.star : tt.modulo
@@ -2861,20 +3051,20 @@ pp$7.readToken_mult_modulo_exp = function(code) { // '%*'
   return this.finishOp(tokentype, size)
 }
 
-pp$7.readToken_pipe_amp = function(code) { // '|&'
+pp$8.readToken_pipe_amp = function(code) { // '|&'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === code) return this.finishOp(code === 124 ? tt.logicalOR : tt.logicalAND, 2)
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(code === 124 ? tt.bitwiseOR : tt.bitwiseAND, 1)
 }
 
-pp$7.readToken_caret = function() { // '^'
+pp$8.readToken_caret = function() { // '^'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(tt.bitwiseXOR, 1)
 }
 
-pp$7.readToken_plus_min = function(code) { // '+-'
+pp$8.readToken_plus_min = function(code) { // '+-'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === code) {
     if (next == 45 && this.input.charCodeAt(this.pos + 2) == 62 &&
@@ -2890,7 +3080,7 @@ pp$7.readToken_plus_min = function(code) { // '+-'
   return this.finishOp(tt.plusMin, 1)
 }
 
-pp$7.readToken_lt_gt = function(code) { // '<>'
+pp$8.readToken_lt_gt = function(code) { // '<>'
   var next = this.input.charCodeAt(this.pos + 1)
   var size = 1
   if (next === code) {
@@ -2910,7 +3100,7 @@ pp$7.readToken_lt_gt = function(code) { // '<>'
   return this.finishOp(tt.relational, size)
 }
 
-pp$7.readToken_eq_excl = function(code) { // '=!'
+pp$8.readToken_eq_excl = function(code) { // '=!'
   var next = this.input.charCodeAt(this.pos + 1)
   if (next === 61) return this.finishOp(tt.equality, this.input.charCodeAt(this.pos + 2) === 61 ? 3 : 2)
   if (code === 61 && next === 62 && this.options.ecmaVersion >= 6) { // '=>'
@@ -2920,7 +3110,7 @@ pp$7.readToken_eq_excl = function(code) { // '=!'
   return this.finishOp(code === 61 ? tt.eq : tt.prefix, 1)
 }
 
-pp$7.getTokenFromCode = function(code) {
+pp$8.getTokenFromCode = function(code) {
   switch (code) {
     // The interpretation of a dot depends on whether it is followed
     // by a digit or another two dots.
@@ -2993,7 +3183,7 @@ pp$7.getTokenFromCode = function(code) {
   this.raise(this.pos, "Unexpected character '" + codePointToString(code) + "'")
 }
 
-pp$7.finishOp = function(type, size) {
+pp$8.finishOp = function(type, size) {
   var str = this.input.slice(this.pos, this.pos + size)
   this.pos += size
   return this.finishToken(type, str)
@@ -3015,7 +3205,7 @@ function tryCreateRegexp(src, flags, throwErrorAt, parser) {
 
 var regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u")
 
-pp$7.readRegexp = function() {
+pp$8.readRegexp = function() {
   var this$1 = this;
 
   var escaped, inClass, start = this.pos
@@ -3080,7 +3270,7 @@ pp$7.readRegexp = function() {
 // were read, the integer value otherwise. When `len` is given, this
 // will return `null` unless the integer has exactly `len` digits.
 
-pp$7.readInt = function(radix, len) {
+pp$8.readInt = function(radix, len) {
   var this$1 = this;
 
   var start = this.pos, total = 0
@@ -3099,7 +3289,7 @@ pp$7.readInt = function(radix, len) {
   return total
 }
 
-pp$7.readRadixNumber = function(radix) {
+pp$8.readRadixNumber = function(radix) {
   this.pos += 2 // 0x
   var val = this.readInt(radix)
   if (val == null) this.raise(this.start + 2, "Expected number in radix " + radix)
@@ -3109,7 +3299,7 @@ pp$7.readRadixNumber = function(radix) {
 
 // Read an integer, octal integer, or floating-point number.
 
-pp$7.readNumber = function(startsWithDot) {
+pp$8.readNumber = function(startsWithDot) {
   var start = this.pos, isFloat = false, octal = this.input.charCodeAt(this.pos) === 48
   if (!startsWithDot && this.readInt(10) === null) this.raise(start, "Invalid number")
   if (octal && this.pos == start + 1) octal = false
@@ -3138,13 +3328,13 @@ pp$7.readNumber = function(startsWithDot) {
 
 // Read a string value, interpreting backslash-escapes.
 
-pp$7.readCodePoint = function() {
+pp$8.readCodePoint = function() {
   var ch = this.input.charCodeAt(this.pos), code
 
   if (ch === 123) {
     if (this.options.ecmaVersion < 6) this.unexpected()
     var codePos = ++this.pos
-    code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)
+    code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos)
     ++this.pos
     if (code > 0x10FFFF) this.raise(codePos, "Code point out of bounds")
   } else {
@@ -3160,7 +3350,7 @@ function codePointToString(code) {
   return String.fromCharCode((code >> 10) + 0xD800, (code & 1023) + 0xDC00)
 }
 
-pp$7.readString = function(quote) {
+pp$8.readString = function(quote) {
   var this$1 = this;
 
   var out = "", chunkStart = ++this.pos
@@ -3183,7 +3373,7 @@ pp$7.readString = function(quote) {
 
 // Reads template string tokens.
 
-pp$7.readTmplToken = function() {
+pp$8.readTmplToken = function() {
   var this$1 = this;
 
   var out = "", chunkStart = this.pos
@@ -3211,14 +3401,14 @@ pp$7.readTmplToken = function() {
       out += this$1.input.slice(chunkStart, this$1.pos)
       ++this$1.pos
       switch (ch) {
-        case 13:
-          if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos
-        case 10:
-          out += "\n"
-          break
-        default:
-          out += String.fromCharCode(ch)
-          break
+      case 13:
+        if (this$1.input.charCodeAt(this$1.pos) === 10) ++this$1.pos
+      case 10:
+        out += "\n"
+        break
+      default:
+        out += String.fromCharCode(ch)
+        break
       }
       if (this$1.options.locations) {
         ++this$1.curLine
@@ -3233,7 +3423,7 @@ pp$7.readTmplToken = function() {
 
 // Used to read escaped characters
 
-pp$7.readEscapedChar = function(inTemplate) {
+pp$8.readEscapedChar = function(inTemplate) {
   var ch = this.input.charCodeAt(++this.pos)
   ++this.pos
   switch (ch) {
@@ -3269,7 +3459,7 @@ pp$7.readEscapedChar = function(inTemplate) {
 
 // Used to read character escape sequences ('\x', '\u', '\U').
 
-pp$7.readHexChar = function(len) {
+pp$8.readHexChar = function(len) {
   var codePos = this.pos
   var n = this.readInt(16, len)
   if (n === null) this.raise(codePos, "Bad character escape sequence")
@@ -3282,7 +3472,7 @@ pp$7.readHexChar = function(len) {
 // Incrementally adds only escaped chars, adding other chunks as-is
 // as a micro-optimization.
 
-pp$7.readWord1 = function() {
+pp$8.readWord1 = function() {
   var this$1 = this;
 
   this.containsEsc = false
@@ -3315,11 +3505,13 @@ pp$7.readWord1 = function() {
 // Read an identifier or keyword token. Will check for reserved
 // words when necessary.
 
-pp$7.readWord = function() {
+pp$8.readWord = function() {
   var word = this.readWord1()
   var type = tt.name
-  if ((this.options.ecmaVersion >= 6 || !this.containsEsc) && this.keywords.test(word))
+  if (this.keywords.test(word)) {
+    if (this.containsEsc) this.raiseRecoverable(this.start, "Escape sequence in keyword " + word)
     type = keywordTypes[word]
+  }
   return this.finishToken(type, word)
 }
 
@@ -3344,7 +3536,7 @@ pp$7.readWord = function() {
 // [dammit]: acorn_loose.js
 // [walk]: util/walk.js
 
-var version = "4.0.4"
+var version = "5.0.3"
 
 // The main exported interface (under `self.acorn` when in the
 // browser) is a `parse` function that takes a code string and
@@ -3377,8 +3569,9 @@ function tokenizer(input, options) {
 // This is a terrible kludge to support the existing, pre-ES6
 // interface where the loose parser module retroactively adds exports
 // to this module.
+// eslint-disable-line camelcase
 function addLooseExports(parse, Parser, plugins) {
-  exports.parse_dammit = parse
+  exports.parse_dammit = parse // eslint-disable-line camelcase
   exports.LooseParser = Parser
   exports.pluginsLoose = plugins
 }
@@ -3397,6 +3590,7 @@ exports.getLineInfo = getLineInfo;
 exports.Node = Node;
 exports.TokenType = TokenType;
 exports.tokTypes = tt;
+exports.keywordTypes = keywordTypes;
 exports.TokContext = TokContext;
 exports.tokContexts = types;
 exports.isIdentifierChar = isIdentifierChar;
@@ -3405,6 +3599,7 @@ exports.Token = Token;
 exports.isNewLine = isNewLine;
 exports.lineBreak = lineBreak;
 exports.lineBreakG = lineBreakG;
+exports.nonASCIIwhitespace = nonASCIIwhitespace;
 
 Object.defineProperty(exports, '__esModule', { value: true });
 
diff --git a/tools/eslint/node_modules/acorn/dist/acorn_loose.es.js b/tools/eslint/node_modules/acorn/dist/acorn_loose.es.js
index 3c9dc412ef1780..11813609a4a426 100644
--- a/tools/eslint/node_modules/acorn/dist/acorn_loose.es.js
+++ b/tools/eslint/node_modules/acorn/dist/acorn_loose.es.js
@@ -205,7 +205,7 @@ lp.readToken = function() {
         this$1.toks.type = tokTypes.ellipsis
       }
       return new Token(this$1.toks)
-    } catch(e) {
+    } catch (e) {
       if (!(e instanceof SyntaxError)) throw e
 
       // Try to skip some text, based on the error message, and then continue
@@ -216,12 +216,15 @@ lp.readToken = function() {
           replace = {start: e.pos, end: pos, type: tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)}
         } else if (/regular expr/i.test(msg)) {
           var re = this$1.input.slice(e.pos, pos)
-          try { re = new RegExp(re) } catch(e) {}
+          try { re = new RegExp(re) } catch (e) { /* ignore compilation error due to new syntax */ }
           replace = {start: e.pos, end: pos, type: tokTypes.regexp, value: re}
         } else if (/template/.test(msg)) {
-          replace = {start: e.pos, end: pos,
-                     type: tokTypes.template,
-                     value: this$1.input.slice(e.pos, pos)}
+          replace = {
+            start: e.pos,
+            end: pos,
+            type: tokTypes.template,
+            value: this$1.input.slice(e.pos, pos)
+          }
         } else {
           replace = false
         }
@@ -259,7 +262,7 @@ lp.resetTo = function(pos) {
 
   this.toks.pos = pos
   var ch = this.input.charAt(pos - 1)
-  this.toks.exprAllowed = !ch || /[\[\{\(,;:?\/*=+\-~!|&%^<>]/.test(ch) ||
+  this.toks.exprAllowed = !ch || /[[{(,;:?/*=+\-~!|&%^<>]/.test(ch) ||
     /[enwfd]/.test(ch) &&
     /\b(keywords|case|else|return|throw|new|in|(instance|type)of|delete|void)$/.test(this.input.slice(pos - 10, pos))
 
@@ -544,7 +547,7 @@ lp$1.parseClass = function(isStatement) {
   var node = this.startNode()
   this.next()
   if (this.tok.type === tokTypes.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   else node.id = null
   node.superClass = this.eat(tokTypes._extends) ? this.parseExpression() : null
   node.body = this.startNode()
@@ -590,7 +593,7 @@ lp$1.parseClass = function(isStatement) {
           method.key.type === "Literal" && method.key.value === "constructor")) {
         method.kind = "constructor"
       } else {
-        method.kind =  "method"
+        method.kind = "method"
       }
       method.value = this$1.parseMethod(isGenerator, isAsync)
     }
@@ -618,7 +621,7 @@ lp$1.parseFunction = function(node, isStatement, isAsync) {
     node.async = !!isAsync
   }
   if (this.tok.type === tokTypes.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   this.inAsync = node.async
   node.params = this.parseFunctionParams()
   node.body = this.parseBlock()
@@ -635,16 +638,18 @@ lp$1.parseExport = function() {
   }
   if (this.eat(tokTypes._default)) {
     // export default (function foo() {}) // This is FunctionExpression.
-    var isParenL = this.tok.type === tokTypes.parenL
-    var expr = this.parseMaybeAssign()
-    if (!isParenL && expr.id) {
-      switch (expr.type) {
-      case "FunctionExpression": expr.type = "FunctionDeclaration"; break
-      case "ClassExpression": expr.type = "ClassDeclaration"; break
-      }
+    var isAsync
+    if (this.tok.type === tokTypes._function || (isAsync = this.toks.isAsyncFunction())) {
+      var fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", isAsync)
+    } else if (this.tok.type === tokTypes._class) {
+      node.declaration = this.parseClass("nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) {
@@ -666,7 +671,7 @@ lp$1.parseImport = function() {
   if (this.tok.type === tokTypes.string) {
     node.specifiers = []
     node.source = this.parseExprAtom()
-    node.kind = ''
+    node.kind = ""
   } else {
     var elt
     if (this.tok.type === tokTypes.name && this.tok.value !== "from") {
@@ -1025,7 +1030,7 @@ lp$2.parseExprAtom = function() {
     return this.parseObj()
 
   case tokTypes._class:
-    return this.parseClass()
+    return this.parseClass(false)
 
   case tokTypes._function:
     node = this.startNode()
@@ -1064,7 +1069,7 @@ lp$2.parseNew = function() {
 lp$2.parseTemplateElement = function() {
   var elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, "\n"),
     cooked: this.tok.value
   }
   this.next()
@@ -1087,7 +1092,7 @@ lp$2.parseTemplate = function() {
       curElt = this$1.parseTemplateElement()
     } else {
       curElt = this$1.startNode()
-      curElt.value = {cooked: '', raw: ''}
+      curElt.value = {cooked: "", raw: ""}
       curElt.tail = true
       this$1.finishNode(curElt, "TemplateElement")
     }
@@ -1349,6 +1354,7 @@ lp$2.parseAwait = function() {
 
 defaultOptions.tabSize = 4
 
+// eslint-disable-next-line camelcase
 function parse_dammit(input, options) {
   var p = new LooseParser(input, options)
   p.next()
diff --git a/tools/eslint/node_modules/acorn/dist/acorn_loose.js b/tools/eslint/node_modules/acorn/dist/acorn_loose.js
index ca52a7902e9f58..6ad0085da11a26 100644
--- a/tools/eslint/node_modules/acorn/dist/acorn_loose.js
+++ b/tools/eslint/node_modules/acorn/dist/acorn_loose.js
@@ -209,7 +209,7 @@ lp.readToken = function() {
         this$1.toks.type = __acorn.tokTypes.ellipsis
       }
       return new __acorn.Token(this$1.toks)
-    } catch(e) {
+    } catch (e) {
       if (!(e instanceof SyntaxError)) throw e
 
       // Try to skip some text, based on the error message, and then continue
@@ -220,12 +220,15 @@ lp.readToken = function() {
           replace = {start: e.pos, end: pos, type: __acorn.tokTypes.string, value: this$1.input.slice(e.pos + 1, pos)}
         } else if (/regular expr/i.test(msg)) {
           var re = this$1.input.slice(e.pos, pos)
-          try { re = new RegExp(re) } catch(e) {}
+          try { re = new RegExp(re) } catch (e) { /* ignore compilation error due to new syntax */ }
           replace = {start: e.pos, end: pos, type: __acorn.tokTypes.regexp, value: re}
         } else if (/template/.test(msg)) {
-          replace = {start: e.pos, end: pos,
-                     type: __acorn.tokTypes.template,
-                     value: this$1.input.slice(e.pos, pos)}
+          replace = {
+            start: e.pos,
+            end: pos,
+            type: __acorn.tokTypes.template,
+            value: this$1.input.slice(e.pos, pos)
+          }
         } else {
           replace = false
         }
@@ -263,7 +266,7 @@ lp.resetTo = function(pos) {
 
   this.toks.pos = pos
   var ch = this.input.charAt(pos - 1)
-  this.toks.exprAllowed = !ch || /[\[\{\(,;:?\/*=+\-~!|&%^<>]/.test(ch) ||
+  this.toks.exprAllowed = !ch || /[[{(,;:?/*=+\-~!|&%^<>]/.test(ch) ||
     /[enwfd]/.test(ch) &&
     /\b(keywords|case|else|return|throw|new|in|(instance|type)of|delete|void)$/.test(this.input.slice(pos - 10, pos))
 
@@ -548,7 +551,7 @@ lp$1.parseClass = function(isStatement) {
   var node = this.startNode()
   this.next()
   if (this.tok.type === __acorn.tokTypes.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   else node.id = null
   node.superClass = this.eat(__acorn.tokTypes._extends) ? this.parseExpression() : null
   node.body = this.startNode()
@@ -594,7 +597,7 @@ lp$1.parseClass = function(isStatement) {
           method.key.type === "Literal" && method.key.value === "constructor")) {
         method.kind = "constructor"
       } else {
-        method.kind =  "method"
+        method.kind = "method"
       }
       method.value = this$1.parseMethod(isGenerator, isAsync)
     }
@@ -622,7 +625,7 @@ lp$1.parseFunction = function(node, isStatement, isAsync) {
     node.async = !!isAsync
   }
   if (this.tok.type === __acorn.tokTypes.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   this.inAsync = node.async
   node.params = this.parseFunctionParams()
   node.body = this.parseBlock()
@@ -639,16 +642,18 @@ lp$1.parseExport = function() {
   }
   if (this.eat(__acorn.tokTypes._default)) {
     // export default (function foo() {}) // This is FunctionExpression.
-    var isParenL = this.tok.type === __acorn.tokTypes.parenL
-    var expr = this.parseMaybeAssign()
-    if (!isParenL && expr.id) {
-      switch (expr.type) {
-      case "FunctionExpression": expr.type = "FunctionDeclaration"; break
-      case "ClassExpression": expr.type = "ClassDeclaration"; break
-      }
+    var isAsync
+    if (this.tok.type === __acorn.tokTypes._function || (isAsync = this.toks.isAsyncFunction())) {
+      var fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", isAsync)
+    } else if (this.tok.type === __acorn.tokTypes._class) {
+      node.declaration = this.parseClass("nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) {
@@ -670,7 +675,7 @@ lp$1.parseImport = function() {
   if (this.tok.type === __acorn.tokTypes.string) {
     node.specifiers = []
     node.source = this.parseExprAtom()
-    node.kind = ''
+    node.kind = ""
   } else {
     var elt
     if (this.tok.type === __acorn.tokTypes.name && this.tok.value !== "from") {
@@ -1029,7 +1034,7 @@ lp$2.parseExprAtom = function() {
     return this.parseObj()
 
   case __acorn.tokTypes._class:
-    return this.parseClass()
+    return this.parseClass(false)
 
   case __acorn.tokTypes._function:
     node = this.startNode()
@@ -1068,7 +1073,7 @@ lp$2.parseNew = function() {
 lp$2.parseTemplateElement = function() {
   var elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, "\n"),
     cooked: this.tok.value
   }
   this.next()
@@ -1091,7 +1096,7 @@ lp$2.parseTemplate = function() {
       curElt = this$1.parseTemplateElement()
     } else {
       curElt = this$1.startNode()
-      curElt.value = {cooked: '', raw: ''}
+      curElt.value = {cooked: "", raw: ""}
       curElt.tail = true
       this$1.finishNode(curElt, "TemplateElement")
     }
@@ -1353,6 +1358,7 @@ lp$2.parseAwait = function() {
 
 __acorn.defaultOptions.tabSize = 4
 
+// eslint-disable-next-line camelcase
 function parse_dammit(input, options) {
   var p = new LooseParser(input, options)
   p.next()
diff --git a/tools/eslint/node_modules/acorn/dist/walk.es.js b/tools/eslint/node_modules/acorn/dist/walk.es.js
index b717ed996ec3ad..280b9a0454705b 100644
--- a/tools/eslint/node_modules/acorn/dist/walk.es.js
+++ b/tools/eslint/node_modules/acorn/dist/walk.es.js
@@ -71,7 +71,7 @@ function findNodeAt(node, start, end, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       var type = override || node.type
       if ((start == null || node.start <= start) &&
           (end == null || node.end >= end))
@@ -93,7 +93,7 @@ function findNodeAround(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       var type = override || node.type
       if (node.start > pos || node.end < pos) return
       base[type](node, st, c)
@@ -110,7 +110,7 @@ function findNodeAfter(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       if (node.end < pos) return
       var type = override || node.type
       if (node.start >= pos && test(type, node)) throw new Found(node, st)
@@ -255,7 +255,7 @@ base.Pattern = function (node, st, c) {
 base.VariablePattern = ignore
 base.MemberPattern = skipThrough
 base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }
-base.ArrayPattern =  function (node, st, c) {
+base.ArrayPattern = function (node, st, c) {
   for (var i = 0; i < node.elements.length; ++i) {
     var elt = node.elements[i]
     if (elt) c(elt, st, "Pattern")
diff --git a/tools/eslint/node_modules/acorn/dist/walk.js b/tools/eslint/node_modules/acorn/dist/walk.js
index 3c9c5948760d9f..29609de0408c55 100644
--- a/tools/eslint/node_modules/acorn/dist/walk.js
+++ b/tools/eslint/node_modules/acorn/dist/walk.js
@@ -77,7 +77,7 @@ function findNodeAt(node, start, end, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       var type = override || node.type
       if ((start == null || node.start <= start) &&
           (end == null || node.end >= end))
@@ -99,7 +99,7 @@ function findNodeAround(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       var type = override || node.type
       if (node.start > pos || node.end < pos) return
       base[type](node, st, c)
@@ -116,7 +116,7 @@ function findNodeAfter(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       if (node.end < pos) return
       var type = override || node.type
       if (node.start >= pos && test(type, node)) throw new Found(node, st)
@@ -261,7 +261,7 @@ base.Pattern = function (node, st, c) {
 base.VariablePattern = ignore
 base.MemberPattern = skipThrough
 base.RestElement = function (node, st, c) { return c(node.argument, st, "Pattern"); }
-base.ArrayPattern =  function (node, st, c) {
+base.ArrayPattern = function (node, st, c) {
   for (var i = 0; i < node.elements.length; ++i) {
     var elt = node.elements[i]
     if (elt) c(elt, st, "Pattern")
diff --git a/tools/eslint/node_modules/acorn/package.json b/tools/eslint/node_modules/acorn/package.json
index 27dfdebdcb4d20..a76980d4a49620 100644
--- a/tools/eslint/node_modules/acorn/package.json
+++ b/tools/eslint/node_modules/acorn/package.json
@@ -2,25 +2,25 @@
   "_args": [
     [
       {
-        "raw": "acorn@^4.0.1",
+        "raw": "acorn@^5.0.1",
         "scope": null,
         "escapedName": "acorn",
         "name": "acorn",
-        "rawSpec": "^4.0.1",
-        "spec": ">=4.0.1 <5.0.0",
+        "rawSpec": "^5.0.1",
+        "spec": ">=5.0.1 <6.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/espree"
     ]
   ],
-  "_from": "acorn@>=4.0.1 <5.0.0",
-  "_id": "acorn@4.0.4",
+  "_from": "acorn@>=5.0.1 <6.0.0",
+  "_id": "acorn@5.0.3",
   "_inCache": true,
   "_location": "/acorn",
   "_nodeVersion": "6.9.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/acorn-4.0.4.tgz_1482157987722_0.9571468001231551"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/acorn-5.0.3.tgz_1491067098969_0.3370379332918674"
   },
   "_npmUser": {
     "name": "marijn",
@@ -29,21 +29,21 @@
   "_npmVersion": "3.10.8",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "acorn@^4.0.1",
+    "raw": "acorn@^5.0.1",
     "scope": null,
     "escapedName": "acorn",
     "name": "acorn",
-    "rawSpec": "^4.0.1",
-    "spec": ">=4.0.1 <5.0.0",
+    "rawSpec": "^5.0.1",
+    "spec": ">=5.0.1 <6.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/espree"
   ],
-  "_resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz",
-  "_shasum": "17a8d6a7a6c4ef538b814ec9abac2779293bf30a",
+  "_resolved": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz",
+  "_shasum": "c460df08491463f028ccb82eab3730bf01087b3d",
   "_shrinkwrap": null,
-  "_spec": "acorn@^4.0.1",
+  "_spec": "acorn@^5.0.1",
   "_where": "/Users/trott/io.js/tools/node_modules/espree",
   "bin": {
     "acorn": "./bin/acorn"
@@ -124,6 +124,9 @@
     {
       "name": "Johannes Herr"
     },
+    {
+      "name": "John-David Dalton"
+    },
     {
       "name": "Jordan Klassen"
     },
@@ -178,6 +181,9 @@
     {
       "name": "Mike Rennie"
     },
+    {
+      "name": "naoh"
+    },
     {
       "name": "Nicholas C. Zakas"
     },
@@ -220,12 +226,18 @@
     {
       "name": "Simen Bekkhus"
     },
+    {
+      "name": "Teddy Katz"
+    },
     {
       "name": "Timothy Gu"
     },
     {
       "name": "Toru Nagashima"
     },
+    {
+      "name": "Wexpo Lyu"
+    },
     {
       "name": "zsjforcn"
     }
@@ -233,19 +245,24 @@
   "dependencies": {},
   "description": "ECMAScript parser",
   "devDependencies": {
+    "eslint": "^3.18.0",
+    "eslint-config-standard": "^7.1.0",
+    "eslint-plugin-import": "^2.2.0",
+    "eslint-plugin-promise": "^3.5.0",
+    "eslint-plugin-standard": "^2.1.1",
     "rollup": "^0.34.1",
     "rollup-plugin-buble": "^0.11.0",
     "unicode-9.0.0": "^0.7.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "17a8d6a7a6c4ef538b814ec9abac2779293bf30a",
-    "tarball": "https://registry.npmjs.org/acorn/-/acorn-4.0.4.tgz"
+    "shasum": "c460df08491463f028ccb82eab3730bf01087b3d",
+    "tarball": "https://registry.npmjs.org/acorn/-/acorn-5.0.3.tgz"
   },
   "engines": {
     "node": ">=0.4.0"
   },
-  "gitHead": "e7001cad79b4b0d7c4a6cf569ea33bfc808183cd",
+  "gitHead": "dc2a033831e0813496bdb558c70b9fdf4720f048",
   "homepage": "https://github.com/ternjs/acorn",
   "jsnext:main": "dist/acorn.es.js",
   "license": "MIT",
@@ -254,10 +271,6 @@
     {
       "name": "marijn",
       "email": "marijnh@gmail.com"
-    },
-    {
-      "name": "rreverser",
-      "email": "me@rreverser.com"
     }
   ],
   "name": "acorn",
@@ -273,9 +286,10 @@
     "build:loose": "rollup -c rollup/config.loose.js",
     "build:main": "rollup -c rollup/config.main.js",
     "build:walk": "rollup -c rollup/config.walk.js",
+    "lint": "eslint src/",
     "prepublish": "npm test",
     "pretest": "npm run build",
-    "test": "node test/run.js"
+    "test": "node test/run.js && node test/lint.js"
   },
-  "version": "4.0.4"
+  "version": "5.0.3"
 }
diff --git a/tools/eslint/node_modules/acorn/src/.eslintrc b/tools/eslint/node_modules/acorn/src/.eslintrc
new file mode 100644
index 00000000000000..5549678a7a8043
--- /dev/null
+++ b/tools/eslint/node_modules/acorn/src/.eslintrc
@@ -0,0 +1,33 @@
+{
+    "extends": [
+        "eslint:recommended",
+        "standard",
+        "plugin:import/errors",
+        "plugin:import/warnings"
+    ],
+    "rules": {
+        "curly": "off",
+        "eqeqeq": "off",
+        "indent": ["error", 2, { "SwitchCase": 0, "VariableDeclarator": 2 }],
+        "new-parens": "off",
+        "no-case-declarations": "off",
+        "no-cond-assign": "off",
+        "no-fallthrough": "off",
+        "no-labels": "off",
+        "no-mixed-operators": "off",
+        "no-return-assign": "off",
+        "no-unused-labels": "error",
+        "no-var": "error",
+        "object-curly-spacing": ["error", "never"],
+        "one-var": "off",
+        "quotes": ["error", "double"],
+        "semi-spacing": "off",
+        "space-before-function-paren": ["error", "never"]
+    },
+    "globals": {
+        "Packages": false
+    },
+    "plugins": [
+        "import"
+    ]
+}
\ No newline at end of file
diff --git a/tools/eslint/node_modules/acorn/src/bin/.eslintrc b/tools/eslint/node_modules/acorn/src/bin/.eslintrc
new file mode 100644
index 00000000000000..2598b25f5f3b14
--- /dev/null
+++ b/tools/eslint/node_modules/acorn/src/bin/.eslintrc
@@ -0,0 +1,6 @@
+{
+    "extends": "../.eslintrc",
+    "rules": {
+        "no-console": "off"
+    }
+}
\ No newline at end of file
diff --git a/tools/eslint/node_modules/acorn/src/bin/acorn.js b/tools/eslint/node_modules/acorn/src/bin/acorn.js
index 62e0dad1883664..b9ee5ee9df76e9 100644
--- a/tools/eslint/node_modules/acorn/src/bin/acorn.js
+++ b/tools/eslint/node_modules/acorn/src/bin/acorn.js
@@ -22,7 +22,7 @@ for (let i = 2; i < process.argv.length; ++i) {
   else if (arg == "--compact") compact = true
   else if (arg == "--help") help(0)
   else if (arg == "--tokenize") tokenize = true
-  else if (arg == "--module") options.sourceType = 'module'
+  else if (arg == "--module") options.sourceType = "module"
   else {
     let match = arg.match(/^--ecma(\d+)$/)
     if (match)
@@ -34,18 +34,20 @@ for (let i = 2; i < process.argv.length; ++i) {
 
 function run(code) {
   let result
-  if (!tokenize) {
-    try { result = acorn.parse(code, options) }
-    catch(e) { console.error(e.message); process.exit(1) }
-  } else {
-    result = []
-    let tokenizer = acorn.tokenizer(code, options), token
-    while (true) {
-      try { token = tokenizer.getToken() }
-      catch(e) { console.error(e.message); process.exit(1) }
-      result.push(token)
-      if (token.type == acorn.tokTypes.eof) break
+  try {
+    if (!tokenize) {
+      result = acorn.parse(code, options)
+    } else {
+      result = []
+      let tokenizer = acorn.tokenizer(code, options), token
+      do {
+        token = tokenizer.getToken()
+        result.push(token)
+      } while (token.type != acorn.tokTypes.eof)
     }
+  } catch (e) {
+    console.error(e.message)
+    process.exit(1)
   }
   if (!silent) console.log(JSON.stringify(result, null, compact ? null : 2))
 }
diff --git a/tools/eslint/node_modules/acorn/src/expression.js b/tools/eslint/node_modules/acorn/src/expression.js
index f8a7e0fff9f60d..47790d2dc0b2c6 100644
--- a/tools/eslint/node_modules/acorn/src/expression.js
+++ b/tools/eslint/node_modules/acorn/src/expression.js
@@ -47,8 +47,13 @@ pp.checkPropClash = function(prop, propHash) {
   name = "$" + name
   let other = propHash[name]
   if (other) {
-    let isGetSet = kind !== "init"
-    if ((this.strict || isGetSet) && other[kind] || !(isGetSet ^ other.init))
+    let redefinition
+    if (kind === "init") {
+      redefinition = this.strict && other.init || other.get || other.set
+    } else {
+      redefinition = other.init || other[kind]
+    }
+    if (redefinition)
       this.raiseRecoverable(key.start, "Redefinition of property")
   } else {
     other = propHash[name] = {
@@ -93,11 +98,16 @@ pp.parseExpression = function(noIn, refDestructuringErrors) {
 pp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   if (this.inGenerator && this.isContextual("yield")) return this.parseYield()
 
-  let ownDestructuringErrors = false
-  if (!refDestructuringErrors) {
+  let ownDestructuringErrors = false, oldParenAssign = -1, oldTrailingComma = -1
+  if (refDestructuringErrors) {
+    oldParenAssign = refDestructuringErrors.parenthesizedAssign
+    oldTrailingComma = refDestructuringErrors.trailingComma
+    refDestructuringErrors.parenthesizedAssign = refDestructuringErrors.trailingComma = -1
+  } else {
     refDestructuringErrors = new DestructuringErrors
     ownDestructuringErrors = true
   }
+
   let startPos = this.start, startLoc = this.startLoc
   if (this.type == tt.parenL || this.type == tt.name)
     this.potentialArrowAt = this.start
@@ -109,7 +119,7 @@ pp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
     let node = this.startNodeAt(startPos, startLoc)
     node.operator = this.value
     node.left = this.type === tt.eq ? this.toAssignable(left) : left
-    refDestructuringErrors.shorthandAssign = 0 // reset because shorthand default was used correctly
+    refDestructuringErrors.shorthandAssign = -1 // reset because shorthand default was used correctly
     this.checkLVal(left)
     this.next()
     node.right = this.parseMaybeAssign(noIn)
@@ -117,6 +127,8 @@ pp.parseMaybeAssign = function(noIn, refDestructuringErrors, afterLeftParse) {
   } else {
     if (ownDestructuringErrors) this.checkExpressionErrors(refDestructuringErrors, true)
   }
+  if (oldParenAssign > -1) refDestructuringErrors.parenthesizedAssign = oldParenAssign
+  if (oldTrailingComma > -1) refDestructuringErrors.trailingComma = oldTrailingComma
   return left
 }
 
@@ -143,7 +155,7 @@ pp.parseExprOps = function(noIn, refDestructuringErrors) {
   let startPos = this.start, startLoc = this.startLoc
   let expr = this.parseMaybeUnary(refDestructuringErrors, false)
   if (this.checkExpressionErrors(refDestructuringErrors)) return expr
-  return this.parseExprOp(expr, startPos, startLoc, -1, noIn)
+  return expr.start == startPos && expr.type === "ArrowFunctionExpression" ? expr : this.parseExprOp(expr, startPos, startLoc, -1, noIn)
 }
 
 // Parse binary operators with the operator precedence parsing
@@ -223,24 +235,24 @@ pp.parseExprSubscripts = function(refDestructuringErrors) {
   let expr = this.parseExprAtom(refDestructuringErrors)
   let skipArrowSubscripts = expr.type === "ArrowFunctionExpression" && this.input.slice(this.lastTokStart, this.lastTokEnd) !== ")"
   if (this.checkExpressionErrors(refDestructuringErrors) || skipArrowSubscripts) return expr
-  return this.parseSubscripts(expr, startPos, startLoc)
+  let result = this.parseSubscripts(expr, startPos, startLoc)
+  if (refDestructuringErrors && result.type === "MemberExpression") {
+    if (refDestructuringErrors.parenthesizedAssign >= result.start) refDestructuringErrors.parenthesizedAssign = -1
+    if (refDestructuringErrors.parenthesizedBind >= result.start) refDestructuringErrors.parenthesizedBind = -1
+  }
+  return result
 }
 
 pp.parseSubscripts = function(base, startPos, startLoc, noCalls) {
-  for (;;) {
-    let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" && !this.canInsertSemicolon()
-    if (this.eat(tt.dot)) {
+  let maybeAsyncArrow = this.options.ecmaVersion >= 8 && base.type === "Identifier" && base.name === "async" &&
+      this.lastTokEnd == base.end && !this.canInsertSemicolon()
+  for (let computed;;) {
+    if ((computed = this.eat(tt.bracketL)) || this.eat(tt.dot)) {
       let node = this.startNodeAt(startPos, startLoc)
       node.object = base
-      node.property = this.parseIdent(true)
-      node.computed = false
-      base = this.finishNode(node, "MemberExpression")
-    } else if (this.eat(tt.bracketL)) {
-      let node = this.startNodeAt(startPos, startLoc)
-      node.object = base
-      node.property = this.parseExpression()
-      node.computed = true
-      this.expect(tt.bracketR)
+      node.property = computed ? this.parseExpression() : this.parseIdent(true)
+      node.computed = !!computed
+      if (computed) this.expect(tt.bracketR)
       base = this.finishNode(node, "MemberExpression")
     } else if (!noCalls && this.eat(tt.parenL)) {
       let refDestructuringErrors = new DestructuringErrors, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
@@ -248,7 +260,7 @@ pp.parseSubscripts = function(base, startPos, startLoc, noCalls) {
       this.awaitPos = 0
       let exprList = this.parseExprList(tt.parenR, this.options.ecmaVersion >= 8, false, refDestructuringErrors)
       if (maybeAsyncArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {
-        this.checkPatternErrors(refDestructuringErrors, true)
+        this.checkPatternErrors(refDestructuringErrors, false)
         this.checkYieldAwaitInDefaultParams()
         this.yieldPos = oldYieldPos
         this.awaitPos = oldAwaitPos
@@ -324,7 +336,14 @@ pp.parseExprAtom = function(refDestructuringErrors) {
     return this.finishNode(node, "Literal")
 
   case tt.parenL:
-    return this.parseParenAndDistinguishExpression(canBeArrow)
+    let start = this.start, expr = this.parseParenAndDistinguishExpression(canBeArrow)
+    if (refDestructuringErrors) {
+      if (refDestructuringErrors.parenthesizedAssign < 0 && !this.isSimpleAssignTarget(expr))
+        refDestructuringErrors.parenthesizedAssign = start
+      if (refDestructuringErrors.parenthesizedBind < 0)
+        refDestructuringErrors.parenthesizedBind = start
+    }
+    return expr
 
   case tt.bracketL:
     node = this.startNode()
@@ -400,7 +419,7 @@ pp.parseParenAndDistinguishExpression = function(canBeArrow) {
     this.expect(tt.parenR)
 
     if (canBeArrow && !this.canInsertSemicolon() && this.eat(tt.arrow)) {
-      this.checkPatternErrors(refDestructuringErrors, true)
+      this.checkPatternErrors(refDestructuringErrors, false)
       this.checkYieldAwaitInDefaultParams()
       if (innerParenStart) this.unexpected(innerParenStart)
       this.yieldPos = oldYieldPos
@@ -474,7 +493,7 @@ pp.parseNew = function() {
 pp.parseTemplateElement = function() {
   let elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.start, this.end).replace(/\r\n?/g, "\n"),
     cooked: this.value
   }
   this.next()
@@ -577,7 +596,7 @@ pp.parsePropertyValue = function(prop, isPattern, isGenerator, isAsync, startPos
     if (isPattern) {
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else if (this.type === tt.eq && refDestructuringErrors) {
-      if (!refDestructuringErrors.shorthandAssign)
+      if (refDestructuringErrors.shorthandAssign < 0)
         refDestructuringErrors.shorthandAssign = this.start
       prop.value = this.parseMaybeDefault(startPos, startLoc, prop.key)
     } else {
@@ -616,7 +635,8 @@ pp.initFunction = function(node) {
 // Parse object or class method.
 
 pp.parseMethod = function(isGenerator, isAsync) {
-  let node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  let node = this.startNode(), oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
   this.initFunction(node)
   if (this.options.ecmaVersion >= 6)
@@ -628,6 +648,8 @@ pp.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
 
   this.expect(tt.parenL)
   node.params = this.parseBindingList(tt.parenR, false, this.options.ecmaVersion >= 8)
@@ -638,14 +660,17 @@ pp.parseMethod = function(isGenerator, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "FunctionExpression")
 }
 
 // Parse arrow function expression with given parameters.
 
 pp.parseArrowExpression = function(node, params, isAsync) {
-  let oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  let oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
 
+  this.enterFunctionScope()
   this.initFunction(node)
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
@@ -654,6 +679,7 @@ pp.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
 
   node.params = this.toAssignableList(params, true)
   this.parseFunctionBody(node, true)
@@ -662,6 +688,7 @@ pp.parseArrowExpression = function(node, params, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, "ArrowFunctionExpression")
 }
 
@@ -669,37 +696,42 @@ pp.parseArrowExpression = function(node, params, isAsync) {
 
 pp.parseFunctionBody = function(node, isArrowFunction) {
   let isExpression = isArrowFunction && this.type !== tt.braceL
+  let oldStrict = this.strict, useStrict = false
 
   if (isExpression) {
     node.body = this.parseMaybeAssign()
     node.expression = true
+    this.checkParams(node, false)
   } else {
+    let nonSimple = this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params)
+    if (!oldStrict || nonSimple) {
+      useStrict = this.strictDirective(this.end)
+      // If this is a strict mode function, verify that argument names
+      // are not repeated, and it does not try to bind the words `eval`
+      // or `arguments`.
+      if (useStrict && nonSimple)
+        this.raiseRecoverable(node.start, "Illegal 'use strict' directive in function with non-simple parameter list")
+    }
     // Start a new scope with regard to labels and the `inFunction`
     // flag (restore them to their old value afterwards).
-    let oldInFunc = this.inFunction, oldLabels = this.labels
-    this.inFunction = true; this.labels = []
-    node.body = this.parseBlock(true)
+    let oldLabels = this.labels
+    this.labels = []
+    if (useStrict) this.strict = true
+
+    // Add the params to varDeclaredNames to ensure that an error is thrown
+    // if a let/const declaration in the function clashes with one of the params.
+    this.checkParams(node, !oldStrict && !useStrict && !isArrowFunction && this.isSimpleParamList(node.params))
+    node.body = this.parseBlock(false)
     node.expression = false
-    this.inFunction = oldInFunc; this.labels = oldLabels
+    this.labels = oldLabels
   }
+  this.exitFunctionScope()
 
-  // If this is a strict mode function, verify that argument names
-  // are not repeated, and it does not try to bind the words `eval`
-  // or `arguments`.
-  let useStrict = (!isExpression && node.body.body.length && this.isUseStrict(node.body.body[0])) ? node.body.body[0] : null
-  if (useStrict && this.options.ecmaVersion >= 7 && !this.isSimpleParamList(node.params))
-    this.raiseRecoverable(useStrict.start, "Illegal 'use strict' directive in function with non-simple parameter list")
-
-  if (this.strict || useStrict) {
-    let oldStrict = this.strict
-    this.strict = true
-    if (node.id)
-      this.checkLVal(node.id, true)
-    this.checkParams(node)
-    this.strict = oldStrict
-  } else if (isArrowFunction || !this.isSimpleParamList(node.params)) {
-    this.checkParams(node)
+  if (this.strict && node.id) {
+    // Ensure the function name isn't a forbidden identifier in strict mode, e.g. 'eval'
+    this.checkLVal(node.id, "none")
   }
+  this.strict = oldStrict
 }
 
 pp.isSimpleParamList = function(params) {
@@ -711,9 +743,9 @@ pp.isSimpleParamList = function(params) {
 // Checks function params for various disallowed patterns such as using "eval"
 // or "arguments" and duplicate parameters.
 
-pp.checkParams = function(node) {
+pp.checkParams = function(node, allowDuplicates) {
   let nameHash = {}
-  for (let i = 0; i < node.params.length; i++) this.checkLVal(node.params[i], true, nameHash)
+  for (let i = 0; i < node.params.length; i++) this.checkLVal(node.params[i], "var", allowDuplicates ? null : nameHash)
 }
 
 // Parses a comma-separated list of expressions, and returns them as
@@ -735,11 +767,11 @@ pp.parseExprList = function(close, allowTrailingComma, allowEmpty, refDestructur
       elt = null
     else if (this.type === tt.ellipsis) {
       elt = this.parseSpread(refDestructuringErrors)
-      if (this.type === tt.comma && refDestructuringErrors && !refDestructuringErrors.trailingComma) {
+      if (refDestructuringErrors && this.type === tt.comma && refDestructuringErrors.trailingComma < 0)
         refDestructuringErrors.trailingComma = this.start
-      }
-    } else
+    } else {
       elt = this.parseMaybeAssign(false, refDestructuringErrors)
+    }
     elts.push(elt)
   }
   return elts
diff --git a/tools/eslint/node_modules/acorn/src/identifier.js b/tools/eslint/node_modules/acorn/src/identifier.js
index c65a24cf5fb410..fa5ded616e6cf7 100644
--- a/tools/eslint/node_modules/acorn/src/identifier.js
+++ b/tools/eslint/node_modules/acorn/src/identifier.js
@@ -10,7 +10,7 @@ export const reservedWords = {
 
 // And the keywords
 
-var ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"
+const ecma5AndLessKeywords = "break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this"
 
 export const keywords = {
   5: ecma5AndLessKeywords,
@@ -38,7 +38,11 @@ nonASCIIidentifierStartChars = nonASCIIidentifierChars = null
 // offset starts at 0x10000, and each pair of numbers represents an
 // offset to the next range, and then a size of the range. They were
 // generated by bin/generate-identifier-regex.js
+
+// eslint-disable-next-line comma-spacing
 const astralIdentifierStartCodes = [0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541]
+
+// eslint-disable-next-line comma-spacing
 const astralIdentifierCodes = [509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239]
 
 // This has a complexity linear to the value of the code. The
diff --git a/tools/eslint/node_modules/acorn/src/index.js b/tools/eslint/node_modules/acorn/src/index.js
index 9debb0ac7cdedb..9c25d92ee142f5 100644
--- a/tools/eslint/node_modules/acorn/src/index.js
+++ b/tools/eslint/node_modules/acorn/src/index.js
@@ -25,18 +25,19 @@ import "./statement"
 import "./lval"
 import "./expression"
 import "./location"
+import "./scope"
 
 export {Parser, plugins} from "./state"
 export {defaultOptions} from "./options"
 export {Position, SourceLocation, getLineInfo} from "./locutil"
 export {Node} from "./node"
-export {TokenType, types as tokTypes} from "./tokentype"
+export {TokenType, types as tokTypes, keywords as keywordTypes} from "./tokentype"
 export {TokContext, types as tokContexts} from "./tokencontext"
 export {isIdentifierChar, isIdentifierStart} from "./identifier"
 export {Token} from "./tokenize"
-export {isNewLine, lineBreak, lineBreakG} from "./whitespace"
+export {isNewLine, lineBreak, lineBreakG, nonASCIIwhitespace} from "./whitespace"
 
-export const version = "4.0.4"
+export const version = "5.0.3"
 
 // The main exported interface (under `self.acorn` when in the
 // browser) is a `parse` function that takes a code string and
@@ -69,9 +70,9 @@ export function tokenizer(input, options) {
 // This is a terrible kludge to support the existing, pre-ES6
 // interface where the loose parser module retroactively adds exports
 // to this module.
-export let parse_dammit, LooseParser, pluginsLoose
+export let parse_dammit, LooseParser, pluginsLoose // eslint-disable-line camelcase
 export function addLooseExports(parse, Parser, plugins) {
-  parse_dammit = parse
+  parse_dammit = parse // eslint-disable-line camelcase
   LooseParser = Parser
   pluginsLoose = plugins
 }
diff --git a/tools/eslint/node_modules/acorn/src/loose/expression.js b/tools/eslint/node_modules/acorn/src/loose/expression.js
index 1ef11b836dbaae..62bd42de3371ab 100644
--- a/tools/eslint/node_modules/acorn/src/loose/expression.js
+++ b/tools/eslint/node_modules/acorn/src/loose/expression.js
@@ -280,7 +280,7 @@ lp.parseExprAtom = function() {
     return this.parseObj()
 
   case tt._class:
-    return this.parseClass()
+    return this.parseClass(false)
 
   case tt._function:
     node = this.startNode()
@@ -319,7 +319,7 @@ lp.parseNew = function() {
 lp.parseTemplateElement = function() {
   let elem = this.startNode()
   elem.value = {
-    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, '\n'),
+    raw: this.input.slice(this.tok.start, this.tok.end).replace(/\r\n?/g, "\n"),
     cooked: this.tok.value
   }
   this.next()
@@ -340,7 +340,7 @@ lp.parseTemplate = function() {
       curElt = this.parseTemplateElement()
     } else {
       curElt = this.startNode()
-      curElt.value = {cooked: '', raw: ''}
+      curElt.value = {cooked: "", raw: ""}
       curElt.tail = true
       this.finishNode(curElt, "TemplateElement")
     }
diff --git a/tools/eslint/node_modules/acorn/src/loose/index.js b/tools/eslint/node_modules/acorn/src/loose/index.js
index 98bbf4b3bebbab..daf7bf2d792f30 100644
--- a/tools/eslint/node_modules/acorn/src/loose/index.js
+++ b/tools/eslint/node_modules/acorn/src/loose/index.js
@@ -39,6 +39,7 @@ export {LooseParser, pluginsLoose} from "./state"
 
 defaultOptions.tabSize = 4
 
+// eslint-disable-next-line camelcase
 export function parse_dammit(input, options) {
   let p = new LooseParser(input, options)
   p.next()
diff --git a/tools/eslint/node_modules/acorn/src/loose/parseutil.js b/tools/eslint/node_modules/acorn/src/loose/parseutil.js
index c5ee096a1dd7a6..b620fdaf0aca58 100644
--- a/tools/eslint/node_modules/acorn/src/loose/parseutil.js
+++ b/tools/eslint/node_modules/acorn/src/loose/parseutil.js
@@ -1 +1 @@
-export function isDummy(node) { return node.name == "✖" }
\ No newline at end of file
+export function isDummy(node) { return node.name == "✖" }
diff --git a/tools/eslint/node_modules/acorn/src/loose/statement.js b/tools/eslint/node_modules/acorn/src/loose/statement.js
index 42eda0597ef8e2..192df43e0f3f23 100644
--- a/tools/eslint/node_modules/acorn/src/loose/statement.js
+++ b/tools/eslint/node_modules/acorn/src/loose/statement.js
@@ -252,7 +252,7 @@ lp.parseClass = function(isStatement) {
   let node = this.startNode()
   this.next()
   if (this.tok.type === tt.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   else node.id = null
   node.superClass = this.eat(tt._extends) ? this.parseExpression() : null
   node.body = this.startNode()
@@ -298,7 +298,7 @@ lp.parseClass = function(isStatement) {
           method.key.type === "Literal" && method.key.value === "constructor")) {
         method.kind = "constructor"
       } else {
-        method.kind =  "method"
+        method.kind = "method"
       }
       method.value = this.parseMethod(isGenerator, isAsync)
     }
@@ -326,7 +326,7 @@ lp.parseFunction = function(node, isStatement, isAsync) {
     node.async = !!isAsync
   }
   if (this.tok.type === tt.name) node.id = this.parseIdent()
-  else if (isStatement) node.id = this.dummyIdent()
+  else if (isStatement === true) node.id = this.dummyIdent()
   this.inAsync = node.async
   node.params = this.parseFunctionParams()
   node.body = this.parseBlock()
@@ -343,16 +343,18 @@ lp.parseExport = function() {
   }
   if (this.eat(tt._default)) {
     // export default (function foo() {}) // This is FunctionExpression.
-    let isParenL = this.tok.type === tt.parenL
-    let expr = this.parseMaybeAssign()
-    if (!isParenL && expr.id) {
-      switch (expr.type) {
-      case "FunctionExpression": expr.type = "FunctionDeclaration"; break
-      case "ClassExpression": expr.type = "ClassDeclaration"; break
-      }
+    let isAsync
+    if (this.tok.type === tt._function || (isAsync = this.toks.isAsyncFunction())) {
+      let fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", isAsync)
+    } else if (this.tok.type === tt._class) {
+      node.declaration = this.parseClass("nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   if (this.tok.type.keyword || this.toks.isLet() || this.toks.isAsyncFunction()) {
@@ -374,7 +376,7 @@ lp.parseImport = function() {
   if (this.tok.type === tt.string) {
     node.specifiers = []
     node.source = this.parseExprAtom()
-    node.kind = ''
+    node.kind = ""
   } else {
     let elt
     if (this.tok.type === tt.name && this.tok.value !== "from") {
diff --git a/tools/eslint/node_modules/acorn/src/loose/tokenize.js b/tools/eslint/node_modules/acorn/src/loose/tokenize.js
index c08be977832a98..2d5130b638e251 100644
--- a/tools/eslint/node_modules/acorn/src/loose/tokenize.js
+++ b/tools/eslint/node_modules/acorn/src/loose/tokenize.js
@@ -34,7 +34,7 @@ lp.readToken = function() {
         this.toks.type = tt.ellipsis
       }
       return new Token(this.toks)
-    } catch(e) {
+    } catch (e) {
       if (!(e instanceof SyntaxError)) throw e
 
       // Try to skip some text, based on the error message, and then continue
@@ -45,12 +45,15 @@ lp.readToken = function() {
           replace = {start: e.pos, end: pos, type: tt.string, value: this.input.slice(e.pos + 1, pos)}
         } else if (/regular expr/i.test(msg)) {
           let re = this.input.slice(e.pos, pos)
-          try { re = new RegExp(re) } catch(e) {}
+          try { re = new RegExp(re) } catch (e) { /* ignore compilation error due to new syntax */ }
           replace = {start: e.pos, end: pos, type: tt.regexp, value: re}
         } else if (/template/.test(msg)) {
-          replace = {start: e.pos, end: pos,
-                     type: tt.template,
-                     value: this.input.slice(e.pos, pos)}
+          replace = {
+            start: e.pos,
+            end: pos,
+            type: tt.template,
+            value: this.input.slice(e.pos, pos)
+          }
         } else {
           replace = false
         }
@@ -86,7 +89,7 @@ lp.readToken = function() {
 lp.resetTo = function(pos) {
   this.toks.pos = pos
   let ch = this.input.charAt(pos - 1)
-  this.toks.exprAllowed = !ch || /[\[\{\(,;:?\/*=+\-~!|&%^<>]/.test(ch) ||
+  this.toks.exprAllowed = !ch || /[[{(,;:?/*=+\-~!|&%^<>]/.test(ch) ||
     /[enwfd]/.test(ch) &&
     /\b(keywords|case|else|return|throw|new|in|(instance|type)of|delete|void)$/.test(this.input.slice(pos - 10, pos))
 
diff --git a/tools/eslint/node_modules/acorn/src/lval.js b/tools/eslint/node_modules/acorn/src/lval.js
index c88d71938b6310..815d9966a5d180 100644
--- a/tools/eslint/node_modules/acorn/src/lval.js
+++ b/tools/eslint/node_modules/acorn/src/lval.js
@@ -10,7 +10,7 @@ const pp = Parser.prototype
 pp.toAssignable = function(node, isBinding) {
   if (this.options.ecmaVersion >= 6 && node) {
     switch (node.type) {
-      case "Identifier":
+    case "Identifier":
       if (this.inAsync && node.name === "await")
         this.raise(node.start, "Can not use 'await' as identifier inside an async function")
       break
@@ -172,48 +172,65 @@ pp.parseMaybeDefault = function(startPos, startLoc, left) {
 
 // Verify that a node is an lval — something that can be assigned
 // to.
+// bindingType can be either:
+// 'var' indicating that the lval creates a 'var' binding
+// 'let' indicating that the lval creates a lexical ('let' or 'const') binding
+// 'none' indicating that the binding should be checked for illegal identifiers, but not for duplicate references
 
-pp.checkLVal = function(expr, isBinding, checkClashes) {
+pp.checkLVal = function(expr, bindingType, checkClashes) {
   switch (expr.type) {
   case "Identifier":
     if (this.strict && this.reservedWordsStrictBind.test(expr.name))
-      this.raiseRecoverable(expr.start, (isBinding ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
+      this.raiseRecoverable(expr.start, (bindingType ? "Binding " : "Assigning to ") + expr.name + " in strict mode")
     if (checkClashes) {
       if (has(checkClashes, expr.name))
         this.raiseRecoverable(expr.start, "Argument name clash")
       checkClashes[expr.name] = true
     }
+    if (bindingType && bindingType !== "none") {
+      if (
+        bindingType === "var" && !this.canDeclareVarName(expr.name) ||
+        bindingType !== "var" && !this.canDeclareLexicalName(expr.name)
+      ) {
+        this.raiseRecoverable(expr.start, `Identifier '${expr.name}' has already been declared`)
+      }
+      if (bindingType === "var") {
+        this.declareVarName(expr.name)
+      } else {
+        this.declareLexicalName(expr.name)
+      }
+    }
     break
 
   case "MemberExpression":
-    if (isBinding) this.raiseRecoverable(expr.start, (isBinding ? "Binding" : "Assigning to") + " member expression")
+    if (bindingType) this.raiseRecoverable(expr.start, (bindingType ? "Binding" : "Assigning to") + " member expression")
     break
 
   case "ObjectPattern":
     for (let i = 0; i < expr.properties.length; i++)
-      this.checkLVal(expr.properties[i].value, isBinding, checkClashes)
+      this.checkLVal(expr.properties[i].value, bindingType, checkClashes)
     break
 
   case "ArrayPattern":
     for (let i = 0; i < expr.elements.length; i++) {
       let elem = expr.elements[i]
-      if (elem) this.checkLVal(elem, isBinding, checkClashes)
+      if (elem) this.checkLVal(elem, bindingType, checkClashes)
     }
     break
 
   case "AssignmentPattern":
-    this.checkLVal(expr.left, isBinding, checkClashes)
+    this.checkLVal(expr.left, bindingType, checkClashes)
     break
 
   case "RestElement":
-    this.checkLVal(expr.argument, isBinding, checkClashes)
+    this.checkLVal(expr.argument, bindingType, checkClashes)
     break
 
   case "ParenthesizedExpression":
-    this.checkLVal(expr.expression, isBinding, checkClashes)
+    this.checkLVal(expr.expression, bindingType, checkClashes)
     break
 
   default:
-    this.raise(expr.start, (isBinding ? "Binding" : "Assigning to") + " rvalue")
+    this.raise(expr.start, (bindingType ? "Binding" : "Assigning to") + " rvalue")
   }
 }
diff --git a/tools/eslint/node_modules/acorn/src/options.js b/tools/eslint/node_modules/acorn/src/options.js
index e7b217e8d50967..9dda44ae880588 100644
--- a/tools/eslint/node_modules/acorn/src/options.js
+++ b/tools/eslint/node_modules/acorn/src/options.js
@@ -111,9 +111,9 @@ export function getOptions(opts) {
 }
 
 function pushComment(options, array) {
-  return function (block, text, start, end, startLoc, endLoc) {
+  return function(block, text, start, end, startLoc, endLoc) {
     let comment = {
-      type: block ? 'Block' : 'Line',
+      type: block ? "Block" : "Line",
       value: text,
       start: start,
       end: end
@@ -125,4 +125,3 @@ function pushComment(options, array) {
     array.push(comment)
   }
 }
-
diff --git a/tools/eslint/node_modules/acorn/src/parseutil.js b/tools/eslint/node_modules/acorn/src/parseutil.js
index 55d10344a8cdda..ffa00503026cdb 100644
--- a/tools/eslint/node_modules/acorn/src/parseutil.js
+++ b/tools/eslint/node_modules/acorn/src/parseutil.js
@@ -1,17 +1,21 @@
 import {types as tt} from "./tokentype"
 import {Parser} from "./state"
-import {lineBreak} from "./whitespace"
+import {lineBreak, skipWhiteSpace} from "./whitespace"
 
 const pp = Parser.prototype
 
 // ## Parser utilities
 
-// Test whether a statement node is the string literal `"use strict"`.
-
-pp.isUseStrict = function(stmt) {
-  return this.options.ecmaVersion >= 5 && stmt.type === "ExpressionStatement" &&
-    stmt.expression.type === "Literal" &&
-    stmt.expression.raw.slice(1, -1) === "use strict"
+const literal = /^(?:'((?:[^']|\.)*)'|"((?:[^"]|\.)*)"|;)/
+pp.strictDirective = function(start) {
+  for (;;) {
+    skipWhiteSpace.lastIndex = start
+    start += skipWhiteSpace.exec(this.input)[0].length
+    let match = literal.exec(this.input.slice(start))
+    if (!match) return false
+    if ((match[1] || match[2]) == "use strict") return true
+    start += match[0].length
+  }
 }
 
 // Predicate that tests whether the next token is of the given
@@ -92,21 +96,22 @@ pp.unexpected = function(pos) {
 
 export class DestructuringErrors {
   constructor() {
-    this.shorthandAssign = 0
-    this.trailingComma = 0
+    this.shorthandAssign = this.trailingComma = this.parenthesizedAssign = this.parenthesizedBind = -1
   }
 }
 
-pp.checkPatternErrors = function(refDestructuringErrors, andThrow) {
-  let trailing = refDestructuringErrors && refDestructuringErrors.trailingComma
-  if (!andThrow) return !!trailing
-  if (trailing) this.raise(trailing, "Comma is not permitted after the rest element")
+pp.checkPatternErrors = function(refDestructuringErrors, isAssign) {
+  if (!refDestructuringErrors) return
+  if (refDestructuringErrors.trailingComma > -1)
+    this.raiseRecoverable(refDestructuringErrors.trailingComma, "Comma is not permitted after the rest element")
+  let parens = isAssign ? refDestructuringErrors.parenthesizedAssign : refDestructuringErrors.parenthesizedBind
+  if (parens > -1) this.raiseRecoverable(parens, "Parenthesized pattern")
 }
 
 pp.checkExpressionErrors = function(refDestructuringErrors, andThrow) {
-  let pos = refDestructuringErrors && refDestructuringErrors.shorthandAssign
-  if (!andThrow) return !!pos
-  if (pos) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
+  let pos = refDestructuringErrors ? refDestructuringErrors.shorthandAssign : -1
+  if (!andThrow) return pos >= 0
+  if (pos > -1) this.raise(pos, "Shorthand property assignments are valid only in destructuring patterns")
 }
 
 pp.checkYieldAwaitInDefaultParams = function() {
@@ -115,3 +120,9 @@ pp.checkYieldAwaitInDefaultParams = function() {
   if (this.awaitPos)
     this.raise(this.awaitPos, "Await expression cannot be a default value")
 }
+
+pp.isSimpleAssignTarget = function(expr) {
+  if (expr.type === "ParenthesizedExpression")
+    return this.isSimpleAssignTarget(expr.expression)
+  return expr.type === "Identifier" || expr.type === "MemberExpression"
+}
diff --git a/tools/eslint/node_modules/acorn/src/scope.js b/tools/eslint/node_modules/acorn/src/scope.js
new file mode 100644
index 00000000000000..2ec0448990b37d
--- /dev/null
+++ b/tools/eslint/node_modules/acorn/src/scope.js
@@ -0,0 +1,75 @@
+import {Parser} from "./state"
+import {has} from "./util"
+
+const pp = Parser.prototype
+
+// Object.assign polyfill
+const assign = Object.assign || function(target, ...sources) {
+  for (let i = 0; i < sources.length; i++) {
+    const source = sources[i]
+    for (const key in source) {
+      if (has(source, key)) {
+        target[key] = source[key]
+      }
+    }
+  }
+  return target
+}
+
+// The functions in this module keep track of declared variables in the current scope in order to detect duplicate variable names.
+
+pp.enterFunctionScope = function() {
+  // var: a hash of var-declared names in the current lexical scope
+  // lexical: a hash of lexically-declared names in the current lexical scope
+  // childVar: a hash of var-declared names in all child lexical scopes of the current lexical scope (within the current function scope)
+  // parentLexical: a hash of lexically-declared names in all parent lexical scopes of the current lexical scope (within the current function scope)
+  this.scopeStack.push({var: {}, lexical: {}, childVar: {}, parentLexical: {}})
+}
+
+pp.exitFunctionScope = function() {
+  this.scopeStack.pop()
+}
+
+pp.enterLexicalScope = function() {
+  const parentScope = this.scopeStack[this.scopeStack.length - 1]
+  const childScope = {var: {}, lexical: {}, childVar: {}, parentLexical: {}}
+
+  this.scopeStack.push(childScope)
+  assign(childScope.parentLexical, parentScope.lexical, parentScope.parentLexical)
+}
+
+pp.exitLexicalScope = function() {
+  const childScope = this.scopeStack.pop()
+  const parentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  assign(parentScope.childVar, childScope.var, childScope.childVar)
+}
+
+/**
+ * A name can be declared with `var` if there are no variables with the same name declared with `let`/`const`
+ * in the current lexical scope or any of the parent lexical scopes in this function.
+ */
+pp.canDeclareVarName = function(name) {
+  const currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.parentLexical, name)
+}
+
+/**
+ * A name can be declared with `let`/`const` if there are no variables with the same name declared with `let`/`const`
+ * in the current scope, and there are no variables with the same name declared with `var` in the current scope or in
+ * any child lexical scopes in this function.
+ */
+pp.canDeclareLexicalName = function(name) {
+  const currentScope = this.scopeStack[this.scopeStack.length - 1]
+
+  return !has(currentScope.lexical, name) && !has(currentScope.var, name) && !has(currentScope.childVar, name)
+}
+
+pp.declareVarName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].var[name] = true
+}
+
+pp.declareLexicalName = function(name) {
+  this.scopeStack[this.scopeStack.length - 1].lexical[name] = true
+}
diff --git a/tools/eslint/node_modules/acorn/src/state.js b/tools/eslint/node_modules/acorn/src/state.js
index 1a8e2931726a57..5d9ae7501bd789 100644
--- a/tools/eslint/node_modules/acorn/src/state.js
+++ b/tools/eslint/node_modules/acorn/src/state.js
@@ -69,7 +69,8 @@ export class Parser {
     this.exprAllowed = true
 
     // Figure out if it's a module code.
-    this.strict = this.inModule = options.sourceType === "module"
+    this.inModule = options.sourceType === "module"
+    this.strict = this.inModule || this.strictDirective(this.pos)
 
     // Used to signify the start of a potential arrow function
     this.potentialArrowAt = -1
@@ -82,8 +83,12 @@ export class Parser {
     this.labels = []
 
     // If enabled, skip leading hashbang line.
-    if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === '#!')
+    if (this.pos === 0 && options.allowHashBang && this.input.slice(0, 2) === "#!")
       this.skipLineComment(2)
+
+    // Scope tracking for duplicate variable names (see scope.js)
+    this.scopeStack = []
+    this.enterFunctionScope()
   }
 
   // DEPRECATED Kept for backwards compatibility until 3.0 in case a plugin uses them
diff --git a/tools/eslint/node_modules/acorn/src/statement.js b/tools/eslint/node_modules/acorn/src/statement.js
index 3cd29163d28d1c..eb2f18e8bc4c13 100644
--- a/tools/eslint/node_modules/acorn/src/statement.js
+++ b/tools/eslint/node_modules/acorn/src/statement.js
@@ -2,6 +2,7 @@ import {types as tt} from "./tokentype"
 import {Parser} from "./state"
 import {lineBreak, skipWhiteSpace} from "./whitespace"
 import {isIdentifierStart, isIdentifierChar} from "./identifier"
+import {has} from "./util"
 import {DestructuringErrors} from "./parseutil"
 
 const pp = Parser.prototype
@@ -14,15 +15,11 @@ const pp = Parser.prototype
 // to its body instead of creating a new node.
 
 pp.parseTopLevel = function(node) {
-  let first = true, exports = {}
+  let exports = {}
   if (!node.body) node.body = []
   while (this.type !== tt.eof) {
     let stmt = this.parseStatement(true, true, exports)
     node.body.push(stmt)
-    if (first) {
-      if (this.isUseStrict(stmt)) this.setStrict(true)
-      first = false
-    }
   }
   this.next()
   if (this.options.ecmaVersion >= 6) {
@@ -40,7 +37,8 @@ pp.isLet = function() {
   let next = this.pos + skip[0].length, nextCh = this.input.charCodeAt(next)
   if (nextCh === 91 || nextCh == 123) return true // '{' and '['
   if (isIdentifierStart(nextCh, true)) {
-    for (var pos = next + 1; isIdentifierChar(this.input.charCodeAt(pos), true); ++pos) {}
+    let pos = next + 1
+    while (isIdentifierChar(this.input.charCodeAt(pos), true)) ++pos
     let ident = this.input.slice(next, pos)
     if (!this.isKeyword(ident)) return true
   }
@@ -145,7 +143,8 @@ pp.parseBreakContinueStatement = function(node, keyword) {
 
   // Verify that there is an actual destination to break or
   // continue to.
-  for (var i = 0; i < this.labels.length; ++i) {
+  let i = 0
+  for (; i < this.labels.length; ++i) {
     let lab = this.labels[i]
     if (node.label == null || lab.name === node.label.name) {
       if (lab.kind != null && (isBreak || lab.kind === "loop")) break
@@ -187,6 +186,7 @@ pp.parseDoStatement = function(node) {
 pp.parseForStatement = function(node) {
   this.next()
   this.labels.push(loopLabel)
+  this.enterLexicalScope()
   this.expect(tt.parenL)
   if (this.type === tt.semi) return this.parseFor(node, null)
   let isLet = this.isLet()
@@ -203,9 +203,9 @@ pp.parseForStatement = function(node) {
   let refDestructuringErrors = new DestructuringErrors
   let init = this.parseExpression(true, refDestructuringErrors)
   if (this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of"))) {
-    this.checkPatternErrors(refDestructuringErrors, true)
     this.toAssignable(init)
     this.checkLVal(init)
+    this.checkPatternErrors(refDestructuringErrors, true)
     return this.parseForIn(node, init)
   } else {
     this.checkExpressionErrors(refDestructuringErrors, true)
@@ -251,12 +251,14 @@ pp.parseSwitchStatement = function(node) {
   node.cases = []
   this.expect(tt.braceL)
   this.labels.push(switchLabel)
+  this.enterLexicalScope()
 
   // Statements under must be grouped (by label) in SwitchCase
   // nodes. `cur` is used to keep the node that we are currently
   // adding statements to.
 
-  for (var cur, sawDefault = false; this.type != tt.braceR;) {
+  let cur
+  for (let sawDefault = false; this.type != tt.braceR;) {
     if (this.type === tt._case || this.type === tt._default) {
       let isCase = this.type === tt._case
       if (cur) this.finishNode(cur, "SwitchCase")
@@ -276,6 +278,7 @@ pp.parseSwitchStatement = function(node) {
       cur.consequent.push(this.parseStatement(true))
     }
   }
+  this.exitLexicalScope()
   if (cur) this.finishNode(cur, "SwitchCase")
   this.next() // Closing brace
   this.labels.pop()
@@ -304,9 +307,11 @@ pp.parseTryStatement = function(node) {
     this.next()
     this.expect(tt.parenL)
     clause.param = this.parseBindingAtom()
-    this.checkLVal(clause.param, true)
+    this.enterLexicalScope()
+    this.checkLVal(clause.param, "let")
     this.expect(tt.parenR)
-    clause.body = this.parseBlock()
+    clause.body = this.parseBlock(false)
+    this.exitLexicalScope()
     node.handler = this.finishNode(clause, "CatchClause")
   }
   node.finalizer = this.eat(tt._finally) ? this.parseBlock() : null
@@ -357,6 +362,10 @@ pp.parseLabeledStatement = function(node, maybeName, expr) {
   }
   this.labels.push({name: maybeName, kind: kind, statementStart: this.start})
   node.body = this.parseStatement(true)
+  if (node.body.type == "ClassDeclaration" ||
+      node.body.type == "VariableDeclaration" && node.body.kind != "var" ||
+      node.body.type == "FunctionDeclaration" && (this.strict || node.body.generator))
+    this.raiseRecoverable(node.body.start, "Invalid labeled declaration")
   this.labels.pop()
   node.label = expr
   return this.finishNode(node, "LabeledStatement")
@@ -372,20 +381,20 @@ pp.parseExpressionStatement = function(node, expr) {
 // strict"` declarations when `allowStrict` is true (used for
 // function bodies).
 
-pp.parseBlock = function(allowStrict) {
-  let node = this.startNode(), first = true, oldStrict
+pp.parseBlock = function(createNewLexicalScope = true) {
+  let node = this.startNode()
   node.body = []
   this.expect(tt.braceL)
+  if (createNewLexicalScope) {
+    this.enterLexicalScope()
+  }
   while (!this.eat(tt.braceR)) {
     let stmt = this.parseStatement(true)
     node.body.push(stmt)
-    if (first && allowStrict && this.isUseStrict(stmt)) {
-      oldStrict = this.strict
-      this.setStrict(this.strict = true)
-    }
-    first = false
   }
-  if (oldStrict === false) this.setStrict(false)
+  if (createNewLexicalScope) {
+    this.exitLexicalScope()
+  }
   return this.finishNode(node, "BlockStatement")
 }
 
@@ -400,6 +409,7 @@ pp.parseFor = function(node, init) {
   this.expect(tt.semi)
   node.update = this.type === tt.parenR ? null : this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, "ForStatement")
@@ -414,6 +424,7 @@ pp.parseForIn = function(node, init) {
   node.left = init
   node.right = this.parseExpression()
   this.expect(tt.parenR)
+  this.exitLexicalScope()
   node.body = this.parseStatement(false)
   this.labels.pop()
   return this.finishNode(node, type)
@@ -426,7 +437,7 @@ pp.parseVar = function(node, isFor, kind) {
   node.kind = kind
   for (;;) {
     let decl = this.startNode()
-    this.parseVarId(decl)
+    this.parseVarId(decl, kind)
     if (this.eat(tt.eq)) {
       decl.init = this.parseMaybeAssign(isFor)
     } else if (kind === "const" && !(this.type === tt._in || (this.options.ecmaVersion >= 6 && this.isContextual("of")))) {
@@ -442,9 +453,9 @@ pp.parseVar = function(node, isFor, kind) {
   return node
 }
 
-pp.parseVarId = function(decl) {
-  decl.id = this.parseBindingAtom()
-  this.checkLVal(decl.id, true)
+pp.parseVarId = function(decl, kind) {
+  decl.id = this.parseBindingAtom(kind)
+  this.checkLVal(decl.id, kind, false)
 }
 
 // Parse a function declaration or literal (depending on the
@@ -457,17 +468,25 @@ pp.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   if (this.options.ecmaVersion >= 8)
     node.async = !!isAsync
 
-  if (isStatement)
-    node.id = this.parseIdent()
+  if (isStatement) {
+    node.id = isStatement === "nullableID" && this.type != tt.name ? null : this.parseIdent()
+    if (node.id) {
+      this.checkLVal(node.id, "var")
+    }
+  }
 
-  let oldInGen = this.inGenerator, oldInAsync = this.inAsync, oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos
+  let oldInGen = this.inGenerator, oldInAsync = this.inAsync,
+      oldYieldPos = this.yieldPos, oldAwaitPos = this.awaitPos, oldInFunc = this.inFunction
   this.inGenerator = node.generator
   this.inAsync = node.async
   this.yieldPos = 0
   this.awaitPos = 0
+  this.inFunction = true
+  this.enterFunctionScope()
+
+  if (!isStatement)
+    node.id = this.type == tt.name ? this.parseIdent() : null
 
-  if (!isStatement && this.type === tt.name)
-    node.id = this.parseIdent()
   this.parseFunctionParams(node)
   this.parseFunctionBody(node, allowExpressionBody)
 
@@ -475,6 +494,7 @@ pp.parseFunction = function(node, isStatement, allowExpressionBody, isAsync) {
   this.inAsync = oldInAsync
   this.yieldPos = oldYieldPos
   this.awaitPos = oldAwaitPos
+  this.inFunction = oldInFunc
   return this.finishNode(node, isStatement ? "FunctionDeclaration" : "FunctionExpression")
 }
 
@@ -489,6 +509,7 @@ pp.parseFunctionParams = function(node) {
 
 pp.parseClass = function(node, isStatement) {
   this.next()
+
   this.parseClassId(node, isStatement)
   this.parseClassSuper(node)
   let classBody = this.startNode()
@@ -558,7 +579,7 @@ pp.parseClassMethod = function(classBody, method, isGenerator, isAsync) {
 }
 
 pp.parseClassId = function(node, isStatement) {
-  node.id = this.type === tt.name ? this.parseIdent() : isStatement ? this.unexpected() : null
+  node.id = this.type === tt.name ? this.parseIdent() : isStatement === true ? this.unexpected() : null
 }
 
 pp.parseClassSuper = function(node) {
@@ -578,20 +599,19 @@ pp.parseExport = function(node, exports) {
   }
   if (this.eat(tt._default)) { // export default ...
     this.checkExport(exports, "default", this.lastTokStart)
-    let parens = this.type == tt.parenL
-    let expr = this.parseMaybeAssign()
-    let needsSemi = true
-    if (!parens && (expr.type == "FunctionExpression" ||
-                    expr.type == "ClassExpression")) {
-      needsSemi = false
-      if (expr.id) {
-        expr.type = expr.type == "FunctionExpression"
-          ? "FunctionDeclaration"
-          : "ClassDeclaration"
-      }
+    let isAsync
+    if (this.type === tt._function || (isAsync = this.isAsyncFunction())) {
+      let fNode = this.startNode()
+      this.next()
+      if (isAsync) this.next()
+      node.declaration = this.parseFunction(fNode, "nullableID", false, isAsync)
+    } else if (this.type === tt._class) {
+      let cNode = this.startNode()
+      node.declaration = this.parseClass(cNode, "nullableID")
+    } else {
+      node.declaration = this.parseMaybeAssign()
+      this.semicolon()
     }
-    node.declaration = expr
-    if (needsSemi) this.semicolon()
     return this.finishNode(node, "ExportDefaultDeclaration")
   }
   // export var|const|let|function|class ...
@@ -625,7 +645,7 @@ pp.parseExport = function(node, exports) {
 
 pp.checkExport = function(exports, name, pos) {
   if (!exports) return
-  if (Object.prototype.hasOwnProperty.call(exports, name))
+  if (has(exports, name))
     this.raiseRecoverable(pos, "Duplicate export '" + name + "'")
   exports[name] = true
 }
@@ -655,12 +675,12 @@ pp.checkVariableExport = function(exports, decls) {
 }
 
 pp.shouldParseExportStatement = function() {
-  return this.type.keyword === "var"
-    || this.type.keyword === "const"
-    || this.type.keyword === "class"
-    || this.type.keyword === "function"
-    || this.isLet()
-    || this.isAsyncFunction()
+  return this.type.keyword === "var" ||
+    this.type.keyword === "const" ||
+    this.type.keyword === "class" ||
+    this.type.keyword === "function" ||
+    this.isLet() ||
+    this.isAsyncFunction()
 }
 
 // Parses a comma-separated list of module exports.
@@ -676,7 +696,7 @@ pp.parseExportSpecifiers = function(exports) {
     } else first = false
 
     let node = this.startNode()
-    node.local = this.parseIdent(this.type === tt._default)
+    node.local = this.parseIdent(true)
     node.exported = this.eatContextual("as") ? this.parseIdent(true) : node.local
     this.checkExport(exports, node.exported.name, node.exported.start)
     nodes.push(this.finishNode(node, "ExportSpecifier"))
@@ -709,7 +729,7 @@ pp.parseImportSpecifiers = function() {
     // import defaultObj, { x, y as z } from '...'
     let node = this.startNode()
     node.local = this.parseIdent()
-    this.checkLVal(node.local, true)
+    this.checkLVal(node.local, "let")
     nodes.push(this.finishNode(node, "ImportDefaultSpecifier"))
     if (!this.eat(tt.comma)) return nodes
   }
@@ -718,7 +738,7 @@ pp.parseImportSpecifiers = function() {
     this.next()
     this.expectContextual("as")
     node.local = this.parseIdent()
-    this.checkLVal(node.local, true)
+    this.checkLVal(node.local, "let")
     nodes.push(this.finishNode(node, "ImportNamespaceSpecifier"))
     return nodes
   }
@@ -738,7 +758,7 @@ pp.parseImportSpecifiers = function() {
       if (this.isKeyword(node.local.name)) this.unexpected(node.local.start)
       if (this.reservedWordsStrict.test(node.local.name)) this.raiseRecoverable(node.local.start, "The keyword '" + node.local.name + "' is reserved")
     }
-    this.checkLVal(node.local, true)
+    this.checkLVal(node.local, "let")
     nodes.push(this.finishNode(node, "ImportSpecifier"))
   }
   return nodes
diff --git a/tools/eslint/node_modules/acorn/src/tokencontext.js b/tools/eslint/node_modules/acorn/src/tokencontext.js
index 911a51563d6d24..33e94f4898a464 100644
--- a/tools/eslint/node_modules/acorn/src/tokencontext.js
+++ b/tools/eslint/node_modules/acorn/src/tokencontext.js
@@ -7,11 +7,12 @@ import {types as tt} from "./tokentype"
 import {lineBreak} from "./whitespace"
 
 export class TokContext {
-  constructor(token, isExpr, preserveSpace, override) {
+  constructor(token, isExpr, preserveSpace, override, generator) {
     this.token = token
     this.isExpr = !!isExpr
     this.preserveSpace = !!preserveSpace
     this.override = override
+    this.generator = !!generator
   }
 }
 
@@ -22,7 +23,9 @@ export const types = {
   p_stat: new TokContext("(", false),
   p_expr: new TokContext("(", true),
   q_tmpl: new TokContext("`", true, true, p => p.readTmplToken()),
-  f_expr: new TokContext("function", true)
+  f_expr: new TokContext("function", true),
+  f_expr_gen: new TokContext("function", true, false, null, true),
+  f_gen: new TokContext("function", false, false, null, true)
 }
 
 const pp = Parser.prototype
@@ -39,13 +42,19 @@ pp.braceIsBlock = function(prevType) {
   }
   if (prevType === tt._return)
     return lineBreak.test(this.input.slice(this.lastTokEnd, this.start))
-  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR)
+  if (prevType === tt._else || prevType === tt.semi || prevType === tt.eof || prevType === tt.parenR || prevType == tt.arrow)
     return true
   if (prevType == tt.braceL)
     return this.curContext() === types.b_stat
   return !this.exprAllowed
 }
 
+pp.inGeneratorContext = function() {
+  for (let i = this.context.length - 1; i >= 0; i--)
+    if (this.context[i].generator) return true
+  return false
+}
+
 pp.updateContext = function(prevType) {
   let update, type = this.type
   if (type.keyword && prevType == tt.dot)
@@ -63,8 +72,8 @@ tt.parenR.updateContext = tt.braceR.updateContext = function() {
     this.exprAllowed = true
     return
   }
-  let out = this.context.pop()
-  if (out === types.b_stat && this.curContext() === types.f_expr) {
+  let out = this.context.pop(), cur
+  if (out === types.b_stat && (cur = this.curContext()) && cur.token === "function") {
     this.context.pop()
     this.exprAllowed = false
   } else if (out === types.b_tmpl) {
@@ -108,3 +117,23 @@ tt.backQuote.updateContext = function() {
     this.context.push(types.q_tmpl)
   this.exprAllowed = false
 }
+
+tt.star.updateContext = function(prevType) {
+  if (prevType == tt._function) {
+    if (this.curContext() === types.f_expr)
+      this.context[this.context.length - 1] = types.f_expr_gen
+    else
+      this.context.push(types.f_gen)
+  }
+  this.exprAllowed = true
+}
+
+tt.name.updateContext = function(prevType) {
+  let allowed = false
+  if (this.options.ecmaVersion >= 6) {
+    if (this.value == "of" && !this.exprAllowed ||
+        this.value == "yield" && this.inGeneratorContext())
+      allowed = true
+  }
+  this.exprAllowed = allowed
+}
diff --git a/tools/eslint/node_modules/acorn/src/tokenize.js b/tools/eslint/node_modules/acorn/src/tokenize.js
index 08ea7bf74fb854..917a013b88ab50 100644
--- a/tools/eslint/node_modules/acorn/src/tokenize.js
+++ b/tools/eslint/node_modules/acorn/src/tokenize.js
@@ -48,33 +48,21 @@ pp.getToken = function() {
 
 // If we're in an ES6 environment, make parsers iterable
 if (typeof Symbol !== "undefined")
-  pp[Symbol.iterator] = function () {
-    let self = this
-    return {next: function () {
-      let token = self.getToken()
-      return {
-        done: token.type === tt.eof,
-        value: token
+  pp[Symbol.iterator] = function() {
+    return {
+      next: () => {
+        let token = this.getToken()
+        return {
+          done: token.type === tt.eof,
+          value: token
+        }
       }
-    }}
+    }
   }
 
 // Toggle strict mode. Re-reads the next number or string to please
 // pedantic tests (`"use strict"; 010;` should fail).
 
-pp.setStrict = function(strict) {
-  this.strict = strict
-  if (this.type !== tt.num && this.type !== tt.string) return
-  this.pos = this.start
-  if (this.options.locations) {
-    while (this.pos < this.lineStart) {
-      this.lineStart = this.input.lastIndexOf("\n", this.lineStart - 2) + 1
-      --this.curLine
-    }
-  }
-  this.nextToken()
-}
-
 pp.curContext = function() {
   return this.context[this.context.length - 1]
 }
@@ -131,7 +119,7 @@ pp.skipBlockComment = function() {
 pp.skipLineComment = function(startSkip) {
   let start = this.pos
   let startLoc = this.options.onComment && this.curPosition()
-  let ch = this.input.charCodeAt(this.pos+=startSkip)
+  let ch = this.input.charCodeAt(this.pos += startSkip)
   while (this.pos < this.input.length && ch !== 10 && ch !== 13 && ch !== 8232 && ch !== 8233) {
     ++this.pos
     ch = this.input.charCodeAt(this.pos)
@@ -148,38 +136,38 @@ pp.skipSpace = function() {
   loop: while (this.pos < this.input.length) {
     let ch = this.input.charCodeAt(this.pos)
     switch (ch) {
-      case 32: case 160: // ' '
-        ++this.pos
-        break
-      case 13:
-        if (this.input.charCodeAt(this.pos + 1) === 10) {
-          ++this.pos
-        }
-      case 10: case 8232: case 8233:
+    case 32: case 160: // ' '
+      ++this.pos
+      break
+    case 13:
+      if (this.input.charCodeAt(this.pos + 1) === 10) {
         ++this.pos
-        if (this.options.locations) {
-          ++this.curLine
-          this.lineStart = this.pos
-        }
+      }
+    case 10: case 8232: case 8233:
+      ++this.pos
+      if (this.options.locations) {
+        ++this.curLine
+        this.lineStart = this.pos
+      }
+      break
+    case 47: // '/'
+      switch (this.input.charCodeAt(this.pos + 1)) {
+      case 42: // '*'
+        this.skipBlockComment()
         break
-      case 47: // '/'
-        switch (this.input.charCodeAt(this.pos + 1)) {
-          case 42: // '*'
-            this.skipBlockComment()
-            break
-          case 47:
-            this.skipLineComment(2)
-            break
-          default:
-            break loop
-        }
+      case 47:
+        this.skipLineComment(2)
         break
       default:
-        if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
-          ++this.pos
-        } else {
-          break loop
-        }
+        break loop
+      }
+      break
+    default:
+      if (ch > 8 && ch < 14 || ch >= 5760 && nonASCIIwhitespace.test(String.fromCharCode(ch))) {
+        ++this.pos
+      } else {
+        break loop
+      }
     }
   }
 }
@@ -223,7 +211,7 @@ pp.readToken_dot = function() {
 
 pp.readToken_slash = function() { // '/'
   let next = this.input.charCodeAt(this.pos + 1)
-  if (this.exprAllowed) {++this.pos; return this.readRegexp()}
+  if (this.exprAllowed) { ++this.pos; return this.readRegexp() }
   if (next === 61) return this.finishOp(tt.assign, 2)
   return this.finishOp(tt.slash, 1)
 }
@@ -396,7 +384,7 @@ function tryCreateRegexp(src, flags, throwErrorAt, parser) {
   }
 }
 
-var regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u")
+const regexpUnicodeSupport = !!tryCreateRegexp("\uffff", "u")
 
 pp.readRegexp = function() {
   let escaped, inClass, start = this.pos
@@ -523,7 +511,7 @@ pp.readCodePoint = function() {
   if (ch === 123) {
     if (this.options.ecmaVersion < 6) this.unexpected()
     let codePos = ++this.pos
-    code = this.readHexChar(this.input.indexOf('}', this.pos) - this.pos)
+    code = this.readHexChar(this.input.indexOf("}", this.pos) - this.pos)
     ++this.pos
     if (code > 0x10FFFF) this.raise(codePos, "Code point out of bounds")
   } else {
@@ -586,14 +574,14 @@ pp.readTmplToken = function() {
       out += this.input.slice(chunkStart, this.pos)
       ++this.pos
       switch (ch) {
-        case 13:
-          if (this.input.charCodeAt(this.pos) === 10) ++this.pos
-        case 10:
-          out += "\n"
-          break
-        default:
-          out += String.fromCharCode(ch)
-          break
+      case 13:
+        if (this.input.charCodeAt(this.pos) === 10) ++this.pos
+      case 10:
+        out += "\n"
+        break
+      default:
+        out += String.fromCharCode(ch)
+        break
       }
       if (this.options.locations) {
         ++this.curLine
@@ -691,7 +679,9 @@ pp.readWord1 = function() {
 pp.readWord = function() {
   let word = this.readWord1()
   let type = tt.name
-  if ((this.options.ecmaVersion >= 6 || !this.containsEsc) && this.keywords.test(word))
+  if (this.keywords.test(word)) {
+    if (this.containsEsc) this.raiseRecoverable(this.start, "Escape sequence in keyword " + word)
     type = keywordTypes[word]
+  }
   return this.finishToken(type, word)
 }
diff --git a/tools/eslint/node_modules/acorn/src/util.js b/tools/eslint/node_modules/acorn/src/util.js
index 3517f8d212a749..9f548a140e59fd 100644
--- a/tools/eslint/node_modules/acorn/src/util.js
+++ b/tools/eslint/node_modules/acorn/src/util.js
@@ -1,9 +1,11 @@
-export function isArray(obj) {
-  return Object.prototype.toString.call(obj) === "[object Array]"
-}
+const {hasOwnProperty, toString} = Object.prototype
 
 // Checks if an object has a property.
 
 export function has(obj, propName) {
-  return Object.prototype.hasOwnProperty.call(obj, propName)
+  return hasOwnProperty.call(obj, propName)
 }
+
+export const isArray = Array.isArray || ((obj) => (
+  toString.call(obj) === "[object Array]"
+))
diff --git a/tools/eslint/node_modules/acorn/src/walk/index.js b/tools/eslint/node_modules/acorn/src/walk/index.js
index 0da7e0d86c39b7..e1c6ad40998098 100644
--- a/tools/eslint/node_modules/acorn/src/walk/index.js
+++ b/tools/eslint/node_modules/acorn/src/walk/index.js
@@ -73,7 +73,7 @@ export function findNodeAt(node, start, end, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       let type = override || node.type
       if ((start == null || node.start <= start) &&
           (end == null || node.end >= end))
@@ -95,7 +95,7 @@ export function findNodeAround(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       let type = override || node.type
       if (node.start > pos || node.end < pos) return
       base[type](node, st, c)
@@ -112,7 +112,7 @@ export function findNodeAfter(node, pos, test, base, state) {
   test = makeTest(test)
   if (!base) base = exports.base
   try {
-    ;(function c(node, st, override) {
+    (function c(node, st, override) {
       if (node.end < pos) return
       let type = override || node.type
       if (node.start >= pos && test(type, node)) throw new Found(node, st)
@@ -151,7 +151,7 @@ const create = Object.create || function(proto) {
 export function make(funcs, base) {
   if (!base) base = exports.base
   let visitor = create(base)
-  for (var type in funcs) visitor[type] = funcs[type]
+  for (let type in funcs) visitor[type] = funcs[type]
   return visitor
 }
 
@@ -257,7 +257,7 @@ base.Pattern = (node, st, c) => {
 base.VariablePattern = ignore
 base.MemberPattern = skipThrough
 base.RestElement = (node, st, c) => c(node.argument, st, "Pattern")
-base.ArrayPattern =  (node, st, c) => {
+base.ArrayPattern = (node, st, c) => {
   for (let i = 0; i < node.elements.length; ++i) {
     let elt = node.elements[i]
     if (elt) c(elt, st, "Pattern")
diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
index 0f2a5e938030d7..b2c5093df5784b 100644
--- a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
+++ b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/_formatLimit.js
@@ -4,7 +4,7 @@ module.exports = function generate__formatLimit(it, $keyword) {
   var $lvl = it.level;
   var $dataLvl = it.dataLevel;
   var $schema = it.schema[$keyword];
-  var $schemaPath = it.schemaPath + '.' + $keyword;
+  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
   var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
   var $breakOnError = !it.opts.allErrors;
   var $errorKeyword;
@@ -37,7 +37,7 @@ module.exports = function generate__formatLimit(it, $keyword) {
     $isDataExcl = it.opts.v5 && $schemaExcl && $schemaExcl.$data,
     $op = $isMax ? '<' : '>',
     $result = 'result' + $lvl;
-  var $isData = it.opts.v5 && $schema && $schema.$data,
+  var $isData = it.opts.$data && $schema && $schema.$data,
     $schemaValue;
   if ($isData) {
     out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';
diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
index 196443aefef459..e20df98ca79182 100644
--- a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
+++ b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/patternRequired.js
@@ -4,7 +4,7 @@ module.exports = function generate_patternRequired(it, $keyword) {
   var $lvl = it.level;
   var $dataLvl = it.dataLevel;
   var $schema = it.schema[$keyword];
-  var $schemaPath = it.schemaPath + '.' + $keyword;
+  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
   var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
   var $breakOnError = !it.opts.allErrors;
   var $errorKeyword;
diff --git a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js
index 6bef000ad412ef..f0e843fe0205fc 100644
--- a/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js
+++ b/tools/eslint/node_modules/ajv-keywords/keywords/dotjs/switch.js
@@ -4,7 +4,7 @@ module.exports = function generate_switch(it, $keyword) {
   var $lvl = it.level;
   var $dataLvl = it.dataLevel;
   var $schema = it.schema[$keyword];
-  var $schemaPath = it.schemaPath + '.' + $keyword;
+  var $schemaPath = it.schemaPath + it.util.getProperty($keyword);
   var $errSchemaPath = it.errSchemaPath + '/' + $keyword;
   var $breakOnError = !it.opts.allErrors;
   var $errorKeyword;
diff --git a/tools/eslint/node_modules/ajv-keywords/package.json b/tools/eslint/node_modules/ajv-keywords/package.json
index 8a03a0cf9194ff..2bc14214abb938 100644
--- a/tools/eslint/node_modules/ajv-keywords/package.json
+++ b/tools/eslint/node_modules/ajv-keywords/package.json
@@ -14,13 +14,13 @@
     ]
   ],
   "_from": "ajv-keywords@>=1.0.0 <2.0.0",
-  "_id": "ajv-keywords@1.5.0",
+  "_id": "ajv-keywords@1.5.1",
   "_inCache": true,
   "_location": "/ajv-keywords",
   "_nodeVersion": "4.6.1",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/ajv-keywords-1.5.0.tgz_1482960345081_0.35162315983325243"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/ajv-keywords-1.5.1.tgz_1485107517951_0.29220994655042887"
   },
   "_npmUser": {
     "name": "esp",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/table"
   ],
-  "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz",
-  "_shasum": "c11e6859eafff83e0dafc416929472eca946aa2c",
+  "_resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz",
+  "_shasum": "314dd0a4b3368fad3dfcdc54ede6171b886daf3c",
   "_shrinkwrap": null,
   "_spec": "ajv-keywords@^1.0.0",
   "_where": "/Users/trott/io.js/tools/node_modules/table",
@@ -70,14 +70,14 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "c11e6859eafff83e0dafc416929472eca946aa2c",
-    "tarball": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.0.tgz"
+    "shasum": "314dd0a4b3368fad3dfcdc54ede6171b886daf3c",
+    "tarball": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-1.5.1.tgz"
   },
   "files": [
     "index.js",
     "keywords"
   ],
-  "gitHead": "0677af4020d8aee0e322b78932662a2fd59bd93f",
+  "gitHead": "33c43a2b190c9929fe9e3e9a32a38dace146abf4",
   "homepage": "https://github.com/epoberezkin/ajv-keywords#readme",
   "keywords": [
     "JSON-Schema",
@@ -110,5 +110,5 @@
     "test-cov": "istanbul cover -x 'spec/**' node_modules/mocha/bin/_mocha -- spec/*.spec.js -R spec",
     "test-spec": "mocha spec/*.spec.js -R spec"
   },
-  "version": "1.5.0"
+  "version": "1.5.1"
 }
diff --git a/tools/eslint/node_modules/ajv/README.md b/tools/eslint/node_modules/ajv/README.md
index 2d086258db9d23..984b7ba12d6f9c 100644
--- a/tools/eslint/node_modules/ajv/README.md
+++ b/tools/eslint/node_modules/ajv/README.md
@@ -11,9 +11,9 @@ The fastest JSON Schema validator for node.js and browser. Supports [v5 proposal
 [![Gitter](https://img.shields.io/gitter/room/ajv-validator/ajv.svg)](https://gitter.im/ajv-validator/ajv)
 
 
-__Please note__: You can start using NEW beta version [5.0.1 (change log)](https://github.com/epoberezkin/ajv/releases/tag/5.0.1-beta.0) with the support of draft 6 (not officially published yet): `npm install ajv@^5.0.1-beta`.
+__Please note__: You can start using NEW beta version [5.0.3](https://github.com/epoberezkin/ajv/releases/tag/5.0.3-beta.0) (see [migration guide from 4.x.x](https://github.com/epoberezkin/ajv/releases/tag/5.0.1-beta.0)) with the support of JSON-Schema draft-06 (not officially published yet): `npm install ajv@^5.0.3-beta`.
 
-Also see [docs](https://github.com/epoberezkin/ajv/tree/b82905dc771193112c9c016f08c7fadb6ec3e896) for 5.0.1.
+Also see [docs](https://github.com/epoberezkin/ajv/tree/5.0.3-beta.0) for 5.0.3.
 
 
 ## Contents
@@ -94,10 +94,10 @@ Currently Ajv is the only validator that passes all the tests from [JSON Schema
 npm install ajv
 ```
 
-To install a stable beta version [5.0.0](https://github.com/epoberezkin/ajv/releases/tag/5.0.0-beta.1):
+To install a stable beta version [5.0.3](https://github.com/epoberezkin/ajv/releases/tag/5.0.3-beta.0) (see [migration guide from 4.x.x](https://github.com/epoberezkin/ajv/releases/tag/5.0.1-beta.0)):
 
 ```
-npm install ajv@^5.0.0-beta
+npm install ajv@^5.0.3-beta
 ```
 
 
@@ -350,7 +350,9 @@ The advantages of using custom keywords are:
 - simplify your schemas
 - help bringing a bigger part of the validation logic to your schemas
 - make your schemas more expressive, less verbose and closer to your application domain
-- implement custom data processors that modify your data and/or create side effects while the data is being validated
+- implement custom data processors that modify your data (`modifying` option MUST be used in keyword definition) and/or create side effects while the data is being validated
+
+If a keyword is used only for side-effects and its validation result is pre-defined, use option `valid: true/false` in keyword definition to simplify both generated code (no error handling in case of `valid: true`) and your keyword functions (no need to return any validation result).
 
 The concerns you have to be aware of when extending JSON-schema standard with custom keywords are the portability and understanding of your schemas. You will have to support these custom keywords on other platforms and to properly document these keywords so that everybody can understand them in your schemas.
 
@@ -460,7 +462,7 @@ function checkIdExists(schema, data) {
   .select('id')
   .where('id', data)
   .then(function (rows) {
-    return !!rows/length; // true if record is found
+    return !!rows.length; // true if record is found
   });
 }
 
@@ -925,6 +927,8 @@ Keyword definition is an object with the following properties:
 - _inline_: compiling function that returns code (as string)
 - _schema_: an optional `false` value used with "validate" keyword to not pass schema
 - _metaSchema_: an optional meta-schema for keyword schema
+- _modifying_: `true` MUST be passed if keyword modifies data
+- _valid_: pass `true`/`false` to pre-define validation result, the result returned from validation function will be ignored. This option cannot be used with macro keywords.
 - _$data_: an optional `true` value to support [$data reference](#data-reference) as the value of custom keyword. The reference will be resolved at validation time. If the keyword has meta-schema it would be extended to allow $data and it will be used to validate the resolved value. Supporting $data reference requires that keyword has validating function (as the only option or in addition to compile, macro or inline function).
 - _async_: an optional `true` value if the validation function is asynchronous (whether it is compiled or passed in _validate_ property); in this case it should return a promise that resolves with a value `true` or `false`. This option is ignored in case of "macro" and "inline" keywords.
 - _errors_: an optional boolean indicating whether keyword returns errors. If this property is not set Ajv will determine if the errors were set in case of failed validation.
@@ -1146,20 +1150,24 @@ Properties of `params` object in errors depend on the keyword that failed valida
 
 ## Some packages using Ajv
 
+- [webpack](https://github.com/webpack/webpack) - a module bundler. Its main purpose is to bundle JavaScript files for usage in a browser
 - [jsonscript-js](https://github.com/JSONScript/jsonscript-js) - the interpreter for [JSONScript](http://www.jsonscript.org) - scripted processing of existing endpoints and services
 - [osprey-method-handler](https://github.com/mulesoft-labs/osprey-method-handler) - Express middleware for validating requests and responses based on a RAML method object, used in [osprey](https://github.com/mulesoft/osprey) - validating API proxy generated from a RAML definition
-- [jsoneditor](https://github.com/josdejong/jsoneditor) - A web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org
-- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - A web tool to validate JSON/YAML document against a single JSON-schema http://jsonschemalint.com
+- [har-validator](https://github.com/ahmadnassri/har-validator) - HTTP Archive (HAR) validator
+- [jsoneditor](https://github.com/josdejong/jsoneditor) - a web-based tool to view, edit, format, and validate JSON http://jsoneditoronline.org
+- [JSON Schema Lint](https://github.com/nickcmaynard/jsonschemalint) - a web tool to validate JSON/YAML document against a single JSON-schema http://jsonschemalint.com
 - [objection](https://github.com/vincit/objection.js) - SQL-friendly ORM for node.js
 - [table](https://github.com/gajus/table) - formats data into a string table
-- [ripple-lib](https://github.com/ripple/ripple-lib) - A JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser
-- [restbase](https://github.com/wikimedia/restbase) - Distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content
+- [ripple-lib](https://github.com/ripple/ripple-lib) - a JavaScript API for interacting with [Ripple](https://ripple.com) in Node.js and the browser
+- [restbase](https://github.com/wikimedia/restbase) - distributed storage with REST API & dispatcher for backend services built to provide a low-latency & high-throughput API for Wikipedia / Wikimedia content
 - [hippie-swagger](https://github.com/CacheControl/hippie-swagger) - [Hippie](https://github.com/vesln/hippie) wrapper that provides end to end API testing with swagger validation
 - [react-form-controlled](https://github.com/seeden/react-form-controlled) - React controlled form components with validation
-- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - A schema definition module for RabbitMQ graphs and messages
+- [rabbitmq-schema](https://github.com/tjmehta/rabbitmq-schema) - a schema definition module for RabbitMQ graphs and messages
 - [@query/schema](https://www.npmjs.com/package/@query/schema) - stream filtering with a URI-safe query syntax parsing to JSON Schema
 - [chai-ajv-json-schema](https://github.com/peon374/chai-ajv-json-schema) - chai plugin to us JSON-schema with expect in mocha tests
 - [grunt-jsonschema-ajv](https://github.com/SignpostMarv/grunt-jsonschema-ajv) - Grunt plugin for validating files against JSON-Schema
+- [extract-text-webpack-plugin](https://github.com/webpack-contrib/extract-text-webpack-plugin) - extract text from bundle into a file
+- [electron-builder](https://github.com/electron-userland/electron-builder) - a solution to package and build a ready for distribution Electron app
 - [addons-linter](https://github.com/mozilla/addons-linter) - Mozilla Add-ons Linter
 - [gh-pages-generator](https://github.com/epoberezkin/gh-pages-generator) - multi-page site generator converting markdown files to GitHub pages
 
diff --git a/tools/eslint/node_modules/ajv/dist/ajv.bundle.js b/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
index 3d1911a2bd1d43..1b76cb9f844092 100644
--- a/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
+++ b/tools/eslint/node_modules/ajv/dist/ajv.bundle.js
@@ -2223,6 +2223,7 @@ module.exports = function generate_custom(it, $keyword) {
   var $breakOnError = !it.opts.allErrors;
   var $errorKeyword;
   var $data = 'data' + ($dataLvl || '');
+  var $valid = 'valid' + $lvl;
   var $errs = 'errs__' + $lvl;
   var $isData = it.opts.v5 && $schema && $schema.$data,
     $schemaValue;
@@ -2257,9 +2258,16 @@ module.exports = function generate_custom(it, $keyword) {
   if (!($inline || $macro)) {
     out += '' + ($ruleErrs) + ' = null;';
   }
-  out += 'var ' + ($errs) + ' = errors;var valid' + ($lvl) + ';';
-  if ($inline && $rDef.statements) {
-    out += ' ' + ($ruleValidate.validate);
+  out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';
+  if ($validateSchema) {
+    out += ' ' + ($valid) + ' = ' + ($definition) + '.validateSchema(' + ($schemaValue) + '); if (' + ($valid) + ') {';
+  }
+  if ($inline) {
+    if ($rDef.statements) {
+      out += ' ' + ($ruleValidate.validate) + ' ';
+    } else {
+      out += ' ' + ($valid) + ' = ' + ($ruleValidate.validate) + '; ';
+    }
   } else if ($macro) {
     var $it = it.util.copy(it);
     $it.level++;
@@ -2271,7 +2279,7 @@ module.exports = function generate_custom(it, $keyword) {
     var $code = it.validate($it).replace(/validate\.schema/g, $validateCode);
     it.compositeRule = $it.compositeRule = $wasComposite;
     out += ' ' + ($code);
-  } else if (!$inline) {
+  } else {
     var $$outStack = $$outStack || [];
     $$outStack.push(out);
     out = '';
@@ -2290,102 +2298,56 @@ module.exports = function generate_custom(it, $keyword) {
     if (it.errorPath != '""') {
       out += ' + ' + (it.errorPath);
     }
-    if ($dataLvl) {
-      out += ' , data' + (($dataLvl - 1) || '') + ' , ' + (it.dataPathArr[$dataLvl]) + ' ';
-    } else {
-      out += ' , parentData , parentDataProperty ';
-    }
-    out += ' , rootData )  ';
+    var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',
+      $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';
+    out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ' , rootData )  ';
     var def_callRuleValidate = out;
     out = $$outStack.pop();
-    if ($rDef.errors !== false) {
+    if ($rDef.errors === false) {
+      out += ' ' + ($valid) + ' = ';
+      if ($asyncKeyword) {
+        out += '' + (it.yieldAwait);
+      }
+      out += '' + (def_callRuleValidate) + '; ';
+    } else {
       if ($asyncKeyword) {
         $ruleErrs = 'customErrors' + $lvl;
-        out += ' var ' + ($ruleErrs) + ' = null; try { valid' + ($lvl) + ' = ' + (it.yieldAwait) + (def_callRuleValidate) + '; } catch (e) { valid' + ($lvl) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';
+        out += ' var ' + ($ruleErrs) + ' = null; try { ' + ($valid) + ' = ' + (it.yieldAwait) + (def_callRuleValidate) + '; } catch (e) { ' + ($valid) + ' = false; if (e instanceof ValidationError) ' + ($ruleErrs) + ' = e.errors; else throw e; } ';
       } else {
-        out += ' ' + ($validateCode) + '.errors = null; ';
+        out += ' ' + ($ruleErrs) + ' = null; ' + ($valid) + ' = ' + (def_callRuleValidate) + '; ';
       }
     }
   }
-  out += 'if (';
+  if ($rDef.modifying) {
+    out += ' ' + ($data) + ' = ' + ($parentData) + '[' + ($parentDataProperty) + '];';
+  }
   if ($validateSchema) {
-    out += ' !' + ($definition) + '.validateSchema(' + ($schemaValue) + ') || ';
+    out += ' }';
   }
-  out += ' ! ';
-  if ($inline) {
-    if ($rDef.statements) {
-      out += ' valid' + ($lvl) + ' ';
-    } else {
-      out += ' (' + ($ruleValidate.validate) + ') ';
+  if ($rDef.valid) {
+    if ($breakOnError) {
+      out += ' if (true) { ';
     }
-  } else if ($macro) {
-    out += ' ' + ($nextValid) + ' ';
   } else {
-    if ($asyncKeyword) {
-      if ($rDef.errors === false) {
-        out += ' (' + (it.yieldAwait) + (def_callRuleValidate) + ') ';
+    out += ' if ( ';
+    if ($rDef.valid === undefined) {
+      out += ' !';
+      if ($macro) {
+        out += '' + ($nextValid);
       } else {
-        out += ' valid' + ($lvl) + ' ';
+        out += '' + ($valid);
       }
     } else {
-      out += ' ' + (def_callRuleValidate) + ' ';
+      out += ' ' + (!$rDef.valid) + ' ';
     }
-  }
-  out += ') { ';
-  $errorKeyword = $rule.keyword;
-  var $$outStack = $$outStack || [];
-  $$outStack.push(out);
-  out = '';
-  var $$outStack = $$outStack || [];
-  $$outStack.push(out);
-  out = ''; /* istanbul ignore else */
-  if (it.createErrors !== false) {
-    out += ' { keyword: \'' + ($errorKeyword || 'custom') + '\' , dataPath: (dataPath || \'\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { keyword: \'' + ($rule.keyword) + '\' } ';
-    if (it.opts.messages !== false) {
-      out += ' , message: \'should pass "' + ($rule.keyword) + '" keyword validation\' ';
-    }
-    if (it.opts.verbose) {
-      out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';
-    }
-    out += ' } ';
-  } else {
-    out += ' {} ';
-  }
-  var __err = out;
-  out = $$outStack.pop();
-  if (!it.compositeRule && $breakOnError) { /* istanbul ignore if */
-    if (it.async) {
-      out += ' throw new ValidationError([' + (__err) + ']); ';
-    } else {
-      out += ' validate.errors = [' + (__err) + ']; return false; ';
-    }
-  } else {
-    out += ' var err = ' + (__err) + ';  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';
-  }
-  var def_customError = out;
-  out = $$outStack.pop();
-  if ($inline) {
-    if ($rDef.errors) {
-      if ($rDef.errors != 'full') {
-        out += '  for (var ' + ($i) + '=' + ($errs) + '; ' + ($i) + '=1&&t<=12&&a>=1&&a<=m[t]}function o(e,r){var t=e.match(v);if(!t)return!1;var a=t[1],s=t[2],o=t[3],i=t[5];return a<=23&&s<=59&&o<=59&&(!r||i)}function i(e){var r=e.split(w);return 2==r.length&&s(r[0])&&o(r[1],!0)}function n(e){return e.length<=255&&y.test(e)}function l(e){return j.test(e)&&g.test(e)}function c(e){try{return new RegExp(e),!0}catch(e){return!1}}function h(e,r){if(e&&r)return e>r?1:er?1:e=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}function i(e,r,t){var a=n.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}function n(e,r,t){for(var a=0;a=55296&&r<=56319&&s=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,c=s.split("/"),h=0;h",S="result"+s,$=e.opts.v5&&i&&i.$data;if($?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ",g="schema"+s):g=i,w){var x=e.util.getData(b.$data,o,e.dataPathArr),_="exclusive"+s,O="op"+s,R="' + "+O+" + '";a+=" var schemaExcl"+s+" = "+x+"; ",x="schemaExcl"+s,a+=" if (typeof "+x+" != 'boolean' && "+x+" !== undefined) { "+u+" = false; ";var t=E,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatExclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: '"+E+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var A=a;a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+A+"]); ":" validate.errors = ["+A+"]; return false; ":" var err = "+A+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }  ",c&&(p+="}",a+=" else { "),$&&(a+=" if ("+g+" === undefined) "+u+" = true; else if (typeof "+g+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+S+" = "+y+"("+h+",  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" ); if ("+S+" === undefined) "+u+" = false; var "+_+" = "+x+" === true; if ("+u+" === undefined) { "+u+" = "+_+" ? "+S+" "+j+" 0 : "+S+" "+j+"= 0; } if (!"+u+") var op"+s+" = "+_+" ? '"+j+"' : '"+j+"=';"}else{var _=b===!0,R=j;_||(R+="=");var O="'"+R+"'";$&&(a+=" if ("+g+" === undefined) "+u+" = true; else if (typeof "+g+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+S+" = "+y+"("+h+",  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" ); if ("+S+" === undefined) "+u+" = false; if ("+u+" === undefined) "+u+" = "+S+" "+j,_||(a+="="),a+=" 0;"}a+=""+p+"if (!"+u+") { ";var t=r,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+O+", limit:  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" , exclusive: "+_+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+R+' "',a+=$?"' + "+g+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema:  ",a+=$?"validate.schema"+n:""+e.util.toQuotedString(i),a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var A=a;return a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+A+"]); ":" validate.errors = ["+A+"]; return false; ":" var err = "+A+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="}"}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maximum"==r,p=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.v5&&m&&m.$data,y=d?"<":">",g=d?">":"<";if(v){var P=e.util.getData(m.$data,i,e.dataPathArr),E="exclusive"+o,b="op"+o,w="' + "+b+" + '";s+=" var schemaExcl"+o+" = "+P+"; ",P="schemaExcl"+o,s+=" var exclusive"+o+"; if (typeof "+P+" != 'boolean' && typeof "+P+" != 'undefined') { ";var t=p,j=j||[];j.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var S=s;s=j.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ((exclusive"+o+" = "+P+" === true) ? "+u+" "+g+"= "+a+" : "+u+" "+g+" "+a+") || "+u+" !== "+u+") { var op"+o+" = exclusive"+o+" ? '"+y+"' : '"+y+"=';"}else{var E=m===!0,w=y;E||(w+="=");var b="'"+w+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+u+" "+g,E&&(s+="="),s+=" "+a+" || "+u+" !== "+u+") {"}var t=r,j=j||[];j.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+b+", limit: "+a+", exclusive: "+E+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be "+w+" ",s+=f?"' + "+a:""+n+"'"),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var S=s;return s=j.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",h&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxItems"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+u+".length "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxLength"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=e.opts.unicode===!1?" "+u+".length ":" ucs2length("+u+") ",s+=" "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema:  ",
-s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxProperties"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+u+").length "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,h=n.baseId,u=!0,f=a;if(f)for(var d,p=-1,m=f.length-1;p "+x+") { ";var O=h+"["+x+"]";d.schema=$,d.schemaPath=n+"["+x+"]",d.errSchemaPath=l+"/"+x,d.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),d.dataPathArr[y]=x;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",a+=" }  ",c&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){d.schema=E,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+h+".length > "+i.length+") {  for (var "+v+" = "+i.length+"; "+v+" < "+h+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var O=h+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",c&&(a+=" if (!"+m+") break; "),a+=" } }  ",c&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+="  for (var "+v+" = 0; "+v+" < "+h+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var O=h+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",c&&(a+=" if (!"+m+") break; "),a+=" }  ",c&&(a+=" if ("+m+") { ",p+="}")}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",f&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+u+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",f&&(s+="  )  "),s+=" ) {   ";var d=d||[];d.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be multiple of ",s+=f?"' + "+a:""+n+"'"),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var p=s;return s=d.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="errs__"+s,f=e.util.copy(e);f.level++;var d="valid"+f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+u+" = errors;  ";var p=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var m;f.opts.allErrors&&(m=f.opts.allErrors,f.opts.allErrors=!1),a+=" "+e.validate(f)+" ",f.createErrors=!0,m&&(f.opts.allErrors=m),e.compositeRule=f.compositeRule=p,a+=" if ("+d+") {   ";var v=v||[];v.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else {  errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+="  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(a+=" if (false) { ");return a}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m="valid"+d.level;a+="var "+f+" = errors;var prevValid"+s+" = false;var "+u+" = false;";var v=d.baseId,y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E5)a+=" || validate.schema"+n+"["+v+"] ";else{var D=P;if(D)for(var L,Q=-1,C=D.length-1;Q= "+me+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+="  if (!"+u+") {   ";var K=K||[];K.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var B=a;a=K.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ve&&(a+=" else ")}if(void 0!==ve){var ye=ve,ge="maximum",Pe="more";a+=" "+u+" = pgPropCount"+s+" <= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+="  if (!"+u+") {   ";var K=K||[];K.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var B=a;a=K.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=G,c&&(a+=" if ("+u+") { ",p+="}")}}}}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(n||""),f="valid"+i;if("#"==l||"#/"==l)e.isRoot?(a=e.async,s="validate"):(a=e.root.schema.$async===!0,s="root.refVal[0]");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p="can't resolve reference "+l+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(p);var m=m||[];m.push(o),o="",e.createErrors!==!1?(o+=" { keyword: '"+(t||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",e.opts.messages!==!1&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),o+=" } "):o+=" {} ";var v=o;o=m.pop(),o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var y=new Error(p);throw y.missingRef=e.resolve.url(e.baseId,l),y.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(y.missingRef)),y}console.log(p),h&&(o+=" if (true) { ")}}else if(d.inline){var g=e.util.copy(e);g.level++;var P="valid"+g.level;g.schema=d.schema,g.schemaPath="",g.errSchemaPath=l;var E=e.validate(g).replace(/validate\.schema/g,d.code);o+=" "+E+" ",h&&(o+=" if ("+P+") { ")}else a=d.$async===!0,s=d.code}if(s){var m=m||[];m.push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+u+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath),o+=n?" , data"+(n-1||"")+" , "+e.dataPathArr[n]+" ":" , parentData , parentDataProperty ",o+=", rootData)  ";var b=o;if(o=m.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");o+=" try { ",h&&(o+="var "+f+" ="),o+=" "+e.yieldAwait+" "+b+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",h&&(o+=" if ("+f+") { ")}else o+=" if (!"+b+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",h&&(o+=" else { ")}return o}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f="valid"+o,d=e.opts.v5&&n&&n.$data;d?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var p="schema"+o;if(!d)if(n.length=e.opts.loopRequired;if(h)if(s+=" var missing"+o+"; ",w){d||(s+=" var "+p+" = validate.schema"+l+"; ");var j="i"+o,S="schema"+o+"["+j+"]",$="' + "+S+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(b,S,e.opts.jsonPointers)),s+=" var "+f+" = true; ",d&&(s+=" if (schema"+o+" === undefined) "+f+" = true; else if (!Array.isArray(schema"+o+")) "+f+" = false; else {"),s+=" for (var "+j+" = 0; "+j+" < "+p+".length; "+j+"++) { "+f+" = "+u+"["+p+"["+j+"]] !== undefined; if (!"+f+") break; } ",d&&(s+="  }  "),s+="  if (!"+f+") {   ";var x=x||[];x.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { missingProperty: '"+$+"' } ",e.opts.messages!==!1&&(s+=" , message: '",s+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+$+"\\'",s+="' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var _=s;s=x.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+_+"]); ":" validate.errors = ["+_+"]; return false; ":" var err = "+_+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else { "}else{s+=" if ( ";var O=m;if(O)for(var R,j=-1,I=O.length-1;j 1) { var i = "+u+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+f+" = false; break outer; } } } } ",d&&(s+="  }  "),s+=" if (!"+f+") {   ";var p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema:  ",s+=d?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",h&&(s+=" else { ")}else h&&(s+=" if (true) { ");return s}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r){function t(e){for(var r=0;r1&&(a=t[0]+"@",e=t[1]),e=e.replace(q,".");var s=e.split("."),o=i(s,r).join(".");return a+o}function l(e){for(var r,t,a=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(e-=65536,r+=C(e>>>10&1023|55296),e=56320|1023&e),r+=C(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:j}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function f(e,r,t){var a=0;for(e=t?Q(e/_):e>>1,e+=Q(e/r);e>L*$>>1;a+=j)e=Q(e/L);return Q(a+(L+1)*e/(e+x))}function d(e){var r,t,a,s,i,n,l,u,d,p,m=[],v=e.length,y=0,g=R,P=O;for(t=e.lastIndexOf(I),t<0&&(t=0),a=0;a=128&&o("not-basic"),m.push(e.charCodeAt(a));for(s=t>0?t+1:0;s=v&&o("invalid-input"),u=h(e.charCodeAt(s++)),(u>=j||u>Q((w-y)/n))&&o("overflow"),y+=u*n,d=l<=P?S:l>=P+$?$:l-P,!(uQ(w/p)&&o("overflow"),n*=p;r=m.length+1,P=f(y-i,r,0==i),Q(y/r)>w-g&&o("overflow"),g+=Q(y/r),y%=r,m.splice(y++,0,g)}return c(m)}function p(e){var r,t,a,s,i,n,c,h,d,p,m,v,y,g,P,E=[];for(e=l(e),v=e.length,r=R,t=0,i=O,n=0;n=r&&mQ((w-t)/y)&&o("overflow"),t+=(c-r)*y,r=c,n=0;nw&&o("overflow"),m==r){for(h=t,d=j;p=d<=i?S:d>=i+$?$:d-i,!(h= 0x80 (not a basic code point)","invalid-input":"Invalid input"},L=j-S,Q=Math.floor,C=String.fromCharCode;if(E={version:"1.4.1",ucs2:{decode:l,encode:c},decode:d,encode:p,toASCII:v,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return E});else if(y&&g)if(t.exports==y)g.exports=E;else for(b in E)E.hasOwnProperty(b)&&(y[b]=E[b]);else s.punycode=E}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],42:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var h=0;h=0?(u=m.substr(0,v),f=m.substr(v+1)):(u=m,f=""),d=decodeURIComponent(u),p=decodeURIComponent(f),a(i,d)?s(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],43:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(d),m=["'"].concat(p),v=["%","/","?",";","#"].concat(m),y=["/","?","#"],g=255,P=/^[+a-z0-9A-Z_-]{0,63}$/,E=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,b={javascript:!0,"javascript:":!0},w={javascript:!0,"javascript:":!0},j={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},S=e("querystring");a.prototype.parse=function(e,r,t){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=a!==-1&&a127?"x":D[Q];if(!L.match(P)){var V=k.slice(0,_),z=k.slice(_+1),U=D.match(E);U&&(V.push(U[1]),z.unshift(U[2])),z.length&&(n="/"+z.join(".")+n),this.hostname=V.join(".");break}}}this.hostname=this.hostname.length>g?"":this.hostname.toLowerCase(),A||(this.hostname=l.toASCII(this.hostname));var T=this.port?":"+this.port:"",M=this.hostname||"";this.host=M+T,this.href+=this.host,A&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==n[0]&&(n="/"+n))}if(!b[p])for(var _=0,q=m.length;_0)&&t.host.split("@");$&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return t.search=e.search,t.query=e.query,c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!b.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var x=b.slice(-1)[0],_=(t.host||e.host||b.length>1)&&("."===x||".."===x)||""===x,O=0,R=b.length;R>=0;R--)x=b[R],"."===x?b.splice(R,1):".."===x?(b.splice(R,1),O++):O&&(b.splice(R,1),O--);if(!P&&!E)for(;O--;O)b.unshift("..");!P||""===b[0]||b[0]&&"/"===b[0].charAt(0)||b.unshift(""),_&&"/"!==b.join("/").substr(-1)&&b.push("");var I=""===b[0]||b[0]&&"/"===b[0].charAt(0);if(S){t.hostname=t.host=I?"":b.length?b.shift():"";var $=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@");$&&(t.auth=$.shift(),t.host=t.hostname=$.shift())}return P=P||t.host&&b.length,P&&!I&&b.unshift(""),b.length?t.pathname=b.join("/"):(t.pathname=null,t.path=null),c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=u.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":46,punycode:41,querystring:44}],46:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],47:[function(e,r,t){function a(e){var r=this,t=f.call(arguments,1);return new Promise(function(a,o){function i(r){var t;try{t=e.next(r)}catch(e){return o(e)}c(t)}function n(r){var t;try{t=e.throw(r)}catch(e){return o(e)}c(t)}function c(e){if(e.done)return a(e.value);var t=s.call(r,e.value);return t&&l(t)?t.then(i,n):n(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: "'+String(e.value)+'"'))}return"function"==typeof e&&(e=e.apply(r,t)),e&&"function"==typeof e.next?void i():a(e)})}function s(e){return e?l(e)?e:h(e)||c(e)?a.call(this,e):"function"==typeof e?o.call(this,e):Array.isArray(e)?i.call(this,e):u(e)?n.call(this,e):e:e}function o(e){var r=this;return new Promise(function(t,a){e.call(r,function(e,r){return e?a(e):(arguments.length>2&&(r=f.call(arguments,1)),void t(r))})})}function i(e){return Promise.all(e.map(s,this))}function n(e){function r(e,r){t[r]=void 0,o.push(e.then(function(e){t[r]=e}))}for(var t=new e.constructor,a=Object.keys(e),o=[],i=0;i="0"&&s<="9";)r+=s,c();if("."===s)for(r+=".";c()&&s>="0"&&s<="9";)r+=s;if("e"===s||"E"===s)for(r+=s,c(),"-"!==s&&"+"!==s||(r+=s,c());s>="0"&&s<="9";)r+=s,c();return e=+r,isFinite(e)?e:void l("Bad number")},u=function(){var e,r,t,a="";if('"'===s)for(;c();){if('"'===s)return c(),a;if("\\"===s)if(c(),"u"===s){for(t=0,r=0;r<4&&(e=parseInt(c(),16),isFinite(e));r+=1)t=16*t+e;a+=String.fromCharCode(t)}else{if("string"!=typeof n[s])break;a+=n[s]}else a+=s}l("Bad string")},f=function(){for(;s&&s<=" ";)c()},d=function(){switch(s){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+s+"'")},p=function(){var e=[];if("["===s){if(c("["),f(),"]"===s)return c("]"),e;for(;s;){if(e.push(i()),f(),"]"===s)return c("]"),e;c(","),f()}}l("Bad array")},m=function(){var e,r={};if("{"===s){if(c("{"),f(),"}"===s)return c("}"),r;for(;s;){if(e=u(),f(),c(":"),Object.hasOwnProperty.call(r,e)&&l('Duplicate key "'+e+'"'),r[e]=i(),f(),"}"===s)return c("}"),r;c(","),f()}}l("Bad object")};i=function(){switch(f(),s){case"{":return m();case"[":return p();case'"':return u();case"-":return h();default:return s>="0"&&s<="9"?h():d()}},r.exports=function(e,r){var t;return o=e,a=0,s=" ",t=i(),f(),s&&l("Syntax error"),"function"==typeof r?function e(t,a){var s,o,i=t[a];if(i&&"object"==typeof i)for(s in i)Object.prototype.hasOwnProperty.call(i,s)&&(o=e(i,s),void 0!==o?i[s]=o:delete i[s]);return r.call(t,a,i)}({"":t},""):t}},{}],51:[function(e,r,t){function a(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var r=c[e];return"string"==typeof r?r:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function s(e,r){var t,l,c,h,u,f=o,d=r[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof n&&(d=n.call(r,e,d)),typeof d){case"string":return a(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(o+=i,u=[],"[object Array]"===Object.prototype.toString.apply(d)){for(h=d.length,t=0;t=1&&t<=12&&a>=1&&a<=m[t]}function o(e,r){var t=e.match(v);if(!t)return!1;var a=t[1],s=t[2],o=t[3],i=t[5];return a<=23&&s<=59&&o<=59&&(!r||i)}function i(e){var r=e.split(w);return 2==r.length&&s(r[0])&&o(r[1],!0)}function n(e){return e.length<=255&&y.test(e)}function l(e){return j.test(e)&&g.test(e)}function c(e){try{return new RegExp(e),!0}catch(e){return!1}}function h(e,r){if(e&&r)return e>r?1:er?1:e=0?{index:a,compiling:!0}:(a=this._compilations.length,this._compilations[a]={schema:e,root:r,baseId:t},{index:a,compiling:!1})}function i(e,r,t){var a=n.call(this,e,r,t);a>=0&&this._compilations.splice(a,1)}function n(e,r,t){for(var a=0;a=55296&&r<=56319&&s=r)throw new Error("Cannot access property/index "+a+" levels up, current level is "+r);return t[r-a]}if(a>r)throw new Error("Cannot access data "+a+" levels up, current level is "+r);if(o="data"+(r-a||""),!s)return o}for(var n=o,c=s.split("/"),h=0;h",S="result"+s,$=e.opts.v5&&i&&i.$data;if($?(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ",g="schema"+s):g=i,w){var x=e.util.getData(b.$data,o,e.dataPathArr),_="exclusive"+s,O="op"+s,R="' + "+O+" + '";a+=" var schemaExcl"+s+" = "+x+"; ",x="schemaExcl"+s,a+=" if (typeof "+x+" != 'boolean' && "+x+" !== undefined) { "+u+" = false; ";var t=E,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatExclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: '"+E+" should be boolean' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var A=a;a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+A+"]); ":" validate.errors = ["+A+"]; return false; ":" var err = "+A+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" }  ",c&&(p+="}",a+=" else { "),$&&(a+=" if ("+g+" === undefined) "+u+" = true; else if (typeof "+g+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+S+" = "+y+"("+h+",  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" ); if ("+S+" === undefined) "+u+" = false; var "+_+" = "+x+" === true; if ("+u+" === undefined) { "+u+" = "+_+" ? "+S+" "+j+" 0 : "+S+" "+j+"= 0; } if (!"+u+") var op"+s+" = "+_+" ? '"+j+"' : '"+j+"=';"}else{var _=b===!0,R=j;_||(R+="=");var O="'"+R+"'";$&&(a+=" if ("+g+" === undefined) "+u+" = true; else if (typeof "+g+" != 'string') "+u+" = false; else { ",p+="}"),d&&(a+=" if (!"+y+") "+u+" = true; else { ",p+="}"),a+=" var "+S+" = "+y+"("+h+",  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" ); if ("+S+" === undefined) "+u+" = false; if ("+u+" === undefined) "+u+" = "+S+" "+j,_||(a+="="),a+=" 0;"}a+=""+p+"if (!"+u+") { ";var t=r,I=I||[];I.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"_formatLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { comparison: "+O+", limit:  ",a+=$?""+g:""+e.util.toQuotedString(i),a+=" , exclusive: "+_+" } ",e.opts.messages!==!1&&(a+=" , message: 'should be "+R+' "',a+=$?"' + "+g+" + '":""+e.util.escapeQuotes(i),a+="\"' "),e.opts.verbose&&(a+=" , schema:  ",a+=$?"validate.schema"+n:""+e.util.toQuotedString(i),a+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var A=a;return a=I.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+A+"]); ":" validate.errors = ["+A+"]; return false; ":" var err = "+A+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+="}"}},{}],14:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maximum"==r,p=d?"exclusiveMaximum":"exclusiveMinimum",m=e.schema[p],v=e.opts.v5&&m&&m.$data,y=d?"<":">",g=d?">":"<";if(v){var P=e.util.getData(m.$data,i,e.dataPathArr),E="exclusive"+o,b="op"+o,w="' + "+b+" + '";s+=" var schemaExcl"+o+" = "+P+"; ",P="schemaExcl"+o,s+=" var exclusive"+o+"; if (typeof "+P+" != 'boolean' && typeof "+P+" != 'undefined') { ";var t=p,j=j||[];j.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_exclusiveLimit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: {} ",e.opts.messages!==!1&&(s+=" , message: '"+p+" should be boolean' "),e.opts.verbose&&(s+=" , schema: validate.schema"+l+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var S=s;s=j.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } else if( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" ((exclusive"+o+" = "+P+" === true) ? "+u+" "+g+"= "+a+" : "+u+" "+g+" "+a+") || "+u+" !== "+u+") { var op"+o+" = exclusive"+o+" ? '"+y+"' : '"+y+"=';"}else{var E=m===!0,w=y;E||(w+="=");var b="'"+w+"'";s+=" if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+u+" "+g,E&&(s+="="),s+=" "+a+" || "+u+" !== "+u+") {"}var t=r,j=j||[];j.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limit")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { comparison: "+b+", limit: "+a+", exclusive: "+E+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be "+w+" ",s+=f?"' + "+a:""+n+"'"),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var S=s;return s=j.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+S+"]); ":" validate.errors = ["+S+"]; return false; ":" var err = "+S+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",h&&(s+=" else { "),s}},{}],15:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxItems"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" "+u+".length "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",s+="maxItems"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" items' "),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],16:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxLength"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=e.opts.unicode===!1?" "+u+".length ":" ucs2length("+u+") ",s+=" "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitLength")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT be ",s+="maxLength"==r?"longer":"shorter",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" characters' "),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,
+s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],17:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n;var d="maxProperties"==r?">":"<";s+="if ( ",f&&(s+=" ("+a+" !== undefined && typeof "+a+" != 'number') || "),s+=" Object.keys("+u+").length "+d+" "+a+") { ";var t=r,p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"_limitProperties")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { limit: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have ",s+="maxProperties"==r?"more":"less",s+=" than ",s+=f?"' + "+a+" + '":""+n,s+=" properties' "),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;return s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],18:[function(e,r,t){"use strict";r.exports=function(e,r){var t=" ",a=e.schema[r],s=e.schemaPath+e.util.getProperty(r),o=e.errSchemaPath+"/"+r,i=!e.opts.allErrors,n=e.util.copy(e),l="";n.level++;var c="valid"+n.level,h=n.baseId,u=!0,f=a;if(f)for(var d,p=-1,m=f.length-1;p "+x+") { ";var O=h+"["+x+"]";d.schema=$,d.schemaPath=n+"["+x+"]",d.errSchemaPath=l+"/"+x,d.errorPath=e.util.getPathExpr(e.errorPath,x,e.opts.jsonPointers,!0),d.dataPathArr[y]=x;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",a+=" }  ",c&&(a+=" if ("+m+") { ",p+="}")}if("object"==typeof E&&e.util.schemaHasRules(E,e.RULES.all)){d.schema=E,d.schemaPath=e.schemaPath+".additionalItems",d.errSchemaPath=e.errSchemaPath+"/additionalItems",a+=" "+m+" = true; if ("+h+".length > "+i.length+") {  for (var "+v+" = "+i.length+"; "+v+" < "+h+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var O=h+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",c&&(a+=" if (!"+m+") break; "),a+=" } }  ",c&&(a+=" if ("+m+") { ",p+="}")}}else if(e.util.schemaHasRules(i,e.RULES.all)){d.schema=i,d.schemaPath=n,d.errSchemaPath=l,a+="  for (var "+v+" = 0; "+v+" < "+h+".length; "+v+"++) { ",d.errorPath=e.util.getPathExpr(e.errorPath,v,e.opts.jsonPointers,!0);var O=h+"["+v+"]";d.dataPathArr[y]=v;var R=e.validate(d);d.baseId=P,a+=e.util.varOccurences(R,g)<2?" "+e.util.varReplace(R,g,O)+" ":" var "+g+" = "+O+"; "+R+" ",c&&(a+=" if (!"+m+") break; "),a+=" }  ",c&&(a+=" if ("+m+") { ",p+="}")}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],26:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s=" ",o=e.level,i=e.dataLevel,n=e.schema[r],l=e.schemaPath+e.util.getProperty(r),c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(i||""),f=e.opts.v5&&n&&n.$data;f?(s+=" var schema"+o+" = "+e.util.getData(n.$data,i,e.dataPathArr)+"; ",a="schema"+o):a=n,s+="var division"+o+";if (",f&&(s+=" "+a+" !== undefined && ( typeof "+a+" != 'number' || "),s+=" (division"+o+" = "+u+" / "+a+", ",s+=e.opts.multipleOfPrecision?" Math.abs(Math.round(division"+o+") - division"+o+") > 1e-"+e.opts.multipleOfPrecision+" ":" division"+o+" !== parseInt(division"+o+") ",s+=" ) ",f&&(s+="  )  "),s+=" ) {   ";var d=d||[];d.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"multipleOf")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { multipleOf: "+a+" } ",e.opts.messages!==!1&&(s+=" , message: 'should be multiple of ",s+=f?"' + "+a:""+n+"'"),e.opts.verbose&&(s+=" , schema:  ",s+=f?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var p=s;return s=d.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+p+"]); ":" validate.errors = ["+p+"]; return false; ":" var err = "+p+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+="} ",h&&(s+=" else { "),s}},{}],27:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="errs__"+s,f=e.util.copy(e);f.level++;var d="valid"+f.level;if(e.util.schemaHasRules(i,e.RULES.all)){f.schema=i,f.schemaPath=n,f.errSchemaPath=l,a+=" var "+u+" = errors;  ";var p=e.compositeRule;e.compositeRule=f.compositeRule=!0,f.createErrors=!1;var m;f.opts.allErrors&&(m=f.opts.allErrors,f.opts.allErrors=!1),a+=" "+e.validate(f)+" ",f.createErrors=!0,m&&(f.opts.allErrors=m),e.compositeRule=f.compositeRule=p,a+=" if ("+d+") {   ";var v=v||[];v.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var y=a;a=v.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+y+"]); ":" validate.errors = ["+y+"]; return false; ":" var err = "+y+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else {  errors = "+u+"; if (vErrors !== null) { if ("+u+") vErrors.length = "+u+"; else vErrors = null; } ",e.opts.allErrors&&(a+=" } ")}else a+="  var err =   ",e.createErrors!==!1?(a+=" { keyword: '"+(t||"not")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: {} ",e.opts.messages!==!1&&(a+=" , message: 'should NOT be valid' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ",a+=";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",c&&(a+=" if (false) { ");return a}},{}],28:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f="errs__"+s,d=e.util.copy(e),p="";d.level++;var m="valid"+d.level;a+="var "+f+" = errors;var prevValid"+s+" = false;var "+u+" = false;";var v=d.baseId,y=e.compositeRule;e.compositeRule=d.compositeRule=!0;var g=i;if(g)for(var P,E=-1,b=g.length-1;E5)a+=" || validate.schema"+n+"["+v+"] ";else{var D=P;if(D)for(var L,Q=-1,C=D.length-1;Q= "+me+"; ",l=e.errSchemaPath+"/patternGroups/minimum",a+="  if (!"+u+") {   ";var K=K||[];K.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var B=a;a=K.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } ",void 0!==ve&&(a+=" else ")}if(void 0!==ve){var ye=ve,ge="maximum",Pe="more";a+=" "+u+" = pgPropCount"+s+" <= "+ve+"; ",l=e.errSchemaPath+"/patternGroups/maximum",a+="  if (!"+u+") {   ";var K=K||[];K.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"patternGroups")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { reason: '"+ge+"', limit: "+ye+", pattern: '"+e.util.escapeQuotes(N)+"' } ",e.opts.messages!==!1&&(a+=" , message: 'should NOT have "+Pe+" than "+ye+' properties matching pattern "'+e.util.escapeQuotes(N)+"\"' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var B=a;a=K.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+B+"]); ":" validate.errors = ["+B+"]; return false; ":" var err = "+B+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } "}l=G,c&&(a+=" if ("+u+") { ",p+="}")}}}}return c&&(a+=" "+p+" if ("+f+" == errors) {"),a=e.util.cleanUpCode(a)}},{}],32:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a,s,o=" ",i=e.level,n=e.dataLevel,l=e.schema[r],c=e.errSchemaPath+"/"+r,h=!e.opts.allErrors,u="data"+(n||""),f="valid"+i;if("#"==l||"#/"==l)e.isRoot?(a=e.async,s="validate"):(a=e.root.schema.$async===!0,s="root.refVal[0]");else{var d=e.resolveRef(e.baseId,l,e.isRoot);if(void 0===d){var p="can't resolve reference "+l+" from id "+e.baseId;if("fail"==e.opts.missingRefs){console.log(p);var m=m||[];m.push(o),o="",e.createErrors!==!1?(o+=" { keyword: '"+(t||"$ref")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { ref: '"+e.util.escapeQuotes(l)+"' } ",e.opts.messages!==!1&&(o+=" , message: 'can\\'t resolve reference "+e.util.escapeQuotes(l)+"' "),e.opts.verbose&&(o+=" , schema: "+e.util.toQuotedString(l)+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),o+=" } "):o+=" {} ";var v=o;o=m.pop(),o+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+v+"]); ":" validate.errors = ["+v+"]; return false; ":" var err = "+v+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",h&&(o+=" if (false) { ")}else{if("ignore"!=e.opts.missingRefs){var y=new Error(p);throw y.missingRef=e.resolve.url(e.baseId,l),y.missingSchema=e.resolve.normalizeId(e.resolve.fullPath(y.missingRef)),y}console.log(p),h&&(o+=" if (true) { ")}}else if(d.inline){var g=e.util.copy(e);g.level++;var P="valid"+g.level;g.schema=d.schema,g.schemaPath="",g.errSchemaPath=l;var E=e.validate(g).replace(/validate\.schema/g,d.code);o+=" "+E+" ",h&&(o+=" if ("+P+") { ")}else a=d.$async===!0,s=d.code}if(s){var m=m||[];m.push(o),o="",o+=e.opts.passContext?" "+s+".call(this, ":" "+s+"( ",o+=" "+u+", (dataPath || '')",'""'!=e.errorPath&&(o+=" + "+e.errorPath);o+=" , "+(n?"data"+(n-1||""):"parentData")+" , "+(n?e.dataPathArr[n]:"parentDataProperty")+", rootData)  ";var b=o;if(o=m.pop(),a){if(!e.async)throw new Error("async schema referenced by sync schema");o+=" try { ",h&&(o+="var "+f+" ="),o+=" "+e.yieldAwait+" "+b+"; } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; } ",h&&(o+=" if ("+f+") { ")}else o+=" if (!"+b+") { if (vErrors === null) vErrors = "+s+".errors; else vErrors = vErrors.concat("+s+".errors); errors = vErrors.length; } ",h&&(o+=" else { ")}return o}},{}],33:[function(e,r,t){"use strict";r.exports=function(e,r){var t,a=" ",s=e.level,o=e.dataLevel,i=e.schema[r],n=e.schemaPath+e.util.getProperty(r),l=e.errSchemaPath+"/"+r,c=!e.opts.allErrors,h="data"+(o||""),u="valid"+s,f=e.opts.v5&&i&&i.$data;f&&(a+=" var schema"+s+" = "+e.util.getData(i.$data,o,e.dataPathArr)+"; ");var d="schema"+s;if(!f)if(i.length=e.opts.loopRequired;if(c)if(a+=" var missing"+s+"; ",b){f||(a+=" var "+d+" = validate.schema"+n+"; ");var w="i"+s,j="schema"+s+"["+w+"]",S="' + "+j+" + '";e.opts._errorDataPathProperty&&(e.errorPath=e.util.getPathExpr(E,j,e.opts.jsonPointers)),a+=" var "+u+" = true; ",f&&(a+=" if (schema"+s+" === undefined) "+u+" = true; else if (!Array.isArray(schema"+s+")) "+u+" = false; else {"),a+=" for (var "+w+" = 0; "+w+" < "+d+".length; "+w+"++) { "+u+" = "+h+"["+d+"["+w+"]] !== undefined; if (!"+u+") break; } ",f&&(a+="  }  "),a+="  if (!"+u+") {   ";var $=$||[];$.push(a),a="",e.createErrors!==!1?(a+=" { keyword: '"+(t||"required")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(l)+" , params: { missingProperty: '"+S+"' } ",e.opts.messages!==!1&&(a+=" , message: '",a+=e.opts._errorDataPathProperty?"is a required property":"should have required property \\'"+S+"\\'",a+="' "),e.opts.verbose&&(a+=" , schema: validate.schema"+n+" , parentSchema: validate.schema"+e.schemaPath+" , data: "+h+" "),a+=" } "):a+=" {} ";var x=a;a=$.pop(),a+=!e.compositeRule&&c?e.async?" throw new ValidationError(["+x+"]); ":" validate.errors = ["+x+"]; return false; ":" var err = "+x+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",a+=" } else { "}else{a+=" if ( ";var _=p;if(_)for(var O,w=-1,R=_.length-1;w 1) { var i = "+u+".length, j; outer: for (;i--;) { for (j = i; j--;) { if (equal("+u+"[i], "+u+"[j])) { "+f+" = false; break outer; } } } } ",d&&(s+="  }  "),s+=" if (!"+f+") {   ";var p=p||[];p.push(s),s="",e.createErrors!==!1?(s+=" { keyword: '"+(t||"uniqueItems")+"' , dataPath: (dataPath || '') + "+e.errorPath+" , schemaPath: "+e.util.toQuotedString(c)+" , params: { i: i, j: j } ",e.opts.messages!==!1&&(s+=" , message: 'should NOT have duplicate items (items ## ' + j + ' and ' + i + ' are identical)' "),e.opts.verbose&&(s+=" , schema:  ",s+=d?"validate.schema"+l:""+n,s+="         , parentSchema: validate.schema"+e.schemaPath+" , data: "+u+" "),s+=" } "):s+=" {} ";var m=s;s=p.pop(),s+=!e.compositeRule&&h?e.async?" throw new ValidationError(["+m+"]); ":" validate.errors = ["+m+"]; return false; ":" var err = "+m+";  if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ",s+=" } ",h&&(s+=" else { ")}else h&&(s+=" if (true) { ");return s}},{}],36:[function(e,r,t){"use strict";r.exports=function(e,r){function t(e){for(var r=0;r1&&(a=t[0]+"@",e=t[1]),e=e.replace(q,"."),a+i(e.split("."),r).join(".")}function l(e){for(var r,t,a=[],s=0,o=e.length;s=55296&&r<=56319&&s65535&&(e-=65536,r+=C(e>>>10&1023|55296),e=56320|1023&e),r+=C(e)}).join("")}function h(e){return e-48<10?e-22:e-65<26?e-65:e-97<26?e-97:j}function u(e,r){return e+22+75*(e<26)-((0!=r)<<5)}function f(e,r,t){var a=0;for(e=t?Q(e/_):e>>1,e+=Q(e/r);e>L*$>>1;a+=j)e=Q(e/L);return Q(a+(L+1)*e/(e+x))}function d(e){var r,t,a,s,i,n,l,u,d,p,m=[],v=e.length,y=0,g=R,P=O;for(t=e.lastIndexOf(I),t<0&&(t=0),a=0;a=128&&o("not-basic"),m.push(e.charCodeAt(a));for(s=t>0?t+1:0;s=v&&o("invalid-input"),u=h(e.charCodeAt(s++)),(u>=j||u>Q((w-y)/n))&&o("overflow"),y+=u*n,d=l<=P?S:l>=P+$?$:l-P,!(uQ(w/p)&&o("overflow"),n*=p;r=m.length+1,P=f(y-i,r,0==i),Q(y/r)>w-g&&o("overflow"),g+=Q(y/r),y%=r,m.splice(y++,0,g)}return c(m)}function p(e){var r,t,a,s,i,n,c,h,d,p,m,v,y,g,P,E=[];for(e=l(e),v=e.length,r=R,t=0,i=O,n=0;n=r&&mQ((w-t)/y)&&o("overflow"),t+=(c-r)*y,r=c,n=0;nw&&o("overflow"),m==r){for(h=t,d=j;p=d<=i?S:d>=i+$?$:d-i,!(h= 0x80 (not a basic code point)","invalid-input":"Invalid input"},L=j-S,Q=Math.floor,C=String.fromCharCode;if(E={version:"1.4.1",ucs2:{decode:l,encode:c},decode:d,encode:p,toASCII:v,toUnicode:m},"function"==typeof e&&"object"==typeof e.amd&&e.amd)e("punycode",function(){return E});else if(y&&g)if(t.exports==y)g.exports=E;else for(b in E)E.hasOwnProperty(b)&&(y[b]=E[b]);else s.punycode=E}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],42:[function(e,r,t){"use strict";function a(e,r){return Object.prototype.hasOwnProperty.call(e,r)}r.exports=function(e,r,t,o){r=r||"&",t=t||"=";var i={};if("string"!=typeof e||0===e.length)return i;var n=/\+/g;e=e.split(r);var l=1e3;o&&"number"==typeof o.maxKeys&&(l=o.maxKeys);var c=e.length;l>0&&c>l&&(c=l);for(var h=0;h=0?(u=m.substr(0,v),f=m.substr(v+1)):(u=m,f=""),d=decodeURIComponent(u),p=decodeURIComponent(f),a(i,d)?s(i[d])?i[d].push(p):i[d]=[i[d],p]:i[d]=p}return i};var s=Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)}},{}],43:[function(e,r,t){"use strict";function a(e,r){if(e.map)return e.map(r);for(var t=[],a=0;a",'"',"`"," ","\r","\n","\t"],p=["{","}","|","\\","^","`"].concat(d),m=["'"].concat(p),v=["%","/","?",";","#"].concat(m),y=["/","?","#"],g=/^[+a-z0-9A-Z_-]{0,63}$/,P=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,E={javascript:!0,"javascript:":!0},b={javascript:!0,"javascript:":!0},w={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},j=e("querystring");a.prototype.parse=function(e,r,t){if(!c.isString(e))throw new TypeError("Parameter 'url' must be a string, not "+typeof e);var a=e.indexOf("?"),s=a!==-1&&a127?"x":k[D];if(!q.match(g)){var Q=I.slice(0,$),C=I.slice($+1),V=k.match(P);V&&(Q.push(V[1]),C.unshift(V[2])),C.length&&(i="/"+C.join(".")+i),this.hostname=Q.join(".");break}}}this.hostname=this.hostname.length>255?"":this.hostname.toLowerCase(),R||(this.hostname=l.toASCII(this.hostname));var z=this.port?":"+this.port:"";this.host=(this.hostname||"")+z,this.href+=this.host,R&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==i[0]&&(i="/"+i))}if(!E[d])for(var $=0,A=m.length;$0)&&t.host.split("@");j&&(t.auth=j.shift(),t.host=t.hostname=j.shift())}return t.search=e.search,t.query=e.query,c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.href=t.format(),t}if(!P.length)return t.pathname=null,t.path=t.search?"/"+t.search:null,t.href=t.format(),t;for(var S=P.slice(-1)[0],$=(t.host||e.host||P.length>1)&&("."===S||".."===S)||""===S,x=0,_=P.length;_>=0;_--)S=P[_],"."===S?P.splice(_,1):".."===S?(P.splice(_,1),x++):x&&(P.splice(_,1),x--);if(!y&&!g)for(;x--;x)P.unshift("..");!y||""===P[0]||P[0]&&"/"===P[0].charAt(0)||P.unshift(""),$&&"/"!==P.join("/").substr(-1)&&P.push("");var O=""===P[0]||P[0]&&"/"===P[0].charAt(0);if(E){t.hostname=t.host=O?"":P.length?P.shift():"";var j=!!(t.host&&t.host.indexOf("@")>0)&&t.host.split("@");j&&(t.auth=j.shift(),t.host=t.hostname=j.shift())}return y=y||t.host&&P.length,y&&!O&&P.unshift(""),P.length?t.pathname=P.join("/"):(t.pathname=null,t.path=null),c.isNull(t.pathname)&&c.isNull(t.search)||(t.path=(t.pathname?t.pathname:"")+(t.search?t.search:"")),t.auth=e.auth||t.auth,t.slashes=t.slashes||e.slashes,t.href=t.format(),t},a.prototype.parseHost=function(){var e=this.host,r=u.exec(e);r&&(r=r[0],":"!==r&&(this.port=r.substr(1)),e=e.substr(0,e.length-r.length)),e&&(this.hostname=e)}},{"./util":46,punycode:41,querystring:44}],46:[function(e,r,t){"use strict";r.exports={isString:function(e){return"string"==typeof e},isObject:function(e){return"object"==typeof e&&null!==e},isNull:function(e){return null===e},isNullOrUndefined:function(e){return null==e}}},{}],47:[function(e,r,t){function a(e){var r=this,t=f.call(arguments,1);return new Promise(function(a,o){function i(r){var t;try{t=e.next(r)}catch(e){return o(e)}c(t)}function n(r){var t;try{t=e.throw(r)}catch(e){return o(e)}c(t)}function c(e){if(e.done)return a(e.value);var t=s.call(r,e.value);return t&&l(t)?t.then(i,n):n(new TypeError('You may only yield a function, promise, generator, array, or object, but the following object was passed: "'+String(e.value)+'"'))}if("function"==typeof e&&(e=e.apply(r,t)),!e||"function"!=typeof e.next)return a(e);i()})}function s(e){return e?l(e)?e:h(e)||c(e)?a.call(this,e):"function"==typeof e?o.call(this,e):Array.isArray(e)?i.call(this,e):u(e)?n.call(this,e):e:e}function o(e){var r=this;return new Promise(function(t,a){e.call(r,function(e,r){if(e)return a(e);arguments.length>2&&(r=f.call(arguments,1)),t(r)})})}function i(e){return Promise.all(e.map(s,this))}function n(e){function r(e,r){t[r]=void 0,o.push(e.then(function(e){t[r]=e}))}for(var t=new e.constructor,a=Object.keys(e),o=[],i=0;i="0"&&s<="9";)r+=s,c();if("."===s)for(r+=".";c()&&s>="0"&&s<="9";)r+=s;if("e"===s||"E"===s)for(r+=s,c(),"-"!==s&&"+"!==s||(r+=s,c());s>="0"&&s<="9";)r+=s,c();if(e=+r,isFinite(e))return e;l("Bad number")},u=function(){var e,r,t,a="";if('"'===s)for(;c();){if('"'===s)return c(),a;if("\\"===s)if(c(),"u"===s){for(t=0,r=0;r<4&&(e=parseInt(c(),16),isFinite(e));r+=1)t=16*t+e;a+=String.fromCharCode(t)}else{if("string"!=typeof n[s])break;a+=n[s]}else a+=s}l("Bad string")},f=function(){for(;s&&s<=" ";)c()},d=function(){switch(s){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null}l("Unexpected '"+s+"'")},p=function(){var e=[];if("["===s){if(c("["),f(),"]"===s)return c("]"),e;for(;s;){if(e.push(i()),f(),"]"===s)return c("]"),e;c(","),f()}}l("Bad array")},m=function(){var e,r={};if("{"===s){if(c("{"),f(),"}"===s)return c("}"),r;for(;s;){if(e=u(),f(),c(":"),Object.hasOwnProperty.call(r,e)&&l('Duplicate key "'+e+'"'),r[e]=i(),f(),"}"===s)return c("}"),r;c(","),f()}}l("Bad object")};i=function(){switch(f(),s){case"{":return m();case"[":return p();case'"':return u();case"-":return h();default:return s>="0"&&s<="9"?h():d()}},r.exports=function(e,r){var t;return o=e,a=0,s=" ",t=i(),f(),s&&l("Syntax error"),"function"==typeof r?function e(t,a){var s,o,i=t[a];if(i&&"object"==typeof i)for(s in i)Object.prototype.hasOwnProperty.call(i,s)&&(o=e(i,s),void 0!==o?i[s]=o:delete i[s]);return r.call(t,a,i)}({"":t},""):t}},{}],51:[function(e,r,t){function a(e){return l.lastIndex=0,l.test(e)?'"'+e.replace(l,function(e){var r=c[e];return"string"==typeof r?r:"\\u"+("0000"+e.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+e+'"'}function s(e,r){var t,l,c,h,u,f=o,d=r[e];switch(d&&"object"==typeof d&&"function"==typeof d.toJSON&&(d=d.toJSON(e)),"function"==typeof n&&(d=n.call(r,e,d)),typeof d){case"string":return a(d);case"number":return isFinite(d)?String(d):"null";case"boolean":case"null":return String(d);case"object":if(!d)return"null";if(o+=i,u=[],"[object Array]"===Object.prototype.toString.apply(d)){for(h=d.length,t=0;t=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),o.alloc(+e)}function g(e,t){if(o.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return J(e).length;default:if(r)return z(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return F(this,t,n);case"utf8":case"utf-8":return P(this,t,n);case"ascii":return R(this,t,n);case"latin1":case"binary":return O(this,t,n);case"base64":return L(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function b(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function x(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=o.from(t,r)),o.isBuffer(t))return 0===t.length?-1:w(e,t,n,r,i);if("number"==typeof t)return t&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):w(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function w(e,t,n,r,i){function s(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,a=e.length,u=t.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,u/=2,n/=2}var c;if(i){var l=-1;for(c=n;ca&&(n=a-u),c=n;c>=0;c--){for(var p=!0,h=0;hi&&(r=i)):r=i;var s=t.length;if(s%2!==0)throw new TypeError("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;o239?4:s>223?3:s>191?2:1;if(i+a<=n){var u,c,l,p;switch(a){case 1:s<128&&(o=s);break;case 2:u=e[i+1],128===(192&u)&&(p=(31&s)<<6|63&u,p>127&&(o=p));break;case 3:u=e[i+1],c=e[i+2],128===(192&u)&&128===(192&c)&&(p=(15&s)<<12|(63&u)<<6|63&c,p>2047&&(p<55296||p>57343)&&(o=p));break;case 4:u=e[i+1],c=e[i+2],l=e[i+3],128===(192&u)&&128===(192&c)&&128===(192&l)&&(p=(15&s)<<18|(63&u)<<12|(63&c)<<6|63&l,p>65535&&p<1114112&&(o=p))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=a}return T(r)}function T(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr)&&(n=r);for(var i="",s=t;sn)throw new RangeError("Trying to access beyond buffer length")}function B(e,t,n,r,i,s){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function I(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,s=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function j(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,s=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function M(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function D(e,t,n,r,i){return i||M(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,i){return i||M(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(e,t,n,r,52,8),n+8}function U(e){if(e=q(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function q(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function W(e){return e<16?"0"+e.toString(16):e.toString(16)}function z(e,t){t=t||1/0;for(var n,r=e.length,i=null,s=[],o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function Y(e){for(var t=[],n=0;n>8,i=n%256,s.push(i),s.push(r);return s}function J(e){return X.toByteArray(U(e))}function H(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function Q(e){return e!==e}var X=e("base64-js"),Z=e("ieee754"),K=e("isarray");n.Buffer=o,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),n.kMaxLength=i(),o.poolSize=8192,o._augment=function(e){return e.__proto__=o.prototype,e},o.from=function(e,t,n){return a(null,e,t,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(e,t,n){return c(null,e,t,n)},o.allocUnsafe=function(e){return l(null,e)},o.allocUnsafeSlow=function(e){return l(null,e)},o.isBuffer=function(e){return!(null==e||!e._isBuffer)},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);i0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,n,r,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var s=i-r,a=n-t,u=Math.min(s,a),c=this.slice(r,i),l=e.slice(t,n),p=0;pi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return S(this,e,t,n);case"ascii":return k(this,e,t,n);case"latin1":case"binary":return A(this,e,t,n);case"base64":return _(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;o.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t0&&(i*=256);)r+=this[e+--t]*i;return r},o.prototype.readUInt8=function(e,t){return t||$(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return t||$(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return t||$(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return t||$(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return t||$(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||$(e,t,this.length);for(var r=this[e],i=1,s=0;++s=i&&(r-=Math.pow(2,8*t)),r},o.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||$(e,t,this.length);for(var r=t,i=1,s=this[e+--r];r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},o.prototype.readInt8=function(e,t){return t||$(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},o.prototype.readInt16LE=function(e,t){t||$(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(e,t){t||$(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(e,t){return t||$(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return t||$(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return t||$(e,4,this.length),Z.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return t||$(e,4,this.length),Z.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return t||$(e,8,this.length),Z.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return t||$(e,8,this.length),Z.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t|=0,n|=0,!r){var i=Math.pow(2,8*n)-1;B(this,e,t,n,i,0)}var s=1,o=0;for(this[t]=255&e;++o=0&&(o*=256);)this[t+s]=e/o&255;return t+n},o.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,1,255,0),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},o.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},o.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):j(this,e,t,!0),t+4},o.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},o.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);B(this,e,t,n,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+n},o.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);B(this,e,t,n,i-1,-i)}var s=n-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},o.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,1,127,-128),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},o.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},o.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):j(this,e,t,!0),t+4},o.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},o.prototype.writeFloatLE=function(e,t,n){return D(this,e,t,!0,n)},o.prototype.writeFloatBE=function(e,t,n){return D(this,e,t,!1,n)},o.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},o.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},o.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(s<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var s;if("number"==typeof e)for(s=t;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-r(e)}function s(e){var t,n,i,s,o,a,u=e.length;o=r(e),a=new p(3*u/4-o),i=o>0?u-4:u;var c=0;for(t=0,n=0;t>16&255,a[c++]=s>>8&255,a[c++]=255&s;return 2===o?(s=l[e.charCodeAt(t)]<<2|l[e.charCodeAt(t+1)]>>4,a[c++]=255&s):1===o&&(s=l[e.charCodeAt(t)]<<10|l[e.charCodeAt(t+1)]<<4|l[e.charCodeAt(t+2)]>>2,a[c++]=s>>8&255,a[c++]=255&s),a}function o(e){return c[e>>18&63]+c[e>>12&63]+c[e>>6&63]+c[63&e]}function a(e,t,n){for(var r,i=[],s=t;sl?l:u+o));return 1===r?(t=e[n-1],i+=c[t>>2],i+=c[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=c[t>>10],i+=c[t>>4&63],i+=c[t<<2&63],i+="="),s.push(i),s.join("")}n.byteLength=i,n.toByteArray=s,n.fromByteArray=u;for(var c=[],l=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,d=h.length;f>1,l=-7,p=n?i-1:0,h=n?-1:1,f=e[t+p];for(p+=h,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+p],p+=h,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+p],p+=h,l-=8);if(0===s)s=1-c;else{if(s===u)return o?NaN:(f?-1:1)*(1/0);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},n.write=function(e,t,n,r,i,s){var o,a,u,c=8*s-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),t+=o+p>=1?h/u:h*Math.pow(2,1-p),t*u>=2&&(o++,u/=2),o+p>=l?(a=0,o=l):o+p>=1?(a=(t*u-1)*Math.pow(2,i),o+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=d,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=d,o/=256,c-=8);e[n+f-d]|=128*y}},{}],5:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],6:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),s="/"===o(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"),e||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),o=Math.min(i.length,s.length),a=o,u=0;u1)for(var n=1;n]*>)(.*)/i,/(.*)(<\/script>)(.*)/i],o=0,a=!0;t=t.split("\n");for(var u=0;u0){if(!a(e).isAsync)return t(e);delete e.async}return e.type="ReturnStatement",e.$mapped=!0,void(e.argument={type:"CallExpression",callee:_(i,[n]).$error,arguments:[e.argument]})}return a(e).isFunction?(r++,t(e),void r--):void t(e)}if(r>0){if(!a(e).isAsync)return t(e);delete e.async;
-}return e.$mapped=!0,void(a(e.argument).isUnaryExpression&&"void"===e.argument.operator?e.argument=e.argument.argument:e.argument={type:"CallExpression",callee:_(i,[n]).$return,arguments:e.argument?[e.argument]:[]})},t)}function N(e,t){return Array.isArray(e)?e.map(function(e){return N(e,t)}):(m.treeWalker(e,function(e,t,n){if(t(),"ConditionalExpression"===e.type&&(c(e.alternate)||c(e.consequent))){var r=(f(S("condOp")),P(m.part("if ($0) return $1 ; return $2",[e.test,e.consequent,e.alternate]).body));s(e,r)}},t),e)}function $(e,t){return Array.isArray(e)?e.map(function(e){return $(e,t)}):(m.treeWalker(e,function(e,t,n){if(t(),"LogicalExpression"===e.type&&c(e.right)){var r,i=f(S("logical"+("&&"===e.operator?"And":"Or")));if("||"===e.operator)r="var $0; if (!($0 = $1)) {$0 = $2} return $0";else{if("&&"!==e.operator)throw new Error(b(e)+"Illegal logical operator: "+e.operator);r="var $0; if ($0 = $1) {$0 = $2} return $0"}s(e,P(m.part(r,[i,e.left,e.right]).body))}},t),e)}function B(e,t,n){if("SwitchCase"!==e.type&&a(e).isBlockStatement)for(var r=0;r0&&a(e).isAsync)return delete e.async,e.argument={type:"CallExpression",callee:"ThrowStatement"===e.type?ge.error:ge.return,arguments:e.argument?[e.argument]:[]},void(e.type="ReturnStatement");n(e)})}function ee(e,t){if(n.noRuntime)throw new Error("Nodent: 'noRuntime' option only compatible with -promise and -engine modes");return m.part("{ return (function*($return,$error){ $:body }).$asyncspawn(Promise,this) }",{return:ge.return,error:ge.error,asyncspawn:ge.asyncspawn,body:K(e).concat(t?[{type:"ReturnStatement",argument:ge.return}]:[])}).body[0]}function te(e){e.$asyncgetwarninig||(e.$asyncgetwarninig=!0,y(b(e)+"'async get "+r(e)+"(){...}' is non-standard. See https://github.com/MatAtBread/nodent#differences-from-the-es7-specification"))}function ne(e,t){function r(e,t){m.treeWalker(e,function(n,r,i){n!==e&&a(n).isFunction||(a(n).isAwait?t?(n.$hidden=!0,r()):(delete n.operator,n.delegate=!1,n.type="YieldExpression",r()):r())})}function o(e){var t=n.promises;n.promises=!0,C(e,!0),n.promises=t}function u(e){return"BlockStatement"!==e.body.type&&(e.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:e.body}]}),e}function c(e,n){n.$asyncexitwarninig||(n.$asyncexitwarninig=!0,y(b(e)+"'async "+{ReturnStatement:"return",ThrowStatement:"throw"}[e.type]+"' not possible in "+(t?"engine":"generator")+" mode. Using Promises for function at "+b(n)))}m.treeWalker(e,function(e,n,i){n();var l,p,h;if(a(e).isAsync&&a(e).isFunction){var f;(f=w(i[0].parent))&&a(f).isAsync&&"get"===i[0].parent.kind&&te(i[0].parent.key),(p=Q(e.body))?(c(p,e.body),o(e)):t?"get"!==i[0].parent.kind&&r(e,!0):(l=e,delete l.async,h=E(l),r(l,!1),l=u(l),l.body=ee(l.body.body,p),h&&V(l.body.body,[ve]),l.id&&"ExpressionStatement"===i[0].parent.type?(l.type="FunctionDeclaration",i[1].replace(l)):i[0].replace(l))}else(l=w(e))&&a(l).isAsync&&((p=Q(l))?(c(p,l),o(e)):t&&"get"!==e.kind||(t?o(e):(e.async=!1,h=E(l),r(l,!1),s(l,u(l)),l.body=ee(l.body.body,p)),h&&V(l.body.body,[ve])))});var l=i(n);return n.engine=!1,n.generators=!1,le(e),ae(e),D(e,l.engine),$(e),N(e),W(e,[q,J,I,j,B]),z(e,"warn"),n.engine=l.engine,n.generators=l.generators,e}function re(e,t,n){var r=[];return m.treeWalker(e,function(i,s,o){return i===e?s():t(i,o)?void r.push([].concat(o)):void(n||a(i).isScope||s())}),r}function ie(e,t){var n=[],r={};if(e=e.filter(function(e){return"ExportNamedDeclaration"!==e[0].parent.type}),e.length){var s={};e.forEach(function(e){function t(e){e in s?r[e]=o.declarations[u]:s[e]=o.declarations[u]}for(var n=e[0],o=n.self,a=(o.kind,[]),u=0;u1?{type:"SequenceExpression",expressions:a}:a[0];"For"!==n.parent.type.slice(0,3)&&(p={type:"ExpressionStatement",expression:p}),n.replace(p)}});var o=Object.keys(s);o.length&&(o=o.map(function(e){return{type:"VariableDeclarator",id:f(e),loc:s[e].loc,start:s[e].start,end:s[e].end}}),n[0]&&"VariableDeclaration"===n[0].type?n[0].declarations=n[0].declarations.concat(o):n.unshift({type:"VariableDeclaration",kind:t,declarations:o}))}return{decls:n,duplicates:r}}function se(e){if(!e)return[];if(Array.isArray(e))return e.reduce(function(e,t){return e.concat(se(t.id))},[]);switch(e.type){case"Identifier":return[e.name];case"ArrayPattern":return e.elements.reduce(function(e,t){return e.concat(se(t))},[]);case"ObjectPattern":return e.properties.reduce(function(e,t){return e.concat(se(t))},[]);case"ObjectProperty":case"Property":return se(e.value);case"RestElement":case"RestProperty":return se(e.argument)}}function oe(e){function t(e){y(b(e)+"Possible assignment to 'const "+r(e)+"'")}function n(e){switch(e.type){case"Identifier":"const"===i[e.name]&&t(e);break;case"ArrayPattern":e.elements.forEach(function(e){"const"===i[e.name]&&t(e)});break;case"ObjectPattern":e.properties.forEach(function(e){"const"===i[e.key.name]&&t(e)})}}var i={};m.treeWalker(e,function(e,t,r){var s=a(e).isBlockStatement;if(s){i=Object.create(i);for(var o=0;o=0){var r=n[0];return("left"!=r.field||"ForInStatement"!==r.parent.type&&"ForOfStatement"!==r.parent.type)&&("init"!=r.field||"ForStatement"!==r.parent.type||"const"!==t.kind&&"let"!==t.kind)}}}function n(e,t){return!("FunctionDeclaration"!==e.type||!e.id)&&(a(e).isAsync||!e.$continuation)}oe(e);var i=!1;return m.treeWalker(e,function(e,s,o){var u=i;if(i=i||he(e),a(e).isBlockStatement){var l=c(e);if(l){var p,h,d,m,g,v=!o[0].parent||a(o[0].parent).isScope;if(v){h=re(e,t(["const"]),!1);var x={},w={};h.forEach(function(e){e[0].self.declarations.forEach(function(e){se(e.id).forEach(function(t){x[t]||w[t]?(delete x[t],w[t]=e):x[t]=e})})}),h.forEach(function(e){for(var t=0;t=0&&"ReturnStatement"===r[1].self.type){var s=e.$thisCallName,o=i(ye[s].def.body.body);ye[s].$inlined=!0,a(r[1].self).isJump||o.push({type:"ReturnStatement"}),r[1].replace(o)}});var n=Object.keys(ye).map(function(e){return ye[e].$inlined&&ye[e].def});m.treeWalker(e,function(e,t,r){t(),n.indexOf(e)>=0&&r[0].remove()})}var r="Program"===e.type||"module"===e.sourceType;if(!r||!u(e,function(e){return a(e).isES6},!0)){var s=he(e);!function(e){m.treeWalker(e,function(e,t,n){if("Program"===e.type||"FunctionDeclaration"===e.type||"FunctionExpression"===e.type){var r=s;if(s=s||he(e)){t();var i="Program"===e.type?e:e.body,o=re(i,function(e,t){if("FunctionDeclaration"===e.type)return t[0].parent!==i});o=o.map(function(e){return e[0].remove()}),[].push.apply(i.body,o)}else t();s=r}else t()})}(e)}return m.treeWalker(e,function(e,t,n){t(),Object.keys(e).filter(function(e){return"$"===e[0]}).forEach(function(t){delete e[t]})}),e}var ye={},me=1,ge={};Object.keys(n).filter(function(e){return"$"===e[0]}).forEach(function(e){ge[e.slice(1)]=f(n[e])});var ve=m.part("var $0 = arguments",[ge.arguments]).body[0];return n.engine?(e.ast=ce(e.ast,!0),e.ast=ne(e.ast,n.engine),e.ast=pe(e.ast),de(e.ast)):n.generators?(e.ast=ce(e.ast),e.ast=ne(e.ast),e.ast=pe(e.ast),de(e.ast)):(e.ast=ce(e.ast),C(e.ast)),n.babelTree&&m.treeWalker(e.ast,function(e,t,n){t(),"Literal"===e.type&&s(e,x(e.value))}),e}var m=e("./parser"),g=e("./output"),v={start:!0,end:!0,loc:!0,range:!0},b={getScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type?this.node.body.body:"Program"===this.node.type?this.node.body:null},isScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"Program"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type},isFunction:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type},isClass:function(){return"ClassDeclaration"===this.node.type||"ClassExpression"===this.node.type},isBlockStatement:function(){return"ClassBody"===this.node.type||"Program"===this.node.type||"BlockStatement"===this.node.type?this.node.body:"SwitchCase"===this.node.type&&this.node.consequent},isExpressionStatement:function(){return"ExpressionStatement"===this.node.type},isLiteral:function(){return"Literal"===this.node.type||"BooleanLiteral"===this.node.type||"RegExpLiteral"===this.node.type||"NumericLiteral"===this.node.type||"StringLiteral"===this.node.type||"NullLiteral"===this.node.type},isDirective:function(){return"ExpressionStatement"===this.node.type&&("StringLiteral"===this.node.expression.type||"Literal"===this.node.expression.type&&"string"==typeof this.node.expression.value)},isUnaryExpression:function(){return"UnaryExpression"===this.node.type},isAwait:function(){return"AwaitExpression"===this.node.type&&!this.node.$hidden},isAsync:function(){return this.node.async},isStatement:function(){return null!==this.node.type.match(/[a-zA-Z]+Declaration/)||null!==this.node.type.match(/[a-zA-Z]+Statement/)},isExpression:function(){return null!==this.node.type.match(/[a-zA-Z]+Expression/)},isLoop:function(){return"ForStatement"===this.node.type||"WhileStatement"===this.node.type||"DoWhileStatement"===this.node.type},isJump:function(){return"ReturnStatement"===this.node.type||"ThrowStatement"===this.node.type||"BreakStatement"===this.node.type||"ContinueStatement"===this.node.type},isES6:function(){switch(this.node.type){case"ExportNamedDeclaration":case"ExportSpecifier":case"ExportDefaultDeclaration":case"ExportAllDeclaration":case"ImportDeclaration":case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ArrowFunctionExpression":case"ForOfStatement":case"YieldExpression":case"Super":case"RestElement":case"RestProperty":case"SpreadElement":case"TemplateLiteral":case"ClassDeclaration":case"ClassExpression":return!0;case"VariableDeclaration":return this.node.kind&&"var"!==this.node.kind;case"FunctionDeclaration":case"FunctionExpression":return!!this.node.generator}}},x={};Object.keys(b).forEach(function(e){Object.defineProperty(x,e,{get:b[e]})}),t.exports={printNode:r,babelLiteralNode:h,asynchronize:function(e,t,n,r){try{return y(e,t,n,r)}catch(t){if(t instanceof SyntaxError){var i=e.origCode.substr(t.pos-t.loc.column);i=i.split("\n")[0],t.message+=" (nodent)\n"+i+"\n"+i.replace(/[\S ]/g,"-").substring(0,t.loc.column)+"^",t.stack=""}throw t}}}},{"./output":10,"./parser":11}],10:[function(e,t,n){"use strict";function r(e){var t=y[e.type]||y[e.type+e.operator]||y[e.type+e.operator+(e.prefix?"prefix":"")];
-return void 0!==t?t:20}function i(e,t,n){var r=this[n||e.type];r?r.call(this,e,t):t.write(e,"/*"+e.type+"?*/ "+t.sourceAt(e.start,e.end))}function s(e,t,n,i){2===i||r(n)0){this.out(e[0],t,e[0].type);for(var r=1,i=e.length;r>":13,"BinaryExpression>>>":13,"BinaryExpression<":12,"BinaryExpression<=":12,"BinaryExpression>":12,"BinaryExpression>=":12,BinaryExpressionin:12,BinaryExpressioninstanceof:12,"BinaryExpression==":11,"BinaryExpression===":11,"BinaryExpression!=":11,"BinaryExpression!==":11,"BinaryExpression&":10,"BinaryExpression^":9,"BinaryExpression|":8,"LogicalExpression&&":7,"LogicalExpression||":6,ConditionalExpression:5,AssignmentPattern:4,AssignmentExpression:4,yield:3,YieldExpression:3,SpreadElement:2,"comma-separated-list":1.5,SequenceExpression:1},m={type:"comma-separated-list"},g={out:i,expr:s,formatParameters:o,Program:function(e,t){var n,r,i=h(t.indent,t.indentLevel),s=t.lineEnd;n=e.body;for(var o=0,a=n.length;o0){t.write(null,s);for(var a=0,u=n.length;a0){this.out(n[0],t,"VariableDeclarator");for(var i=1;i0){for(var n=0;n0)for(var r=0;r "),"ObjectExpression"===e.body.type||"SequenceExpression"===e.body.type?(t.write(null,"("),this.out(e.body,t,e.body.type),t.write(null,")")):this.out(e.body,t,e.body.type)},ThisExpression:function(e,t){t.write(e,"this")},Super:function(e,t){t.write(e,"super")},RestElement:u=function(e,t){t.write(e,"..."),this.out(e.argument,t,e.argument.type)},SpreadElement:u,YieldExpression:function(e,t){t.write(e,e.delegate?"yield*":"yield"),e.argument&&(t.write(null," "),this.expr(t,e,e.argument))},AwaitExpression:function(e,t){t.write(e,"await "),this.expr(t,e,e.argument)},TemplateLiteral:function(e,t){var n,r=e.quasis,i=e.expressions;t.write(e,"`");for(var s=0,o=i.length;s0)for(var n=e.elements,r=n.length,i=0;;){var s=n[i];if(s&&this.expr(t,m,s),i+=1,(i=r)break;t.lineLength()>t.wrapColumn&&t.write(null,t.lineEnd,h(t.indent,t.indentLevel+1))}t.write(null,"]")},ArrayPattern:l,ObjectExpression:function(e,t){var n,r=h(t.indent,t.indentLevel++),i=t.lineEnd,s=r+t.indent;if(t.write(e,"{"),e.properties.length>0){t.write(null,i);for(var o=e.properties,a=o.length,u=0;n=o[u],t.write(null,s),this.out(n,t,"Property"),++ut.wrapColumn&&t.write(null,t.lineEnd,h(t.indent,t.indentLevel+1));t.write(null,i,r,"}")}else t.write(null,"}");t.indentLevel--},Property:function(e,t){e.method||"get"===e.kind||"set"===e.kind?this.MethodDefinition(e,t):(e.shorthand||(e.computed?(t.write(null,"["),this.out(e.key,t,e.key.type),t.write(null,"]")):this.out(e.key,t,e.key.type),t.write(null,": ")),this.expr(t,m,e.value))},ObjectPattern:function(e,t){if(t.write(e,"{"),e.properties.length>0)for(var n=e.properties,r=n.length,i=0;this.out(n[i],t,"Property"),++i0)for(var i=r.length,s=0;s1&&t.write(e," "),this.expr(t,e,e.argument,!0)):(this.expr(t,e,e.argument),t.write(e,e.operator))},UpdateExpression:function(e,t){e.prefix?(t.write(e,e.operator),this.out(e.argument,t,e.argument.type)):(this.out(e.argument,t,e.argument.type),t.write(e,e.operator))},BinaryExpression:c=function(e,t){var n=e.operator;"in"===n&&t.inForInit&&t.write(null,"("),this.expr(t,e,e.left),t.write(e," ",n," "),this.expr(t,e,e.right,"ArrowFunctionExpression"===e.right.type?2:0),"in"===n&&t.inForInit&&t.write(null,")")},LogicalExpression:c,AssignmentExpression:function(e,t){"ObjectPattern"===e.left.type&&t.write(null,"("),this.BinaryExpression(e,t),"ObjectPattern"===e.left.type&&t.write(null,")")},AssignmentPattern:function(e,t){this.expr(t,e,e.left),t.write(e," = "),this.expr(t,e,e.right)},ConditionalExpression:function(e,t){this.expr(t,e,e.test,!0),t.write(e," ? "),this.expr(t,e,e.consequent),t.write(null," : "),this.expr(t,e,e.alternate)},NewExpression:function(e,t){t.write(e,"new "),this.out(e,t,"CallExpression")},CallExpression:function(e,t){this.expr(t,e,e.callee,"ObjectExpression"===e.callee.type?2:0),t.write(e,"(");var n=e.arguments;if(n.length>0)for(var r=n.length,i=0;i=0&&r({self:i,parent:e,field:a[u],index:!0}):c instanceof Object&&i===c&&r({self:i,parent:e,field:a[u]})}})}return n||(n=[{self:e}],n.replace=function(e,t){n[e].replace(t)}),t(e,s,n),e}function s(e,t){var n=[],r={plugins:{asyncawait:{asyncExits:!0,awaitAnywhere:!0}},ecmaVersion:8,allowHashBang:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0,locations:!0,onComment:n};if(t)for(var s in t)r[s]=t[s];var o=a.parse(e,r);return i(o,function(e,t,r){for(t();n.length&&e.loc&&e.loc.start.line>=n[0].loc.start.line&&e.loc.end.line>=n[0].loc.end.line;)e.$comments=e.$comments||[],e.$comments.push(n.shift())}),o}function o(e,t){function n(e,r){if(Array.isArray(r)&&!Array.isArray(e))throw new Error("Can't substitute an array for a node");return r=r||{},Object.keys(e).forEach(function(i){function s(e){return"function"==typeof e&&(e=e()),r=r.concat(e)}function o(e){return"function"==typeof e&&(e=e()),r[i]=e,r}if(!(e[i]instanceof Object))return r[i]=e[i];if(Array.isArray(e[i]))return r[i]=n(e[i],[]);var a;if(a=Array.isArray(r)?s:o,"Identifier"===e[i].type&&"$"===e[i].name[0])return a(t[e[i].name.slice(1)]);if("LabeledStatement"===e[i].type&&"$"===e[i].label.name){var u=e[i].body.expression;return a(t[u.name||u.value])}return a("LabeledStatement"===e[i].type&&"$$"===e[i].label.name.slice(0,2)?t[e[i].label.name.slice(2)](n(e[i]).body):n(e[i]))}),r}h[e]||(h[e]=s(e,{locations:!1,ranges:!1,onComment:null}));var r=n(h[e]);return{body:r.body,expr:"ExpressionStatement"===r.body[0].type?r.body[0].expression:null}}var a=e("acorn"),u=e("acorn/dist/walk"),c={AwaitExpression:function(e,t,n){n(e.argument,t,"Expression")},SwitchStatement:function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0;r=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(p,"$1 $3")),e.test(r)}function s(e,t,n,r){var i=new e.constructor(e.options,e.input,t);if(n)for(var s in n)i[s]=n[s];var o=e,a=i;return["inFunction","inAsyncFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in o&&(a[e]=o[e])}),r&&(i.options.preserveParens=!0),i.nextToken(),i}function o(e,t){var n=function(){};e.extend("initialContext",function(r){return function(){return this.options.ecmaVersion<7&&(n=function(t){e.raise(t.start,"async/await keywords only available when ecmaVersion>=7")}),this.reservedWords=new RegExp(this.reservedWords.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrict=new RegExp(this.reservedWordsStrict.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrictBind=new RegExp(this.reservedWordsStrictBind.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.inAsyncFunction=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),r.apply(this,arguments)}}),e.extend("shouldParseExportStatement",function(e){return function(){return!("name"!==this.type.label||"async"!==this.value||!i(c,this))||e.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label)if(i(c,this,!0)){var a=this.inAsyncFunction;try{this.inAsyncFunction=!0,this.next();var l=this.parseStatement(n,r);return l.async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}finally{this.inAsyncFunction=a}}else if("object"==typeof t&&t.asyncExits&&i(u,this)){this.next();var l=this.parseStatement(n,r);return l.async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(t){var n=e.apply(this,arguments);return this.inAsyncFunction&&"await"===n.name&&0===arguments.length&&this.raise(n.start,"'await' is reserved within async functions"),n}}),e.extend("parseExprAtom",function(e){return function(i){var o,u=this.start,c=this.startLoc,p=e.apply(this,arguments);if("Identifier"===p.type)if("async"!==p.name||r(this,p.end)){if("await"===p.name){var h=this.startNodeAt(p.start,p.loc&&p.loc.start);if(this.inAsyncFunction)return o=this.parseExprSubscripts(),h.operator="await",h.argument=o,h=this.finishNodeAt(h,"AwaitExpression",o.end,o.loc&&o.loc.end),n(h),h;if(this.input.slice(p.end).match(l))return t.awaitAnywhere||"module"!==this.options.sourceType?p:this.raise(p.start,"'await' is reserved within modules");if("object"==typeof t&&t.awaitAnywhere&&(u=this.start,o=s(this,u-4).parseExprSubscripts(),o.end<=u))return o=s(this,u).parseExprSubscripts(),h.operator="await",h.argument=o,h=this.finishNodeAt(h,"AwaitExpression",o.end,o.loc&&o.loc.end),this.pos=o.end,this.end=o.end,this.endLoc=o.endLoc,this.next(),n(h),h;if(!t.awaitAnywhere&&"module"===this.options.sourceType)return this.raise(p.start,"'await' is reserved within modules")}}else{var f=this.inAsyncFunction;try{this.inAsyncFunction=!0;var d=this,y=!1,m={parseFunctionBody:function(e,t){try{var n=y;return y=!0,d.parseFunctionBody.apply(this,arguments)}finally{y=n}},raise:function(){try{return d.raise.apply(this,arguments)}catch(e){throw y?e:a}}};if(o=s(this,this.start,m,!0).parseExpression(),"SequenceExpression"===o.type&&(o=o.expressions[0]),"FunctionExpression"===o.type||"FunctionDeclaration"===o.type||"ArrowFunctionExpression"===o.type)return o=s(this,this.start,m).parseExpression(),"SequenceExpression"===o.type&&(o=o.expressions[0]),o.async=!0,o.start=u,o.loc&&(o.loc.start=c),o.range&&(o.range[0]=u),this.pos=o.end,this.end=o.end,this.endLoc=o.endLoc,this.next(),n(o),o}catch(e){if(e!==a)throw e}finally{this.inAsyncFunction=f}}return p}}),e.extend("finishNodeAt",function(e){return function(t,n,r,i){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("finishNode",function(e){return function(t,n){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}});e.extend("parsePropertyName",function(e){return function(t){var i=(t.key&&t.key.name,e.apply(this,arguments));return"Identifier"!==i.type||"async"!==i.name||r(this,i.end)||this.input.slice(i.end).match(l)||(h.test(this.input.slice(i.end))?(i=e.apply(this,arguments),t.__asyncValue=!0):(n(t),"set"===t.kind&&this.raise(i.start,"'set (value)' cannot be be async"),i=e.apply(this,arguments),"Identifier"===i.type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async"),t.__asyncValue=!0)),i}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i;n.__asyncValue&&("constructor"===n.kind&&this.raise(n.start,"class constructor() cannot be be async"),i=this.inAsyncFunction,this.inAsyncFunction=!0);var s=e.apply(this,arguments);return this.inAsyncFunction=i,s}}),e.extend("parseMethod",function(e){return function(t){var n;this.__currentProperty&&this.__currentProperty.__asyncValue&&(n=this.inAsyncFunction,this.inAsyncFunction=!0);var r=e.apply(this,arguments);return this.inAsyncFunction=n,r}}),e.extend("parsePropertyValue",function(e){return function(t,n,r,i,s,o){var a=this.__currentProperty;this.__currentProperty=t;var u;t.__asyncValue&&(u=this.inAsyncFunction,this.inAsyncFunction=!0);var c=e.apply(this,arguments);return this.inAsyncFunction=u,this.__currentProperty=a,c}})}var a={},u=/^async[\t ]+(return|throw)/,c=/^async[\t ]+function/,l=/^\s*[():;]/,p=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g,h=/\s*(get|set)\s*\(/;t.exports=o},{}],14:[function(e,t,n){function r(e,t){return e.lineStart>=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(c,"$1 $3")),e.test(r)}function s(e,t,n){var r=new e.constructor(e.options,e.input,t);if(n)for(var i in n)r[i]=n[i];var s=e,o=r;return["inFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in s&&(o[e]=s[e])}),r.nextToken(),r}function o(e,t){t&&"object"==typeof t||(t={}),e.extend("parse",function(n){return function(){return this.inAsync=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),n.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label&&t.asyncExits&&i(a,this)){this.next();var u=this.parseStatement(n,r);return u.async=!0,u.start=s,u.loc&&(u.loc.start=o),u.range&&(u.range[0]=s),u}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(n){return"module"===this.options.sourceType&&this.options.ecmaVersion>=8&&t.awaitAnywhere?e.call(this,!0):e.apply(this,arguments)}}),e.extend("parseExprAtom",function(e){var n={};return function(r){var i,o=this.start,a=(this.startLoc,e.apply(this,arguments));if("Identifier"===a.type&&"await"===a.name&&!this.inAsync&&t.awaitAnywhere){var u=this.startNodeAt(a.start,a.loc&&a.loc.start);o=this.start;var c={raise:function(){try{return pp.raise.apply(this,arguments)}catch(e){throw n}}};try{if(i=s(this,o-4,c).parseExprSubscripts(),i.end<=o)return i=s(this,o,c).parseExprSubscripts(),u.argument=i,u=this.finishNodeAt(u,"AwaitExpression",i.end,i.loc&&i.loc.end),this.pos=i.end,this.end=i.end,this.endLoc=i.endLoc,this.next(),u}catch(e){if(e===n)return a;throw e}}return a}});var n={undefined:!0,get:!0,set:!0,static:!0,async:!0,constructor:!0};e.extend("parsePropertyName",function(e){return function(t){var i=t.key&&t.key.name,s=e.apply(this,arguments);return"get"===this.value&&(t.__maybeStaticAsyncGetter=!0),n[this.value]?s:("Identifier"!==s.type||"async"!==s.name&&"async"!==i||r(this,s.end)||this.input.slice(s.end).match(u)?delete t.__maybeStaticAsyncGetter:"set"===t.kind||"set"===s.name?this.raise(s.start,"'set (value)' cannot be be async"):(this.__isAsyncProp=!0,s=e.apply(this,arguments),"Identifier"===s.type&&"set"===s.name&&this.raise(s.start,"'set (value)' cannot be be async")),s)}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i=e.apply(this,arguments);return n.__maybeStaticAsyncGetter&&(delete n.__maybeStaticAsyncGetter,n.kind="get"),i}}),e.extend("parseFunctionBody",function(e){return function(t,n){var r=this.inAsync;this.__isAsyncProp&&(t.async=!0,this.inAsync=!0,delete this.__isAsyncProp);var i=e.apply(this,arguments);return this.inAsync=r,i}})}var a=/^async[\t ]+(return|throw)/,u=/^\s*[):;]/,c=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g;t.exports=o},{}],15:[function(e,t,n){!function(e,r){"object"==typeof n&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.acorn=e.acorn||{})}(this,function(e){"use strict";function t(e,t){for(var n=65536,r=0;re)return!1;if(n+=t[r+1],n>=e)return!0}}function n(e,n){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&A.test(String.fromCharCode(e)):n!==!1&&t(e,C)))}function r(e,n){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&_.test(String.fromCharCode(e)):n!==!1&&(t(e,C)||t(e,L)))))}function i(e,t){return new P(e,{beforeExpr:!0,binop:t})}function s(e,t){return void 0===t&&(t={}),t.keyword=e,O[e]=new P(e,t)}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e){return"[object Array]"===Object.prototype.toString.call(e)}function u(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function c(e,t){for(var n=1,r=0;;){$.lastIndex=r;var i=$.exec(e);if(!(i&&i.index=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),a(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return a(t.onComment)&&(t.onComment=p(t,t.onComment)),t}function p(e,t){return function(n,r,i,s,o,a){var u={type:n?"Block":"Line",value:r,start:i,end:s};e.locations&&(u.loc=new M(this,o,a)),e.ranges&&(u.range=[i,s]),t.push(u)}}function h(e){return new RegExp("^("+e.replace(/ /g,"|")+")$")}function f(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}function d(e,t,n,r){try{return new RegExp(e,t)}catch(e){if(void 0!==n)throw e instanceof SyntaxError&&r.raise(n,"Error parsing regular expression: "+e.message),e}}function y(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(1023&e)+56320))}function m(e,t){return new U(t,e).parse()}function g(e,t,n){var r=new U(n,e,t);return r.nextToken(),r.parseExpression()}function v(e,t){return new U(t,e)}function b(t,n,r){e.parse_dammit=t,e.LooseParser=n,e.pluginsLoose=r}var x={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},w="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",E={5:w,6:w+" const class extends export import super"},S="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",k="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",A=new RegExp("["+S+"]"),_=new RegExp("["+S+k+"]");
-S=k=null;var C=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],L=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],P=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null},T={beforeExpr:!0},R={startsExpr:!0},O={},F={num:new P("num",R),regexp:new P("regexp",R),string:new P("string",R),name:new P("name",R),eof:new P("eof"),bracketL:new P("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new P("]"),braceL:new P("{",{beforeExpr:!0,startsExpr:!0}),braceR:new P("}"),parenL:new P("(",{beforeExpr:!0,startsExpr:!0}),parenR:new P(")"),comma:new P(",",T),semi:new P(";",T),colon:new P(":",T),dot:new P("."),question:new P("?",T),arrow:new P("=>",T),template:new P("template"),ellipsis:new P("...",T),backQuote:new P("`",R),dollarBraceL:new P("${",{beforeExpr:!0,startsExpr:!0}),eq:new P("=",{beforeExpr:!0,isAssign:!0}),assign:new P("_=",{beforeExpr:!0,isAssign:!0}),incDec:new P("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new P("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:i("||",1),logicalAND:i("&&",2),bitwiseOR:i("|",3),bitwiseXOR:i("^",4),bitwiseAND:i("&",5),equality:i("==/!=",6),relational:i("",7),bitShift:i("<>",8),plusMin:new P("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:i("%",10),star:i("*",10),slash:i("/",10),starstar:new P("**",{beforeExpr:!0}),_break:s("break"),_case:s("case",T),_catch:s("catch"),_continue:s("continue"),_debugger:s("debugger"),_default:s("default",T),_do:s("do",{isLoop:!0,beforeExpr:!0}),_else:s("else",T),_finally:s("finally"),_for:s("for",{isLoop:!0}),_function:s("function",R),_if:s("if"),_return:s("return",T),_switch:s("switch"),_throw:s("throw",T),_try:s("try"),_var:s("var"),_const:s("const"),_while:s("while",{isLoop:!0}),_with:s("with"),_new:s("new",{beforeExpr:!0,startsExpr:!0}),_this:s("this",R),_super:s("super",R),_class:s("class"),_extends:s("extends",T),_export:s("export"),_import:s("import"),_null:s("null",R),_true:s("true",R),_false:s("false",R),_in:s("in",{beforeExpr:!0,binop:7}),_instanceof:s("instanceof",{beforeExpr:!0,binop:7}),_typeof:s("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:s("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:s("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},N=/\r\n?|\n|\u2028|\u2029/,$=new RegExp(N.source,"g"),B=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,I=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,j=function(e,t){this.line=e,this.column=t};j.prototype.offset=function(e){return new j(this.line,this.column+e)};var M=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)},D={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},V={},U=function(e,t,n){this.options=e=l(e),this.sourceFile=e.sourceFile,this.keywords=h(E[e.ecmaVersion>=6?6:5]);var r="";if(!e.allowReserved){for(var i=e.ecmaVersion;!(r=x[i]);i--);"module"==e.sourceType&&(r+=" await")}this.reservedWords=h(r);var s=(r?r+" ":"")+x.strict;this.reservedWordsStrict=h(s),this.reservedWordsStrictBind=h(s+" "+x.strictBind),this.input=String(t),this.containsEsc=!1,this.loadPlugins(e.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(N).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=F.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.strict=this.inModule="module"===e.sourceType,this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2)};U.prototype.isKeyword=function(e){return this.keywords.test(e)},U.prototype.isReservedWord=function(e){return this.reservedWords.test(e)},U.prototype.extend=function(e,t){this[e]=t(this[e])},U.prototype.loadPlugins=function(e){var t=this;for(var n in e){var r=V[n];if(!r)throw new Error("Plugin '"+n+"' not found");r(t,e[n])}},U.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)};var q=U.prototype;q.isUseStrict=function(e){return this.options.ecmaVersion>=5&&"ExpressionStatement"===e.type&&"Literal"===e.expression.type&&"use strict"===e.expression.raw.slice(1,-1)},q.eat=function(e){return this.type===e&&(this.next(),!0)},q.isContextual=function(e){return this.type===F.name&&this.value===e},q.eatContextual=function(e){return this.value===e&&this.eat(F.name)},q.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},q.canInsertSemicolon=function(){return this.type===F.eof||this.type===F.braceR||N.test(this.input.slice(this.lastTokEnd,this.start))},q.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},q.semicolon=function(){this.eat(F.semi)||this.insertSemicolon()||this.unexpected()},q.afterTrailingComma=function(e,t){if(this.type==e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},q.expect=function(e){this.eat(e)||this.unexpected()},q.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")};var W=function(){this.shorthandAssign=0,this.trailingComma=0};q.checkPatternErrors=function(e,t){var n=e&&e.trailingComma;return t?void(n&&this.raise(n,"Comma is not permitted after the rest element")):!!n},q.checkExpressionErrors=function(e,t){var n=e&&e.shorthandAssign;return t?void(n&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns")):!!n},q.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(e.sourceType=this.options.sourceType),this.finishNode(e,"Program")};var Y={kind:"loop"},G={kind:"switch"};z.isLet=function(){if(this.type!==F.name||this.options.ecmaVersion<6||"let"!=this.value)return!1;I.lastIndex=this.pos;var e=I.exec(this.input),t=this.pos+e[0].length,i=this.input.charCodeAt(t);if(91===i||123==i)return!0;if(n(i,!0)){for(var s=t+1;r(this.input.charCodeAt(s),!0);++s);var o=this.input.slice(t,s);if(!this.isKeyword(o))return!0}return!1},z.isAsyncFunction=function(){if(this.type!==F.name||this.options.ecmaVersion<8||"async"!=this.value)return!1;I.lastIndex=this.pos;var e=I.exec(this.input),t=this.pos+e[0].length;return!(N.test(this.input.slice(this.pos,t))||"function"!==this.input.slice(t,t+8)||t+8!=this.input.length&&r(this.input.charAt(t+8)))},z.parseStatement=function(e,t,n){var r,i=this.type,s=this.startNode();switch(this.isLet()&&(i=F._var,r="let"),i){case F._break:case F._continue:return this.parseBreakContinueStatement(s,i.keyword);case F._debugger:return this.parseDebuggerStatement(s);case F._do:return this.parseDoStatement(s);case F._for:return this.parseForStatement(s);case F._function:return!e&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(s,!1);case F._class:return e||this.unexpected(),this.parseClass(s,!0);case F._if:return this.parseIfStatement(s);case F._return:return this.parseReturnStatement(s);case F._switch:return this.parseSwitchStatement(s);case F._throw:return this.parseThrowStatement(s);case F._try:return this.parseTryStatement(s);case F._const:case F._var:return r=r||this.value,e||"var"==r||this.unexpected(),this.parseVarStatement(s,r);case F._while:return this.parseWhileStatement(s);case F._with:return this.parseWithStatement(s);case F.braceL:return this.parseBlock();case F.semi:return this.parseEmptyStatement(s);case F._export:case F._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===F._import?this.parseImport(s):this.parseExport(s,n);default:if(this.isAsyncFunction()&&e)return this.next(),this.parseFunctionStatement(s,!0);var o=this.value,a=this.parseExpression();return i===F.name&&"Identifier"===a.type&&this.eat(F.colon)?this.parseLabeledStatement(s,o,a):this.parseExpressionStatement(s,a)}},z.parseBreakContinueStatement=function(e,t){var n=this,r="break"==t;this.next(),this.eat(F.semi)||this.insertSemicolon()?e.label=null:this.type!==F.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var i=0;i=6?this.eat(F.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},z.parseForStatement=function(e){if(this.next(),this.labels.push(Y),this.expect(F.parenL),this.type===F.semi)return this.parseFor(e,null);var t=this.isLet();if(this.type===F._var||this.type===F._const||t){var n=this.startNode(),r=t?"let":this.value;return this.next(),this.parseVar(n,!0,r),this.finishNode(n,"VariableDeclaration"),!(this.type===F._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==n.declarations.length||"var"!==r&&n.declarations[0].init?this.parseFor(e,n):this.parseForIn(e,n)}var i=new W,s=this.parseExpression(!0,i);return this.type===F._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.checkPatternErrors(i,!0),this.toAssignable(s),this.checkLVal(s),this.parseForIn(e,s)):(this.checkExpressionErrors(i,!0),this.parseFor(e,s))},z.parseFunctionStatement=function(e,t){return this.next(),this.parseFunction(e,!0,!1,t)},z.isFunction=function(){return this.type===F._function||this.isAsyncFunction()},z.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!this.strict&&this.isFunction()),e.alternate=this.eat(F._else)?this.parseStatement(!this.strict&&this.isFunction()):null,this.finishNode(e,"IfStatement")},z.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(F.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},z.parseSwitchStatement=function(e){var t=this;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(F.braceL),this.labels.push(G);for(var n,r=!1;this.type!=F.braceR;)if(t.type===F._case||t.type===F._default){var i=t.type===F._case;n&&t.finishNode(n,"SwitchCase"),e.cases.push(n=t.startNode()),n.consequent=[],t.next(),i?n.test=t.parseExpression():(r&&t.raiseRecoverable(t.lastTokStart,"Multiple default clauses"),r=!0,n.test=null),t.expect(F.colon)}else n||t.unexpected(),n.consequent.push(t.parseStatement(!0));return n&&this.finishNode(n,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},z.parseThrowStatement=function(e){return this.next(),N.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var J=[];z.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===F._catch){var t=this.startNode();this.next(),this.expect(F.parenL),t.param=this.parseBindingAtom(),this.checkLVal(t.param,!0),this.expect(F.parenR),t.body=this.parseBlock(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(F._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},z.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},z.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(Y),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"WhileStatement")},z.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},z.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},z.parseLabeledStatement=function(e,t,n){for(var r=this,i=0;i=0;o--){var a=r.labels[o];if(a.statementStart!=e.start)break;a.statementStart=r.start,a.kind=s}return this.labels.push({name:t,kind:s,statementStart:this.start}),e.body=this.parseStatement(!0),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},z.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},z.parseBlock=function(e){var t,n=this,r=this.startNode(),i=!0;for(r.body=[],this.expect(F.braceL);!this.eat(F.braceR);){var s=n.parseStatement(!0);r.body.push(s),i&&e&&n.isUseStrict(s)&&(t=n.strict,n.setStrict(n.strict=!0)),i=!1}return t===!1&&this.setStrict(!1),this.finishNode(r,"BlockStatement")},z.parseFor=function(e,t){return e.init=t,this.expect(F.semi),e.test=this.type===F.semi?null:this.parseExpression(),this.expect(F.semi),e.update=this.type===F.parenR?null:this.parseExpression(),this.expect(F.parenR),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"ForStatement")},z.parseForIn=function(e,t){var n=this.type===F._in?"ForInStatement":"ForOfStatement";return this.next(),e.left=t,e.right=this.parseExpression(),this.expect(F.parenR),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,n)},z.parseVar=function(e,t,n){var r=this;for(e.declarations=[],e.kind=n;;){var i=r.startNode();if(r.parseVarId(i),r.eat(F.eq)?i.init=r.parseMaybeAssign(t):"const"!==n||r.type===F._in||r.options.ecmaVersion>=6&&r.isContextual("of")?"Identifier"==i.id.type||t&&(r.type===F._in||r.isContextual("of"))?i.init=null:r.raise(r.lastTokEnd,"Complex binding patterns require an initialization value"):r.unexpected(),e.declarations.push(r.finishNode(i,"VariableDeclarator")),!r.eat(F.comma))break}return e},z.parseVarId=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0)},z.parseFunction=function(e,t,n,r){this.initFunction(e),this.options.ecmaVersion>=6&&!r&&(e.generator=this.eat(F.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&&(e.id=this.parseIdent());var i=this.inGenerator,s=this.inAsync,o=this.yieldPos,a=this.awaitPos;return this.inGenerator=e.generator,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,t||this.type!==F.name||(e.id=this.parseIdent()),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.inGenerator=i,this.inAsync=s,this.yieldPos=o,this.awaitPos=a,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},z.parseFunctionParams=function(e){this.expect(F.parenL),e.params=this.parseBindingList(F.parenR,!1,this.options.ecmaVersion>=8,!0),this.checkYieldAwaitInDefaultParams()},z.parseClass=function(e,t){var n=this;this.next(),this.parseClassId(e,t),this.parseClassSuper(e);var r=this.startNode(),i=!1;for(r.body=[],this.expect(F.braceL);!this.eat(F.braceR);)if(!n.eat(F.semi)){var s=n.startNode(),o=n.eat(F.star),a=!1,u=n.type===F.name&&"static"===n.value;n.parsePropertyName(s),s.static=u&&n.type!==F.parenL,s.static&&(o&&n.unexpected(),o=n.eat(F.star),n.parsePropertyName(s)),n.options.ecmaVersion>=8&&!o&&!s.computed&&"Identifier"===s.key.type&&"async"===s.key.name&&n.type!==F.parenL&&!n.canInsertSemicolon()&&(a=!0,n.parsePropertyName(s)),s.kind="method";var c=!1;if(!s.computed){var l=s.key;o||a||"Identifier"!==l.type||n.type===F.parenL||"get"!==l.name&&"set"!==l.name||(c=!0,s.kind=l.name,l=n.parsePropertyName(s)),!s.static&&("Identifier"===l.type&&"constructor"===l.name||"Literal"===l.type&&"constructor"===l.value)&&(i&&n.raise(l.start,"Duplicate constructor in the same class"),c&&n.raise(l.start,"Constructor can't have get/set modifier"),o&&n.raise(l.start,"Constructor can't be a generator"),a&&n.raise(l.start,"Constructor can't be an async method"),s.kind="constructor",i=!0)}if(n.parseClassMethod(r,s,o,a),c){var p="get"===s.kind?0:1;if(s.value.params.length!==p){var h=s.value.start;"get"===s.kind?n.raiseRecoverable(h,"getter should have no params"):n.raiseRecoverable(h,"setter should have exactly one param")}else"set"===s.kind&&"RestElement"===s.value.params[0].type&&n.raiseRecoverable(s.value.params[0].start,"Setter cannot use rest params")}}return e.body=this.finishNode(r,"ClassBody"),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},z.parseClassMethod=function(e,t,n,r){t.value=this.parseMethod(n,r),e.body.push(this.finishNode(t,"MethodDefinition"))},z.parseClassId=function(e,t){e.id=this.type===F.name?this.parseIdent():t?this.unexpected():null},z.parseClassSuper=function(e){e.superClass=this.eat(F._extends)?this.parseExprSubscripts():null},z.parseExport=function(e,t){var n=this;if(this.next(),this.eat(F.star))return this.expectContextual("from"),e.source=this.type===F.string?this.parseExprAtom():this.unexpected(),this.semicolon(),this.finishNode(e,"ExportAllDeclaration");if(this.eat(F._default)){this.checkExport(t,"default",this.lastTokStart);var r=this.type==F.parenL,i=this.parseMaybeAssign(),s=!0;return r||"FunctionExpression"!=i.type&&"ClassExpression"!=i.type||(s=!1,i.id&&(i.type="FunctionExpression"==i.type?"FunctionDeclaration":"ClassDeclaration")),e.declaration=i,s&&this.semicolon(),this.finishNode(e,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())e.declaration=this.parseStatement(!0),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id.name,e.declaration.id.start),e.specifiers=[],e.source=null;else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))e.source=this.type===F.string?this.parseExprAtom():this.unexpected();else{for(var o=0;o=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var r=0;r=8&&"async"===o.name&&!this.canInsertSemicolon()&&this.eat(F._function))return this.parseFunction(this.startNodeAt(i,s),!1,!1,!0);if(n&&!this.canInsertSemicolon()){if(this.eat(F.arrow))return this.parseArrowExpression(this.startNodeAt(i,s),[o],!1);if(this.options.ecmaVersion>=8&&"async"===o.name&&this.type===F.name)return o=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(F.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(i,s),[o],!0)}return o;case F.regexp:var a=this.value;return t=this.parseLiteral(a.value),t.regex={pattern:a.pattern,flags:a.flags},t;case F.num:case F.string:return this.parseLiteral(this.value);case F._null:case F._true:case F._false:return t=this.startNode(),t.value=this.type===F._null?null:this.type===F._true,t.raw=this.type.keyword,this.next(),this.finishNode(t,"Literal");case F.parenL:return this.parseParenAndDistinguishExpression(n);case F.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(F.bracketR,!0,!0,e),this.finishNode(t,"ArrayExpression");case F.braceL:return this.parseObj(!1,e);case F._function:return t=this.startNode(),this.next(),this.parseFunction(t,!1);case F._class:return this.parseClass(this.startNode(),!1);case F._new:return this.parseNew();case F.backQuote:return this.parseTemplate();default:this.unexpected()}},Q.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(t,"Literal")},Q.parseParenExpression=function(){this.expect(F.parenL);var e=this.parseExpression();return this.expect(F.parenR),e},Q.parseParenAndDistinguishExpression=function(e){var t,n=this,r=this.start,i=this.startLoc,s=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var o,a,u=this.start,c=this.startLoc,l=[],p=!0,h=!1,f=new W,d=this.yieldPos,y=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==F.parenR;){if(p?p=!1:n.expect(F.comma),s&&n.afterTrailingComma(F.parenR,!0)){h=!0;break}if(n.type===F.ellipsis){o=n.start,l.push(n.parseParenItem(n.parseRest())),n.type===F.comma&&n.raise(n.start,"Comma is not permitted after the rest element");break}n.type!==F.parenL||a||(a=n.start),l.push(n.parseMaybeAssign(!1,f,n.parseParenItem))}var m=this.start,g=this.startLoc;if(this.expect(F.parenR),e&&!this.canInsertSemicolon()&&this.eat(F.arrow))return this.checkPatternErrors(f,!0),this.checkYieldAwaitInDefaultParams(),a&&this.unexpected(a),this.yieldPos=d,this.awaitPos=y,this.parseParenArrowList(r,i,l);l.length&&!h||this.unexpected(this.lastTokStart),o&&this.unexpected(o),this.checkExpressionErrors(f,!0),this.yieldPos=d||this.yieldPos,this.awaitPos=y||this.awaitPos,l.length>1?(t=this.startNodeAt(u,c),t.expressions=l,this.finishNodeAt(t,"SequenceExpression",m,g)):t=l[0]}else t=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(r,i);return v.expression=t,this.finishNode(v,"ParenthesizedExpression")}return t},Q.parseParenItem=function(e){return e},Q.parseParenArrowList=function(e,t,n){return this.parseArrowExpression(this.startNodeAt(e,t),n)};var X=[];Q.parseNew=function(){var e=this.startNode(),t=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(F.dot))return e.meta=t,e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(e.start,"new.target can only be used in functions"),this.finishNode(e,"MetaProperty");var n=this.start,r=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(),n,r,!0),this.eat(F.parenL)?e.arguments=this.parseExprList(F.parenR,this.options.ecmaVersion>=8,!1):e.arguments=X,this.finishNode(e,"NewExpression")},Q.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),e.tail=this.type===F.backQuote,this.finishNode(e,"TemplateElement")},Q.parseTemplate=function(){var e=this,t=this.startNode();this.next(),t.expressions=[];var n=this.parseTemplateElement();for(t.quasis=[n];!n.tail;)e.expect(F.dollarBraceL),t.expressions.push(e.parseExpression()),e.expect(F.braceR),t.quasis.push(n=e.parseTemplateElement());return this.next(),this.finishNode(t,"TemplateLiteral")},Q.parseObj=function(e,t){var n=this,r=this.startNode(),i=!0,s={};for(r.properties=[],this.next();!this.eat(F.braceR);){if(i)i=!1;else if(n.expect(F.comma),n.afterTrailingComma(F.braceR))break;var o,a,u,c,l=n.startNode();n.options.ecmaVersion>=6&&(l.method=!1,l.shorthand=!1,(e||t)&&(u=n.start,c=n.startLoc),e||(o=n.eat(F.star))),n.parsePropertyName(l),e||!(n.options.ecmaVersion>=8)||o||l.computed||"Identifier"!==l.key.type||"async"!==l.key.name||n.type===F.parenL||n.type===F.colon||n.canInsertSemicolon()?a=!1:(a=!0,n.parsePropertyName(l,t)),n.parsePropertyValue(l,e,o,a,u,c,t),n.checkPropClash(l,s),r.properties.push(n.finishNode(l,"Property"))}return this.finishNode(r,e?"ObjectPattern":"ObjectExpression")},Q.parsePropertyValue=function(e,t,n,r,i,s,o){if((n||r)&&this.type===F.colon&&this.unexpected(),this.eat(F.colon))e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,o),e.kind="init";else if(this.options.ecmaVersion>=6&&this.type===F.parenL)t&&this.unexpected(),e.kind="init",e.method=!0,e.value=this.parseMethod(n,r);else if(this.options.ecmaVersion>=5&&!e.computed&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)&&this.type!=F.comma&&this.type!=F.braceR){(n||r||t)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),e.value=this.parseMethod(!1);var a="get"===e.kind?0:1;if(e.value.params.length!==a){var u=e.value.start;"get"===e.kind?this.raiseRecoverable(u,"getter should have no params"):this.raiseRecoverable(u,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")}else this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?((this.keywords.test(e.key.name)||(this.strict?this.reservedWordsStrict:this.reservedWords).test(e.key.name)||this.inGenerator&&"yield"==e.key.name||this.inAsync&&"await"==e.key.name)&&this.raiseRecoverable(e.key.start,"'"+e.key.name+"' can not be used as shorthand property"),e.kind="init",t?e.value=this.parseMaybeDefault(i,s,e.key):this.type===F.eq&&o?(o.shorthandAssign||(o.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,s,e.key)):e.value=e.key,e.shorthand=!0):this.unexpected()},Q.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(F.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(F.bracketR),e.key;e.computed=!1}return e.key=this.type===F.num||this.type===F.string?this.parseExprAtom():this.parseIdent(!0)},Q.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=!1,e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Q.parseMethod=function(e,t){var n=this.startNode(),r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=e),this.options.ecmaVersion>=8&&(n.async=!!t),this.inGenerator=n.generator,this.inAsync=n.async,this.yieldPos=0,this.awaitPos=0,this.expect(F.parenL),n.params=this.parseBindingList(F.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.finishNode(n,"FunctionExpression")},Q.parseArrowExpression=function(e,t,n){var r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos;return this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.inGenerator=!1,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.finishNode(e,"ArrowFunctionExpression")},Q.parseFunctionBody=function(e,t){var n=t&&this.type!==F.braceL;if(n)e.body=this.parseMaybeAssign(),e.expression=!0;else{var r=this.inFunction,i=this.labels;this.inFunction=!0,this.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.inFunction=r,this.labels=i}var s=!n&&e.body.body.length&&this.isUseStrict(e.body.body[0])?e.body.body[0]:null;if(s&&this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params)&&this.raiseRecoverable(s.start,"Illegal 'use strict' directive in function with non-simple parameter list"),this.strict||s){var o=this.strict;this.strict=!0,e.id&&this.checkLVal(e.id,!0),this.checkParams(e),this.strict=o}else!t&&this.isSimpleParamList(e.params)||this.checkParams(e)},Q.isSimpleParamList=function(e){for(var t=0;t=6||this.input.slice(this.start,this.end).indexOf("\\")==-1)&&this.raiseRecoverable(this.start,"The keyword '"+this.value+"' is reserved"),this.inGenerator&&"yield"===this.value&&this.raiseRecoverable(this.start,"Can not use 'yield' as identifier inside a generator"),this.inAsync&&"await"===this.value&&this.raiseRecoverable(this.start,"Can not use 'await' as identifier inside an async function"),t.name=this.value):e&&this.type.keyword?t.name=this.type.keyword:this.unexpected(),this.next(),this.finishNode(t,"Identifier")},Q.parseYield=function(){this.yieldPos||(this.yieldPos=this.start);var e=this.startNode();return this.next(),this.type==F.semi||this.canInsertSemicolon()||this.type!=F.star&&!this.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(F.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")},Q.parseAwait=function(){this.awaitPos||(this.awaitPos=this.start);var e=this.startNode();return this.next(),e.argument=this.parseMaybeUnary(null,!0),this.finishNode(e,"AwaitExpression")};var Z=U.prototype;Z.raise=function(e,t){var n=c(this.input,e);t+=" ("+n.line+":"+n.column+")";var r=new SyntaxError(t);throw r.pos=e,r.loc=n,r.raisedAt=this.pos,r},Z.raiseRecoverable=Z.raise,Z.curPosition=function(){if(this.options.locations)return new j(this.curLine,this.pos-this.lineStart)};var K=function(e,t,n){this.type="",this.start=t,this.end=0,e.options.locations&&(this.loc=new M(e,n)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},ee=U.prototype;ee.startNode=function(){return new K(this,this.start,this.startLoc)},ee.startNodeAt=function(e,t){return new K(this,e,t)},ee.finishNode=function(e,t){return f.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},ee.finishNodeAt=function(e,t,n,r){return f.call(this,e,t,n,r)};var te=function(e,t,n,r){this.token=e,this.isExpr=!!t,this.preserveSpace=!!n,this.override=r},ne={b_stat:new te("{",!1),b_expr:new te("{",!0),b_tmpl:new te("${",!0),p_stat:new te("(",!1),p_expr:new te("(",!0),q_tmpl:new te("`",!0,!0,function(e){return e.readTmplToken()}),f_expr:new te("function",!0)},re=U.prototype;re.initialContext=function(){return[ne.b_stat]},re.braceIsBlock=function(e){if(e===F.colon){var t=this.curContext();if(t===ne.b_stat||t===ne.b_expr)return!t.isExpr}return e===F._return?N.test(this.input.slice(this.lastTokEnd,this.start)):e===F._else||e===F.semi||e===F.eof||e===F.parenR||(e==F.braceL?this.curContext()===ne.b_stat:!this.exprAllowed)},re.updateContext=function(e){var t,n=this.type;n.keyword&&e==F.dot?this.exprAllowed=!1:(t=n.updateContext)?t.call(this,e):this.exprAllowed=n.beforeExpr},F.parenR.updateContext=F.braceR.updateContext=function(){if(1==this.context.length)return void(this.exprAllowed=!0);var e=this.context.pop();e===ne.b_stat&&this.curContext()===ne.f_expr?(this.context.pop(),this.exprAllowed=!1):e===ne.b_tmpl?this.exprAllowed=!0:this.exprAllowed=!e.isExpr},F.braceL.updateContext=function(e){this.context.push(this.braceIsBlock(e)?ne.b_stat:ne.b_expr),this.exprAllowed=!0},F.dollarBraceL.updateContext=function(){this.context.push(ne.b_tmpl),this.exprAllowed=!0},F.parenL.updateContext=function(e){var t=e===F._if||e===F._for||e===F._with||e===F._while;this.context.push(t?ne.p_stat:ne.p_expr),this.exprAllowed=!0},F.incDec.updateContext=function(){},F._function.updateContext=function(e){e.beforeExpr&&e!==F.semi&&e!==F._else&&(e!==F.colon&&e!==F.braceL||this.curContext()!==ne.b_stat)&&this.context.push(ne.f_expr),this.exprAllowed=!1},F.backQuote.updateContext=function(){this.curContext()===ne.q_tmpl?this.context.pop():this.context.push(ne.q_tmpl),this.exprAllowed=!1};var ie=function(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,e.options.locations&&(this.loc=new M(e,e.startLoc,e.endLoc)),e.options.ranges&&(this.range=[e.start,e.end])},se=U.prototype,oe="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);se.next=function(){this.options.onToken&&this.options.onToken(new ie(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},se.getToken=function(){return this.next(),new ie(this)},"undefined"!=typeof Symbol&&(se[Symbol.iterator]=function(){var e=this;return{next:function(){var t=e.getToken();return{done:t.type===F.eof,value:t}}}}),se.setStrict=function(e){var t=this;if(this.strict=e,this.type===F.num||this.type===F.string){if(this.pos=this.start,this.options.locations)for(;this.pos=this.input.length?this.finishToken(F.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},se.readToken=function(e){return n(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},se.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=57344)return e;var t=this.input.charCodeAt(this.pos+1);return(e<<10)+t-56613888},se.skipBlockComment=function(){var e=this,t=this.options.onComment&&this.curPosition(),n=this.pos,r=this.input.indexOf("*/",this.pos+=2);if(r===-1&&this.raise(this.pos-2,"Unterminated comment"),this.pos=r+2,this.options.locations){$.lastIndex=n;for(var i;(i=$.exec(this.input))&&i.index8&&t<14||t>=5760&&B.test(String.fromCharCode(t))))break e;++e.pos}}},se.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},se.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(F.ellipsis)):(++this.pos,this.finishToken(F.dot))},se.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(F.assign,2):this.finishOp(F.slash,1)},se.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?F.star:F.modulo;return this.options.ecmaVersion>=7&&42===t&&(++n,r=F.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(F.assign,n+1):this.finishOp(r,n)},se.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.finishOp(124===e?F.logicalOR:F.logicalAND,2):61===t?this.finishOp(F.assign,2):this.finishOp(124===e?F.bitwiseOR:F.bitwiseAND,1)},se.readToken_caret=function(){var e=this.input.charCodeAt(this.pos+1);return 61===e?this.finishOp(F.assign,2):this.finishOp(F.bitwiseXOR,1)},se.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45==t&&62==this.input.charCodeAt(this.pos+2)&&N.test(this.input.slice(this.lastTokEnd,this.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(F.incDec,2):61===t?this.finishOp(F.assign,2):this.finishOp(F.plusMin,1)},se.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(F.assign,n+1):this.finishOp(F.bitShift,n)):33==t&&60==e&&45==this.input.charCodeAt(this.pos+2)&&45==this.input.charCodeAt(this.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(n=2),this.finishOp(F.relational,n))},se.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(F.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(F.arrow)):this.finishOp(61===e?F.eq:F.prefix,1)},se.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(F.parenL);case 41:return++this.pos,this.finishToken(F.parenR);case 59:return++this.pos,this.finishToken(F.semi);case 44:return++this.pos,this.finishToken(F.comma);case 91:return++this.pos,this.finishToken(F.bracketL);case 93:return++this.pos,this.finishToken(F.bracketR);case 123:return++this.pos,this.finishToken(F.braceL);case 125:return++this.pos,this.finishToken(F.braceR);case 58:return++this.pos,this.finishToken(F.colon);case 63:return++this.pos,this.finishToken(F.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(F.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(F.prefix,1)}this.raise(this.pos,"Unexpected character '"+y(e)+"'")},se.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)};var ae=!!d("￿","u");se.readRegexp=function(){for(var e,t,n=this,r=this.pos;;){n.pos>=n.input.length&&n.raise(r,"Unterminated regular expression");var i=n.input.charAt(n.pos);if(N.test(i)&&n.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++n.pos}var s=this.input.slice(r,this.pos);++this.pos;var o=this.readWord1(),a=s,u="";if(o){var c=/^[gim]*$/;this.options.ecmaVersion>=6&&(c=/^[gimuy]*$/),c.test(o)||this.raise(r,"Invalid regular expression flag"),o.indexOf("u")>=0&&(ae?u="u":(a=a.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(e,t,i){return t=Number("0x"+t),t>1114111&&n.raise(r+i+3,"Code point out of bounds"),"x"}),a=a.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),u=u.replace("u","")))}var l=null;return oe||(d(a,u,r,this),l=d(s,o)),this.finishToken(F.regexp,{pattern:s,flags:o,value:l})},se.readInt=function(e,t){for(var n=this,r=this.pos,i=0,s=0,o=null==t?1/0:t;s=97?u-97+10:u>=65?u-65+10:u>=48&&u<=57?u-48:1/0,a>=e)break;++n.pos,i=i*e+a}return this.pos===r||null!=t&&this.pos-r!==t?null:i},se.readRadixNumber=function(e){this.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.start+2,"Expected number in radix "+e),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(F.num,t)},se.readNumber=function(e){var t=this.pos,r=!1,i=48===this.input.charCodeAt(this.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number"),i&&this.pos==t+1&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),r=!0,s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(s=this.input.charCodeAt(++this.pos),43!==s&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var o,a=this.input.slice(t,this.pos);return r?o=parseFloat(a):i&&1!==a.length?/[89]/.test(a)||this.strict?this.raise(t,"Invalid number"):o=parseInt(a,8):o=parseInt(a,10),this.finishToken(F.num,o)},se.readCodePoint=function(){var e,t=this.input.charCodeAt(this.pos);if(123===t){this.options.ecmaVersion<6&&this.unexpected();var n=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.raise(n,"Code point out of bounds")}else e=this.readHexChar(4);return e},se.readString=function(e){for(var t=this,n="",r=++this.pos;;){t.pos>=t.input.length&&t.raise(t.start,"Unterminated string constant");var i=t.input.charCodeAt(t.pos);if(i===e)break;92===i?(n+=t.input.slice(r,t.pos),n+=t.readEscapedChar(!1),r=t.pos):(o(i)&&t.raise(t.start,"Unterminated string constant"),++t.pos)}return n+=this.input.slice(r,this.pos++),this.finishToken(F.string,n)},se.readTmplToken=function(){for(var e=this,t="",n=this.pos;;){e.pos>=e.input.length&&e.raise(e.start,"Unterminated template");var r=e.input.charCodeAt(e.pos);if(96===r||36===r&&123===e.input.charCodeAt(e.pos+1))return e.pos===e.start&&e.type===F.template?36===r?(e.pos+=2,e.finishToken(F.dollarBraceL)):(++e.pos,e.finishToken(F.backQuote)):(t+=e.input.slice(n,e.pos),e.finishToken(F.template,t));if(92===r)t+=e.input.slice(n,e.pos),t+=e.readEscapedChar(!0),n=e.pos;else if(o(r)){switch(t+=e.input.slice(n,e.pos),++e.pos,r){case 13:10===e.input.charCodeAt(e.pos)&&++e.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(r)}e.options.locations&&(++e.curLine,e.lineStart=e.pos),n=e.pos}else++e.pos}},se.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return y(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),"";default:if(t>=48&&t<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),"0"!==n&&(this.strict||e)&&this.raise(this.pos-2,"Octal literal in strict mode"),this.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},se.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.raise(t,"Bad character escape sequence"),n},se.readWord1=function(){var e=this;this.containsEsc=!1;for(var t="",i=!0,s=this.pos,o=this.options.ecmaVersion>=6;this.pos=6||!this.containsEsc)&&this.keywords.test(e)&&(t=O[e]),this.finishToken(t,e)};var ue="4.0.4";e.version=ue,e.parse=m,e.parseExpressionAt=g,e.tokenizer=v,e.addLooseExports=b,e.Parser=U,e.plugins=V,e.defaultOptions=D,e.Position=j,e.SourceLocation=M,e.getLineInfo=c,e.Node=K,e.TokenType=P,e.tokTypes=F,e.TokContext=te,e.tokContexts=ne,e.isIdentifierChar=r,e.isIdentifierStart=n,e.Token=ie,e.isNewLine=o,e.lineBreak=N,e.lineBreakG=$,Object.defineProperty(e,"__esModule",{value:!0})})},{}],16:[function(e,t,n){!function(e,r){"object"==typeof n&&"undefined"!=typeof t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r((e.acorn=e.acorn||{},e.acorn.walk=e.acorn.walk||{}))}(this,function(e){"use strict";function t(t,n,r,i,s){r||(r=e.base),function e(t,i,s){var o=s||t.type,a=n[o];r[o](t,i,e),a&&a(t,i)}(t,i,s)}function n(t,n,r,i){r||(r=e.base);var s=[];!function e(t,i,o){var a=o||t.type,u=n[a],c=t!=s[s.length-1];c&&s.push(t),r[a](t,i,e),u&&u(t,i||s,s),c&&s.pop()}(t,i)}function r(t,n,r,i,s){var o=r?e.make(r,i):i;!function e(t,n,r){o[r||t.type](t,n,e)}(t,n,s)}function i(e){return"string"==typeof e?function(t){return t==e}:e?e:function(){return!0}}function s(t,n,r,s,o,a){s=i(s),o||(o=e.base);try{!function e(t,i,a){var u=a||t.type;if((null==n||t.start<=n)&&(null==r||t.end>=r)&&o[u](t,i,e),(null==n||t.start==n)&&(null==r||t.end==r)&&s(u,t))throw new h(t,i)}(t,a)}catch(e){if(e instanceof h)return e;throw e}}function o(t,n,r,s,o){r=i(r),s||(s=e.base);try{!function e(t,i,o){var a=o||t.type;if(!(t.start>n||t.end=n&&r(a,t))throw new h(t,i);s[a](t,i,e)}}(t,o)}catch(e){if(e instanceof h)return e;throw e}}function u(t,n,r,s,o){r=i(r),s||(s=e.base);var a;return function e(t,i,o){if(!(t.start>n)){var u=o||t.type;t.end<=n&&(!a||a.node.end=(t[n]||0))return!0;return!1}var i=n.versions.node.split("."),s=e("./core.json"),o={};for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)&&r(a))for(var u=0;u=0;c--)i.indexOf(a[c])===-1&&(u=u.concat(i.map(function(e){return s+r.join(r.join.apply(r,a.slice(0,c+1)),e)})));return"win32"===n.platform&&(u[u.length-1]=u[u.length-1].replace(":",":\\")),u.concat(t.paths)}}).call(this,e("_process"))},{_process:7,path:6}],26:[function(e,t,n){var r=e("./core"),i=e("fs"),s=e("path"),o=e("./caller.js"),a=e("./node-modules-paths.js");t.exports=function(e,t){function n(e){if(l(e))return e;for(var t=0;t=0&&e>1;return t?-n:n}var s=e("./base64"),o=5,a=1<>>=o,i>0&&(t|=c),n+=s.encode(t);while(i>0);return n},n.decode=function(e,t,n){var r,a,l=e.length,p=0,h=0;do{if(t>=l)throw new Error("Expected more digits in base 64 VLQ value.");if(a=s.decode(e.charCodeAt(t++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(a&c),a&=u,p+=a<0?t-u>1?r(u,t,i,s,o,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,i,s,o,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,s){if(0===t.length)return-1;var o=r(-1,t.length,e,t,i,s||n.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===i(t[o],t[o-1],!0);)--o;return o}},{}],31:[function(e,t,n){function r(e,t){var n=e.generatedLine,r=t.generatedLine,i=e.generatedColumn,o=t.generatedColumn;return r>n||r==n&&o>=i||s.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var s=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){r(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=i},{"./util":36}],32:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t){return Math.round(e+Math.random()*(t-e))}function s(e,t,n,o){if(n=0){var s=this._originalMappings[i];if(void 0===e.column)for(var o=s.originalLine;s&&s.originalLine===o;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i];else for(var c=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==c;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,i.prototype=Object.create(r.prototype),i.prototype.consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=c.fromArray(e._names.toArray(),!0),r=t._sources=c.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var o=e._mappings.toArray().slice(),u=t.__generatedMappings=[],l=t.__originalMappings=[],h=0,f=o.length;h1&&(n.source=y+i[1],y+=i[1],n.originalLine=f+i[2],f=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&w.push(n)}p(E,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(w,a.compareByOriginalPositions),this.__originalMappings=w},i.prototype._findMapping=function(e,t,n,r,i,s){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,s)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var s=a.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=a.join(this.sourceRoot,s)));var o=a.getArg(i,"name",null);return null!==o&&(o=this._names.at(o)),{source:s,line:a.getArg(i,"originalLine",null),column:a.getArg(i,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=a.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=a.getArg(e,"source");if(null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};t=this._sources.indexOf(t);var n={source:t,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===n.source)return{line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,o.prototype=Object.create(r.prototype),o.prototype.constructor=r,o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,o=0,a=1,u=0,c=0,l=0,p=0,h="",f=this._mappings.toArray(),d=0,y=f.length;d0){if(!s.compareByGeneratedPositionsInflated(t,f[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-o),o=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-l),l=n)),h+=e}return h},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var n=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":27,"./base64-vlq":28,"./mapping-list":31,"./util":36}],35:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[u]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,s=e("./util"),o=/(\r?\n)/,a=10,u="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)a.add(t);else{var i=n?s.join(n,e.source):e.source;a.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var a=new r,u=e.split(o),c=function(){var e=u.shift(),t=u.shift()||"";return e+t},l=1,p=0,h=null;return t.eachMapping(function(e){if(null!==h){if(!(l0&&(h&&i(h,c()),a.add(u.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=s.join(n,e)),a.setSourceContent(e,r))}),a},r.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},r.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;l--)o=u[l],"."===o?u.splice(l,1):".."===o?c++:c>0&&(""===o?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return t=u.join("/"),""===t&&(t=a?"/":"."),r?(r.path=t,s(r)):t}function a(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),r=i(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),s(n);if(n||t.match(v))return t;if(r&&!r.host&&!r.path)return r.host=t,s(r);var a="/"===t.charAt(0)?t:o(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=a,s(r)):a}function u(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if(e=e.slice(0,r),e.match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)}function c(e){return e}function l(e){return h(e)?"$"+e:e}function p(e){return h(e)?e.slice(1):e}function h(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function f(e,t,n){var r=e.source-t.source;return 0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r||n?r:(r=e.generatedColumn-t.generatedColumn,0!==r?r:(r=e.generatedLine-t.generatedLine,0!==r?r:e.name-t.name))))}function d(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:(r=e.generatedColumn-t.generatedColumn,0!==r||n?r:(r=e.source-t.source,0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r?r:e.name-t.name))))}function y(e,t){return e===t?0:e>t?1:-1}function m(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:(n=e.generatedColumn-t.generatedColumn,0!==n?n:(n=y(e.source,t.source),0!==n?n:(n=e.originalLine-t.originalLine,0!==n?n:(n=e.originalColumn-t.originalColumn,0!==n?n:y(e.name,t.name)))))}n.getArg=r;var g=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,v=/^data:.+\,.+$/;n.urlParse=i,n.urlGenerate=s,n.normalize=o,n.join=a,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(g)},n.relative=u;var b=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=b?c:l,n.fromSetString=b?c:p,n.compareByOriginalPositions=f,n.compareByGeneratedPositionsDeflated=d,n.compareByGeneratedPositionsInflated=m},{}],37:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":33,"./lib/source-map-generator":34,"./lib/source-node":35}],38:[function(e,t,n){t.exports={name:"nodent",version:"3.0.7",description:"NoDent - Asynchronous Javascript language extensions",main:"nodent.js",scripts:{cover:"istanbul cover ./nodent.js tests -- --quick --syntax --forceStrict ; open ./coverage/lcov-report/index.html",test:"cd tests && npm i --prod && cd .. && node --expose-gc ./nodent.js tests --syntax --quick","test-loader":"cd tests/loader/app && npm test && cd ../../..",start:"./nodent.js"},bin:{nodentjs:"./nodent.js"},dependencies:{acorn:">=2.5.2","acorn-es7-plugin":"^1.1.3","nodent-runtime":"^3.0.3",resolve:"^1.1.7","source-map":"0.5.6"},repository:{type:"git",url:"git+https://github.com/MatAtBread/nodent.git"},engines:"node >= 0.10.0",keywords:["Javascript","ES7","async","await","language","extensions","Node","callback","generator","Promise","asynchronous"],author:{name:"Mat At Bread",email:"nodent@mailed.me.uk"},license:"BSD-2-Clause",bugs:{url:"https://github.com/MatAtBread/nodent/issues"},gitHead:"8ea9feab498470d7a2c3c09326a1c17e8eeb332a",homepage:"https://github.com/MatAtBread/nodent#readme",_id:"nodent@3.0.7",_shasum:"08dd540baf834c136648aeaa9ae8ecd4bf92aa52",_from:"nodent@>=3.0.2 <4.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.7.0",_npmUser:{name:"matatbread",email:"npm@mailed.me.uk"},maintainers:[{name:"matatbread",email:"npm@mailed.me.uk"}],dist:{shasum:"08dd540baf834c136648aeaa9ae8ecd4bf92aa52",tarball:"https://registry.npmjs.org/nodent/-/nodent-3.0.7.tgz"},_npmOperationalInternal:{host:"packages-18-east.internal.npmjs.com",tmp:"tmp/nodent-3.0.7.tgz_1477471431033_0.10623699799180031"},directories:{},_resolved:"https://registry.npmjs.org/nodent/-/nodent-3.0.7.tgz",readme:"ERROR: No README data found!"}},{}],nodent:[function(e,t,n){(function(n,r,i,s,o,a,u,c){"use strict";function l(e){var t={};return e.forEach(function(e){if(e&&"object"==typeof e)for(var n in e)t[n]=e[n]}),t}function p(e){throw e}function h(){}function f(e){return"ExpressionStatement"===e.type&&("StringLiteral"===e.expression.type||"Literal"===e.expression.type&&"string"==typeof e.expression.value)}function d(t,n,r){n||(n=console.warn.bind(console));var i,s,o={};if("string"==typeof t)(i=t.match(M))&&(s=i[1]||"default");else for(var a=0;a"))}return o.promises||o.es7||o.generators||o.engine?((o.promises||o.es7)&&o.generators&&(n("No valid 'use nodent' directive, assumed -es7 mode"),o=j.es7),(o.generators||o.engine)&&(o.promises=!0),o.promises&&(o.es7=!0),o):null}function y(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),"#!"===e.substring(0,2)&&(e="//"+e),e}function m(e){var t;return t=e instanceof i?e:new i(e.toString(),"binary"),t.toString("base64")}function g(e,t){return t=t||e.log,function(n,r,i){var s=y(R.readFileSync(r,"utf8")),o=e.parse(s,r,i);i=i||d(o.ast,t,r),e.asynchronize(o,void 0,i,t),e.prettyPrint(o,i),n._compile(o.code,o.filename)}}function v(e){return e=e||q,function(t,n,r){if(Array.isArray(n)){var i=n;n=function(e,t){return i.indexOf(e)>=0}}else n=n||function(e,t){return!(e.match(/Sync$/)&&e.replace(/Sync$/,"")in t)};r||(r="");var s=Object.create(t);for(var o in s)(function(){var i=o;try{"function"!=typeof t[i]||s[i+r]&&s[i+r].isAsync||!n(i,s)||(s[i+r]=function(){var n=Array.prototype.slice.call(arguments),r=function(e,r){var s=function(t,n){if(t)return r(t);switch(arguments.length){case 0:return e();case 2:return e(n);default:return e(Array.prototype.slice.call(arguments,1))}};n.length>t[i].length?n.push(s):n[t[i].length-1]=s;t[i].apply(t,n)};return new e(r)},s[i+r].isAsync=!0)}catch(e){}})();return s.super=t,s}}function b(t,n){var r=t.filename.split("/"),i=r.pop(),s=O(t.ast,n&&n.sourcemap?{map:{startLine:n.mapStartLine||0,file:i+"(original)",sourceMapRoot:r.join("/"),sourceContent:t.origCode}}:null,t.origCode);if(n&&n.sourcemap)try{var o="",a=s.map.toJSON();if(a){var u=e("source-map").SourceMapConsumer;t.sourcemap=a,T[t.filename]={map:a,smc:new u(a)},o="\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+m(JSON.stringify(a))+"\n"}t.code=s.code+o}catch(e){t.code=s}else t.code=s;return t}function x(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n);var i={origCode:e.toString(),filename:t};try{return i.ast=F.parse(i.origCode,r&&r.parser),r.babelTree&&F.treeWalker(i.ast,function(e,t,n){"Literal"===e.type?n[0].replace(N.babelLiteralNode(e.value)):"Property"===e.type&&("ClassBody"===n[0].parent.type?e.type="ClassProperty":e.type="ObjectProperty"),t()}),i}catch(e){if(e instanceof SyntaxError){var s=i.origCode.substr(e.pos-e.loc.column);s=s.split("\n")[0],e.message+=" "+t+" (nodent)\n"+s+"\n"+s.replace(/[\S ]/g,"-").substring(0,e.loc.column)+"^",e.stack=""}throw e}}function w(t,n){n=n||{};var r=t+"|"+Object.keys(n).sort().reduce(function(e,t){return e+t+JSON.stringify(n[t])},"");return this.covers[r]||(t.indexOf("/")>=0?this.covers[r]=e(t):this.covers[r]=e(c+"/covers/"+t)),this.covers[r](this,n)}function E(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n),r=r||{};for(var i in I)i in r||(r[i]=I[i]);var s=this.parse(e,t,null,r);return this.asynchronize(s,null,r,this.log||h),this.prettyPrint(s,r),s}function S(t,n,r){var i={},s=this;n||(n=/\.njs$/),r?r.compiler||(r.compiler={}):r={compiler:{}};var o=l([B,r.compiler]);return function(a,u,c){function l(e){u.statusCode=500,u.write(e.toString()),u.end()}if(i[a.url])return u.setHeader("Content-Type",i[a.url].contentType),r.setHeaders&&r.setHeaders(u),u.write(i[a.url].output),void u.end();if(!(a.url.match(n)||r.htmlScriptRegex&&a.url.match(r.htmlScriptRegex)))return c&&c();var p=t+a.url;if(r.extensions&&!R.existsSync(p))for(var h=0;h …"+n.source+":"+n.line+":"+n.column+(e.getFunctionName()?")":"")}}return"\n    at "+e}return e+t.map(n).join("")}function _(e){var t={};t[I.$asyncbind]={value:V,writable:!0,enumerable:!1,configurable:!0},t[I.$asyncspawn]={value:U,writable:!0,enumerable:!1,configurable:!0};try{Object.defineProperties(Function.prototype,t)}catch(t){e.log("Function prototypes already assigned: ",t.messsage)}I[I.$error]in r||(r[I[I.$error]]=p),e.augmentObject&&Object.defineProperties(Object.prototype,{asyncify:{value:function(e,t,n){return v(e)(this,t,n)},writable:!0,configurable:!0},isThenable:{value:function(){return q.isThenable(this)},writable:!0,configurable:!0}}),Object[I.$makeThenable]=q.resolve}function C(t){function n(e,t){e=e.split("."),t=t.split(".");for(var n=0;n<3;n++){if(e[n]t[n])return 1}return 0}function r(i,s){if(!s.match(/nodent\/nodent\.js$/)){if(s.match(/node_modules\/nodent\/.*\.js$/))return P(i,s);for(var u=0;u=3&&L()}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/nodent")},{"./htmlScriptParser":8,"./lib/arboriculture":9,"./lib/output":10,"./lib/parser":11,"./package.json":38,_process:7,buffer:2,fs:1,"nodent-runtime":17,path:6,resolve:20,"source-map":37}]},{},[]);
\ No newline at end of file
+require=function e(t,n,r){function i(o,a){if(!n[o]){if(!t[o]){var u="function"==typeof require&&require;if(!a&&u)return u(o,!0);if(s)return s(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return i(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}for(var s="function"==typeof require&&require,o=0;o=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),o.alloc(+e)}function g(e,t){if(o.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return z(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return J(e).length;default:if(r)return z(e).length;t=(""+t).toLowerCase(),r=!0}}function v(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return F(this,t,n);case"utf8":case"utf-8":return P(this,t,n);case"ascii":return R(this,t,n);case"latin1":case"binary":return O(this,t,n);case"base64":return L(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return N(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function b(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function x(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=o.from(t,r)),o.isBuffer(t))return 0===t.length?-1:w(e,t,n,r,i);if("number"==typeof t)return t&=255,o.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):w(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function w(e,t,n,r,i){function s(e,t){return 1===o?e[t]:e.readUInt16BE(t*o)}var o=1,a=e.length,u=t.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;o=2,a/=2,u/=2,n/=2}var c;if(i){var l=-1;for(c=n;ca&&(n=a-u),c=n;c>=0;c--){for(var p=!0,h=0;hi&&(r=i)):r=i;var s=t.length;if(s%2!==0)throw new TypeError("Invalid hex string");r>s/2&&(r=s/2);for(var o=0;o239?4:s>223?3:s>191?2:1;if(i+a<=n){var u,c,l,p;switch(a){case 1:s<128&&(o=s);break;case 2:u=e[i+1],128===(192&u)&&(p=(31&s)<<6|63&u,p>127&&(o=p));break;case 3:u=e[i+1],c=e[i+2],128===(192&u)&&128===(192&c)&&(p=(15&s)<<12|(63&u)<<6|63&c,p>2047&&(p<55296||p>57343)&&(o=p));break;case 4:u=e[i+1],c=e[i+2],l=e[i+3],128===(192&u)&&128===(192&c)&&128===(192&l)&&(p=(15&s)<<18|(63&u)<<12|(63&c)<<6|63&l,p>65535&&p<1114112&&(o=p))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,r.push(o>>>10&1023|55296),o=56320|1023&o),r.push(o),i+=a}return T(r)}function T(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr)&&(n=r);for(var i="",s=t;sn)throw new RangeError("Trying to access beyond buffer length")}function B(e,t,n,r,i,s){if(!o.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function I(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,s=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function j(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,s=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function M(e,t,n,r,i,s){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function D(e,t,n,r,i){return i||M(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),Z.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,i){return i||M(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),Z.write(e,t,n,r,52,8),n+8}function U(e){if(e=q(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function q(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function W(e){return e<16?"0"+e.toString(16):e.toString(16)}function z(e,t){t=t||1/0;for(var n,r=e.length,i=null,s=[],o=0;o55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&s.push(239,191,189);continue}if(o+1===r){(t-=3)>-1&&s.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&s.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&s.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;s.push(n)}else if(n<2048){if((t-=2)<0)break;s.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;s.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;s.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return s}function Y(e){for(var t=[],n=0;n>8,i=n%256,s.push(i),s.push(r);return s}function J(e){return X.toByteArray(U(e))}function H(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function Q(e){return e!==e}var X=e("base64-js"),Z=e("ieee754"),K=e("isarray");n.Buffer=o,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,o.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),n.kMaxLength=i(),o.poolSize=8192,o._augment=function(e){return e.__proto__=o.prototype,e},o.from=function(e,t,n){return a(null,e,t,n)},o.TYPED_ARRAY_SUPPORT&&(o.prototype.__proto__=Uint8Array.prototype,o.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&o[Symbol.species]===o&&Object.defineProperty(o,Symbol.species,{value:null,configurable:!0})),o.alloc=function(e,t,n){return c(null,e,t,n)},o.allocUnsafe=function(e){return l(null,e)},o.allocUnsafeSlow=function(e){return l(null,e)},o.isBuffer=function(e){return!(null==e||!e._isBuffer)},o.compare=function(e,t){if(!o.isBuffer(e)||!o.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,s=Math.min(n,r);i0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},o.prototype.compare=function(e,t,n,r,i){if(!o.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var s=i-r,a=n-t,u=Math.min(s,a),c=this.slice(r,i),l=e.slice(t,n),p=0;pi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var s=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return S(this,e,t,n);case"ascii":return k(this,e,t,n);case"latin1":case"binary":return A(this,e,t,n);case"base64":return _(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return C(this,e,t,n);default:if(s)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),s=!0}},o.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;o.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t0&&(i*=256);)r+=this[e+--t]*i;return r},o.prototype.readUInt8=function(e,t){return t||$(e,1,this.length),this[e]},o.prototype.readUInt16LE=function(e,t){return t||$(e,2,this.length),this[e]|this[e+1]<<8},o.prototype.readUInt16BE=function(e,t){return t||$(e,2,this.length),this[e]<<8|this[e+1]},o.prototype.readUInt32LE=function(e,t){return t||$(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},o.prototype.readUInt32BE=function(e,t){return t||$(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},o.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||$(e,t,this.length);for(var r=this[e],i=1,s=0;++s=i&&(r-=Math.pow(2,8*t)),r},o.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||$(e,t,this.length);for(var r=t,i=1,s=this[e+--r];r>0&&(i*=256);)s+=this[e+--r]*i;return i*=128,s>=i&&(s-=Math.pow(2,8*t)),s},o.prototype.readInt8=function(e,t){return t||$(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},o.prototype.readInt16LE=function(e,t){t||$(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt16BE=function(e,t){t||$(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},o.prototype.readInt32LE=function(e,t){return t||$(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},o.prototype.readInt32BE=function(e,t){return t||$(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},o.prototype.readFloatLE=function(e,t){return t||$(e,4,this.length),Z.read(this,e,!0,23,4)},o.prototype.readFloatBE=function(e,t){return t||$(e,4,this.length),Z.read(this,e,!1,23,4)},o.prototype.readDoubleLE=function(e,t){return t||$(e,8,this.length),Z.read(this,e,!0,52,8)},o.prototype.readDoubleBE=function(e,t){return t||$(e,8,this.length),Z.read(this,e,!1,52,8)},o.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t|=0,n|=0,!r){B(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=1,s=0;for(this[t]=255&e;++s=0&&(s*=256);)this[t+i]=e/s&255;return t+n},o.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,1,255,0),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},o.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},o.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,65535,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},o.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):j(this,e,t,!0),t+4},o.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,4294967295,0),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},o.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);B(this,e,t,n,i-1,-i)}var s=0,o=1,a=0;for(this[t]=255&e;++s>0)-a&255;return t+n},o.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);B(this,e,t,n,i-1,-i)}var s=n-1,o=1,a=0;for(this[t+s]=255&e;--s>=0&&(o*=256);)e<0&&0===a&&0!==this[t+s+1]&&(a=1),this[t+s]=(e/o>>0)-a&255;return t+n},o.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,1,127,-128),o.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},o.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):I(this,e,t,!0),t+2},o.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,2,32767,-32768),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):I(this,e,t,!1),t+2},o.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,2147483647,-2147483648),o.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):j(this,e,t,!0),t+4},o.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||B(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),o.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):j(this,e,t,!1),t+4},o.prototype.writeFloatLE=function(e,t,n){return D(this,e,t,!0,n)},o.prototype.writeFloatBE=function(e,t,n){return D(this,e,t,!1,n)},o.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},o.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},o.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(s<1e3||!o.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var s;if("number"==typeof e)for(s=t;s0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-r(e)}function s(e){var t,n,i,s,o,a,u=e.length;o=r(e),a=new p(3*u/4-o),i=o>0?u-4:u;var c=0;for(t=0,n=0;t>16&255,a[c++]=s>>8&255,a[c++]=255&s;return 2===o?(s=l[e.charCodeAt(t)]<<2|l[e.charCodeAt(t+1)]>>4,a[c++]=255&s):1===o&&(s=l[e.charCodeAt(t)]<<10|l[e.charCodeAt(t+1)]<<4|l[e.charCodeAt(t+2)]>>2,a[c++]=s>>8&255,a[c++]=255&s),a}function o(e){return c[e>>18&63]+c[e>>12&63]+c[e>>6&63]+c[63&e]}function a(e,t,n){for(var r,i=[],s=t;sl?l:u+o));return 1===r?(t=e[n-1],i+=c[t>>2],i+=c[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=c[t>>10],i+=c[t>>4&63],i+=c[t<<2&63],i+="="),s.push(i),s.join("")}n.byteLength=i,n.toByteArray=s,n.fromByteArray=u;for(var c=[],l=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",f=0,d=h.length;f>1,l=-7,p=n?i-1:0,h=n?-1:1,f=e[t+p];for(p+=h,s=f&(1<<-l)-1,f>>=-l,l+=a;l>0;s=256*s+e[t+p],p+=h,l-=8);for(o=s&(1<<-l)-1,s>>=-l,l+=r;l>0;o=256*o+e[t+p],p+=h,l-=8);if(0===s)s=1-c;else{if(s===u)return o?NaN:(f?-1:1)*(1/0);o+=Math.pow(2,r),s-=c}return(f?-1:1)*o*Math.pow(2,s-r)},n.write=function(e,t,n,r,i,s){var o,a,u,c=8*s-i-1,l=(1<>1,h=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,f=r?0:s-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(a=isNaN(t)?1:0,o=l):(o=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-o))<1&&(o--,u*=2),t+=o+p>=1?h/u:h*Math.pow(2,1-p),t*u>=2&&(o++,u/=2),o+p>=l?(a=0,o=l):o+p>=1?(a=(t*u-1)*Math.pow(2,i),o+=p):(a=t*Math.pow(2,p-1)*Math.pow(2,i),o=0));i>=8;e[n+f]=255&a,f+=d,a/=256,i-=8);for(o=o<0;e[n+f]=255&o,f+=d,o/=256,c-=8);e[n+f-d]|=128*y}},{}],5:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],6:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;s--){var o=s>=0?arguments[s]:e.cwd();if("string"!=typeof o)throw new TypeError("Arguments to path.resolve must be strings");o&&(n=o+"/"+n,i="/"===o.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),s="/"===o(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"),e||i||(e="."),e&&s&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),s=r(t.split("/")),o=Math.min(i.length,s.length),a=o,u=0;u1)for(var n=1;n]*>)(.*)/i,/(.*)(<\/script>)(.*)/i],o=0,a=!0;t=t.split("\n");for(var u=0;u0){if(!a(e).isAsync)return t(e);delete e.async}return e.type="ReturnStatement",e.$mapped=!0,void(e.argument={type:"CallExpression",callee:_(i,[n]).$error,arguments:[e.argument]})}return a(e).isFunction?(r++,t(e),void r--):void t(e)}if(r>0){if(!a(e).isAsync)return t(e);delete e.async}
+return e.$mapped=!0,void(a(e.argument).isUnaryExpression&&"void"===e.argument.operator?e.argument=e.argument.argument:e.argument={type:"CallExpression",callee:_(i,[n]).$return,arguments:e.argument?[e.argument]:[]})},t)}function N(e,t){return Array.isArray(e)?e.map(function(e){return N(e,t)}):(m.treeWalker(e,function(e,t,n){if(t(),"ConditionalExpression"===e.type&&(c(e.alternate)||c(e.consequent))){f(S("condOp"));s(e,P(m.part("if ($0) return $1 ; return $2",[e.test,e.consequent,e.alternate]).body))}},t),e)}function $(e,t){return Array.isArray(e)?e.map(function(e){return $(e,t)}):(m.treeWalker(e,function(e,t,n){if(t(),"LogicalExpression"===e.type&&c(e.right)){var r,i=f(S("logical"+("&&"===e.operator?"And":"Or")));if("||"===e.operator)r="var $0; if (!($0 = $1)) {$0 = $2} return $0";else{if("&&"!==e.operator)throw new Error(b(e)+"Illegal logical operator: "+e.operator);r="var $0; if ($0 = $1) {$0 = $2} return $0"}s(e,P(m.part(r,[i,e.left,e.right]).body))}},t),e)}function B(e,t,n){if("SwitchCase"!==e.type&&a(e).isBlockStatement)for(var r=0;r0&&a(e).isAsync)return delete e.async,e.argument={type:"CallExpression",callee:"ThrowStatement"===e.type?ge.error:ge.return,arguments:e.argument?[e.argument]:[]},void(e.type="ReturnStatement");n(e)})}function ee(e,t){if(n.noRuntime)throw new Error("Nodent: 'noRuntime' option only compatible with -promise and -engine modes");return m.part("{ return (function*($return,$error){ $:body }).$asyncspawn(Promise,this) }",{return:ge.return,error:ge.error,asyncspawn:ge.asyncspawn,body:K(e).concat(t?[{type:"ReturnStatement",argument:ge.return}]:[])}).body[0]}function te(e){e.$asyncgetwarninig||(e.$asyncgetwarninig=!0,y(b(e)+"'async get "+r(e)+"(){...}' is non-standard. See https://github.com/MatAtBread/nodent#differences-from-the-es7-specification"))}function ne(e,t){function r(e,t){m.treeWalker(e,function(n,r,i){n!==e&&a(n).isFunction||(a(n).isAwait?t?(n.$hidden=!0,r()):(delete n.operator,n.delegate=!1,n.type="YieldExpression",r()):r())})}function o(e){var t=n.promises;n.promises=!0,C(e,!0),n.promises=t}function u(e){return"BlockStatement"!==e.body.type&&(e.body={type:"BlockStatement",body:[{type:"ReturnStatement",argument:e.body}]}),e}function c(e,n){n.$asyncexitwarninig||(n.$asyncexitwarninig=!0,y(b(e)+"'async "+{ReturnStatement:"return",ThrowStatement:"throw"}[e.type]+"' not possible in "+(t?"engine":"generator")+" mode. Using Promises for function at "+b(n)))}m.treeWalker(e,function(e,n,i){n();var l,p,h;if(a(e).isAsync&&a(e).isFunction){var f;(f=w(i[0].parent))&&a(f).isAsync&&"get"===i[0].parent.kind&&te(i[0].parent.key),(p=Q(e.body))?(c(p,e.body),o(e)):t?"get"!==i[0].parent.kind&&r(e,!0):(l=e,delete l.async,h=E(l),r(l,!1),l=u(l),l.body=ee(l.body.body,p),h&&V(l.body.body,[ve]),l.id&&"ExpressionStatement"===i[0].parent.type?(l.type="FunctionDeclaration",i[1].replace(l)):i[0].replace(l))}else(l=w(e))&&a(l).isAsync&&((p=Q(l))?(c(p,l),o(e)):t&&"get"!==e.kind||(t?o(e):(e.async=!1,h=E(l),r(l,!1),s(l,u(l)),l.body=ee(l.body.body,p)),h&&V(l.body.body,[ve])))});var l=i(n);return n.engine=!1,n.generators=!1,le(e),ae(e),D(e,l.engine),$(e),N(e),W(e,[q,J,I,j,B]),z(e,"warn"),n.engine=l.engine,n.generators=l.generators,e}function re(e,t,n){var r=[];return m.treeWalker(e,function(i,s,o){return i===e?s():t(i,o)?void r.push([].concat(o)):void(n||a(i).isScope||s())}),r}function ie(e,t){var n=[],r={};if(e=e.filter(function(e){return"ExportNamedDeclaration"!==e[0].parent.type}),e.length){var s={};e.forEach(function(e){function t(e){e in s?r[e]=o.declarations[u]:s[e]=o.declarations[u]}for(var n=e[0],o=n.self,a=(o.kind,[]),u=0;u1?{type:"SequenceExpression",expressions:a}:a[0];"For"!==n.parent.type.slice(0,3)&&(p={type:"ExpressionStatement",expression:p}),n.replace(p)}});var o=Object.keys(s);o.length&&(o=o.map(function(e){return{type:"VariableDeclarator",id:f(e),loc:s[e].loc,start:s[e].start,end:s[e].end}}),n[0]&&"VariableDeclaration"===n[0].type?n[0].declarations=n[0].declarations.concat(o):n.unshift({type:"VariableDeclaration",kind:t,declarations:o}))}return{decls:n,duplicates:r}}function se(e){if(!e)return[];if(Array.isArray(e))return e.reduce(function(e,t){return e.concat(se(t.id))},[]);switch(e.type){case"Identifier":return[e.name];case"ArrayPattern":return e.elements.reduce(function(e,t){return e.concat(se(t))},[]);case"ObjectPattern":return e.properties.reduce(function(e,t){return e.concat(se(t))},[]);case"ObjectProperty":case"Property":return se(e.value);case"RestElement":case"RestProperty":return se(e.argument)}}function oe(e){function t(e){y(b(e)+"Possible assignment to 'const "+r(e)+"'")}function n(e){switch(e.type){case"Identifier":"const"===i[e.name]&&t(e);break;case"ArrayPattern":e.elements.forEach(function(e){"const"===i[e.name]&&t(e)});break;case"ObjectPattern":e.properties.forEach(function(e){"const"===i[e.key.name]&&t(e)})}}var i={};m.treeWalker(e,function(e,t,r){var s=a(e).isBlockStatement;if(s){i=Object.create(i);for(var o=0;o=0){var r=n[0];return("left"!=r.field||"ForInStatement"!==r.parent.type&&"ForOfStatement"!==r.parent.type)&&("init"!=r.field||"ForStatement"!==r.parent.type||"const"!==t.kind&&"let"!==t.kind)}}}function n(e,t){return!("FunctionDeclaration"!==e.type||!e.id)&&(a(e).isAsync||!e.$continuation)}oe(e);var i=!1;return m.treeWalker(e,function(e,s,o){var u=i;if(i=i||he(e),a(e).isBlockStatement){if(c(e)){var l,p,h,d,m,g=!o[0].parent||a(o[0].parent).isScope;if(g){p=re(e,t(["const"]),!1);var v={},x={};p.forEach(function(e){e[0].self.declarations.forEach(function(e){se(e.id).forEach(function(t){v[t]||x[t]?(delete v[t],x[t]=e):v[t]=e})})}),p.forEach(function(e){for(var t=0;t=0&&"ReturnStatement"===r[1].self.type){var s=e.$thisCallName,o=i(ye[s].def.body.body);ye[s].$inlined=!0,a(r[1].self).isJump||o.push({type:"ReturnStatement"}),r[1].replace(o)}});var n=Object.keys(ye).map(function(e){return ye[e].$inlined&&ye[e].def});m.treeWalker(e,function(e,t,r){t(),n.indexOf(e)>=0&&r[0].remove()})}if("Program"!==e.type&&"module"!==e.sourceType||!u(e,function(e){return a(e).isES6},!0)){var r=he(e);!function(e){m.treeWalker(e,function(e,t,n){if("Program"===e.type||"FunctionDeclaration"===e.type||"FunctionExpression"===e.type){var i=r;if(r=r||he(e)){t();var s="Program"===e.type?e:e.body,o=re(s,function(e,t){if("FunctionDeclaration"===e.type)return t[0].parent!==s});o=o.map(function(e){return e[0].remove()}),[].push.apply(s.body,o)}else t();r=i}else t()})}(e)}return m.treeWalker(e,function(e,t,n){t(),Object.keys(e).filter(function(e){return"$"===e[0]}).forEach(function(t){delete e[t]})}),e}var ye={},me=1,ge={};Object.keys(n).filter(function(e){return"$"===e[0]}).forEach(function(e){ge[e.slice(1)]=f(n[e])});var ve=m.part("var $0 = arguments",[ge.arguments]).body[0];return n.engine?(e.ast=ce(e.ast,!0),e.ast=ne(e.ast,n.engine),e.ast=pe(e.ast),de(e.ast)):n.generators?(e.ast=ce(e.ast),e.ast=ne(e.ast),e.ast=pe(e.ast),de(e.ast)):(e.ast=ce(e.ast),C(e.ast)),n.babelTree&&m.treeWalker(e.ast,function(e,t,n){t(),"Literal"===e.type&&s(e,x(e.value))}),e}var m=e("./parser"),g=e("./output"),v={start:!0,end:!0,loc:!0,range:!0},b={getScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type?this.node.body.body:"Program"===this.node.type?this.node.body:null},isScope:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"Program"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type&&"BlockStatement"===this.node.body.type},isFunction:function(){return"FunctionDeclaration"===this.node.type||"FunctionExpression"===this.node.type||"Function"===this.node.type||"ObjectMethod"===this.node.type||"ClassMethod"===this.node.type||"ArrowFunctionExpression"===this.node.type},isClass:function(){return"ClassDeclaration"===this.node.type||"ClassExpression"===this.node.type},isBlockStatement:function(){return"ClassBody"===this.node.type||"Program"===this.node.type||"BlockStatement"===this.node.type?this.node.body:"SwitchCase"===this.node.type&&this.node.consequent},isExpressionStatement:function(){return"ExpressionStatement"===this.node.type},isLiteral:function(){return"Literal"===this.node.type||"BooleanLiteral"===this.node.type||"RegExpLiteral"===this.node.type||"NumericLiteral"===this.node.type||"StringLiteral"===this.node.type||"NullLiteral"===this.node.type},isDirective:function(){return"ExpressionStatement"===this.node.type&&("StringLiteral"===this.node.expression.type||"Literal"===this.node.expression.type&&"string"==typeof this.node.expression.value)},isUnaryExpression:function(){return"UnaryExpression"===this.node.type},isAwait:function(){return"AwaitExpression"===this.node.type&&!this.node.$hidden},isAsync:function(){return this.node.async},isStatement:function(){return null!==this.node.type.match(/[a-zA-Z]+Declaration/)||null!==this.node.type.match(/[a-zA-Z]+Statement/)},isExpression:function(){return null!==this.node.type.match(/[a-zA-Z]+Expression/)},isLoop:function(){return"ForStatement"===this.node.type||"WhileStatement"===this.node.type||"DoWhileStatement"===this.node.type},isJump:function(){return"ReturnStatement"===this.node.type||"ThrowStatement"===this.node.type||"BreakStatement"===this.node.type||"ContinueStatement"===this.node.type},isES6:function(){switch(this.node.type){case"ExportNamedDeclaration":case"ExportSpecifier":case"ExportDefaultDeclaration":case"ExportAllDeclaration":case"ImportDeclaration":case"ImportSpecifier":case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ArrowFunctionExpression":case"ForOfStatement":case"YieldExpression":case"Super":case"RestElement":case"RestProperty":case"SpreadElement":case"TemplateLiteral":case"ClassDeclaration":case"ClassExpression":return!0;case"VariableDeclaration":return this.node.kind&&"var"!==this.node.kind;case"FunctionDeclaration":case"FunctionExpression":return!!this.node.generator}}},x={};Object.keys(b).forEach(function(e){Object.defineProperty(x,e,{get:b[e]})}),t.exports={printNode:r,babelLiteralNode:h,asynchronize:function(e,t,n,r){try{return y(e,t,n,r)}catch(t){if(t instanceof SyntaxError){var i=e.origCode.substr(t.pos-t.loc.column);i=i.split("\n")[0],t.message+=" (nodent)\n"+i+"\n"+i.replace(/[\S ]/g,"-").substring(0,t.loc.column)+"^",t.stack=""}throw t}}}},{"./output":10,"./parser":11}],10:[function(e,t,n){"use strict";function r(e){var t=y[e.type]||y[e.type+e.operator]||y[e.type+e.operator+(e.prefix?"prefix":"")];return void 0!==t?t:20}
+function i(e,t,n){var r=this[n||e.type];r?r.call(this,e,t):t.write(e,"/*"+e.type+"?*/ "+t.sourceAt(e.start,e.end))}function s(e,t,n,i){2===i||r(n)0){this.out(e[0],t,e[0].type);for(var r=1,i=e.length;r>":13,"BinaryExpression>>>":13,"BinaryExpression<":12,"BinaryExpression<=":12,"BinaryExpression>":12,"BinaryExpression>=":12,BinaryExpressionin:12,BinaryExpressioninstanceof:12,"BinaryExpression==":11,"BinaryExpression===":11,"BinaryExpression!=":11,"BinaryExpression!==":11,"BinaryExpression&":10,"BinaryExpression^":9,"BinaryExpression|":8,"LogicalExpression&&":7,"LogicalExpression||":6,ConditionalExpression:5,AssignmentPattern:4,AssignmentExpression:4,yield:3,YieldExpression:3,SpreadElement:2,"comma-separated-list":1.5,SequenceExpression:1},m={type:"comma-separated-list"},g={out:i,expr:s,formatParameters:o,Program:function(e,t){var n,r,i=h(t.indent,t.indentLevel),s=t.lineEnd;n=e.body;for(var o=0,a=n.length;o0){t.write(null,s);for(var a=0,u=n.length;a0){this.out(n[0],t,"VariableDeclarator");for(var i=1;i0){for(var n=0;n0)for(var r=0;r "),"ObjectExpression"===e.body.type||"SequenceExpression"===e.body.type?(t.write(null,"("),this.out(e.body,t,e.body.type),t.write(null,")")):this.out(e.body,t,e.body.type)},ThisExpression:function(e,t){t.write(e,"this")},Super:function(e,t){t.write(e,"super")},RestElement:u=function(e,t){t.write(e,"..."),this.out(e.argument,t,e.argument.type)},SpreadElement:u,YieldExpression:function(e,t){t.write(e,e.delegate?"yield*":"yield"),e.argument&&(t.write(null," "),this.expr(t,e,e.argument))},AwaitExpression:function(e,t){t.write(e,"await "),this.expr(t,e,e.argument)},TemplateLiteral:function(e,t){var n,r=e.quasis,i=e.expressions;t.write(e,"`");for(var s=0,o=i.length;s0)for(var n=e.elements,r=n.length,i=0;;){var s=n[i];if(s&&this.expr(t,m,s),i+=1,(i=r)break;t.lineLength()>t.wrapColumn&&t.write(null,t.lineEnd,h(t.indent,t.indentLevel+1))}t.write(null,"]")},ArrayPattern:l,ObjectExpression:function(e,t){var n,r=h(t.indent,t.indentLevel++),i=t.lineEnd,s=r+t.indent;if(t.write(e,"{"),e.properties.length>0){t.write(null,i);for(var o=e.properties,a=o.length,u=0;n=o[u],t.write(null,s),this.out(n,t,"Property"),++ut.wrapColumn&&t.write(null,t.lineEnd,h(t.indent,t.indentLevel+1));t.write(null,i,r,"}")}else t.write(null,"}");t.indentLevel--},Property:function(e,t){e.method||"get"===e.kind||"set"===e.kind?this.MethodDefinition(e,t):(e.shorthand||(e.computed?(t.write(null,"["),this.out(e.key,t,e.key.type),t.write(null,"]")):this.out(e.key,t,e.key.type),t.write(null,": ")),this.expr(t,m,e.value))},ObjectPattern:function(e,t){if(t.write(e,"{"),e.properties.length>0)for(var n=e.properties,r=n.length,i=0;this.out(n[i],t,"Property"),++i0)for(var i=r.length,s=0;s1&&t.write(e," "),this.expr(t,e,e.argument,!0)):(this.expr(t,e,e.argument),t.write(e,e.operator))},UpdateExpression:function(e,t){e.prefix?(t.write(e,e.operator),this.out(e.argument,t,e.argument.type)):(this.out(e.argument,t,e.argument.type),t.write(e,e.operator))},BinaryExpression:c=function(e,t){var n=e.operator;"in"===n&&t.inForInit&&t.write(null,"("),this.expr(t,e,e.left),t.write(e," ",n," "),this.expr(t,e,e.right,"ArrowFunctionExpression"===e.right.type?2:0),"in"===n&&t.inForInit&&t.write(null,")")},LogicalExpression:c,AssignmentExpression:function(e,t){"ObjectPattern"===e.left.type&&t.write(null,"("),this.BinaryExpression(e,t),"ObjectPattern"===e.left.type&&t.write(null,")")},AssignmentPattern:function(e,t){this.expr(t,e,e.left),t.write(e," = "),this.expr(t,e,e.right)},ConditionalExpression:function(e,t){this.expr(t,e,e.test,!0),t.write(e," ? "),this.expr(t,e,e.consequent),t.write(null," : "),this.expr(t,e,e.alternate)},NewExpression:function(e,t){t.write(e,"new "),this.out(e,t,"CallExpression")},CallExpression:function(e,t){this.expr(t,e,e.callee,"ObjectExpression"===e.callee.type?2:0),t.write(e,"(");var n=e.arguments;if(n.length>0)for(var r=n.length,i=0;i=0&&r({self:i,parent:e,field:a[u],index:!0}):c instanceof Object&&i===c&&r({self:i,parent:e,field:a[u]})}})}return n||(n=[{self:e}],n.replace=function(e,t){n[e].replace(t)}),t(e,s,n),e}function s(e,t){var n=[],r={plugins:{asyncawait:{asyncExits:!0,awaitAnywhere:!0}},ecmaVersion:8,allowHashBang:!0,allowReturnOutsideFunction:!0,allowImportExportEverywhere:!0,locations:!0,onComment:n};if(t)for(var s in t)r[s]=t[s];var o=a.parse(e,r);return i(o,function(e,t,r){for(t();n.length&&e.loc&&e.loc.start.line>=n[0].loc.start.line&&e.loc.end.line>=n[0].loc.end.line;)e.$comments=e.$comments||[],e.$comments.push(n.shift())}),o}function o(e,t){function n(e,r){if(Array.isArray(r)&&!Array.isArray(e))throw new Error("Can't substitute an array for a node");return r=r||{},Object.keys(e).forEach(function(i){function s(e){return"function"==typeof e&&(e=e()),r=r.concat(e)}function o(e){return"function"==typeof e&&(e=e()),r[i]=e,r}if(!(e[i]instanceof Object))return r[i]=e[i];if(Array.isArray(e[i]))return r[i]=n(e[i],[]);var a;if(a=Array.isArray(r)?s:o,"Identifier"===e[i].type&&"$"===e[i].name[0])return a(t[e[i].name.slice(1)]);if("LabeledStatement"===e[i].type&&"$"===e[i].label.name){var u=e[i].body.expression;return a(t[u.name||u.value])}return a("LabeledStatement"===e[i].type&&"$$"===e[i].label.name.slice(0,2)?t[e[i].label.name.slice(2)](n(e[i]).body):n(e[i]))}),r}h[e]||(h[e]=s(e,{locations:!1,ranges:!1,onComment:null}));var r=n(h[e]);return{body:r.body,expr:"ExpressionStatement"===r.body[0].type?r.body[0].expression:null}}var a=e("acorn"),u=e("acorn/dist/walk"),c={AwaitExpression:function(e,t,n){n(e.argument,t,"Expression")},SwitchStatement:function(e,t,n){n(e.discriminant,t,"Expression");for(var r=0;r=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(p,"$1 $3")),e.test(r)}function s(e,t,n,r){var i=new e.constructor(e.options,e.input,t);if(n)for(var s in n)i[s]=n[s];var o=e,a=i;return["inFunction","inAsyncFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in o&&(a[e]=o[e])}),r&&(i.options.preserveParens=!0),i.nextToken(),i}function o(e,t){var n=function(){};e.extend("initialContext",function(r){return function(){return this.options.ecmaVersion<7&&(n=function(t){e.raise(t.start,"async/await keywords only available when ecmaVersion>=7")}),this.reservedWords=new RegExp(this.reservedWords.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrict=new RegExp(this.reservedWordsStrict.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.reservedWordsStrictBind=new RegExp(this.reservedWordsStrictBind.toString().replace(/await|async/g,"").replace("|/","/").replace("/|","/").replace("||","|")),this.inAsyncFunction=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),r.apply(this,arguments)}}),e.extend("shouldParseExportStatement",function(e){return function(){return!("name"!==this.type.label||"async"!==this.value||!i(c,this))||e.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label)if(i(c,this,!0)){var a=this.inAsyncFunction;try{this.inAsyncFunction=!0,this.next();var l=this.parseStatement(n,r);return l.async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}finally{this.inAsyncFunction=a}}else if("object"==typeof t&&t.asyncExits&&i(u,this)){this.next();var l=this.parseStatement(n,r);return l.async=!0,l.start=s,l.loc&&(l.loc.start=o),l.range&&(l.range[0]=s),l}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(t){var n=e.apply(this,arguments);return this.inAsyncFunction&&"await"===n.name&&0===arguments.length&&this.raise(n.start,"'await' is reserved within async functions"),n}}),e.extend("parseExprAtom",function(e){return function(i){var o,u=this.start,c=this.startLoc,p=e.apply(this,arguments);if("Identifier"===p.type)if("async"!==p.name||r(this,p.end)){if("await"===p.name){var h=this.startNodeAt(p.start,p.loc&&p.loc.start);if(this.inAsyncFunction)return o=this.parseExprSubscripts(),h.operator="await",h.argument=o,h=this.finishNodeAt(h,"AwaitExpression",o.end,o.loc&&o.loc.end),n(h),h;if(this.input.slice(p.end).match(l))return t.awaitAnywhere||"module"!==this.options.sourceType?p:this.raise(p.start,"'await' is reserved within modules");if("object"==typeof t&&t.awaitAnywhere&&(u=this.start,o=s(this,u-4).parseExprSubscripts(),o.end<=u))return o=s(this,u).parseExprSubscripts(),h.operator="await",h.argument=o,h=this.finishNodeAt(h,"AwaitExpression",o.end,o.loc&&o.loc.end),this.pos=o.end,this.end=o.end,this.endLoc=o.endLoc,this.next(),n(h),h;if(!t.awaitAnywhere&&"module"===this.options.sourceType)return this.raise(p.start,"'await' is reserved within modules")}}else{var f=this.inAsyncFunction;try{this.inAsyncFunction=!0;var d=this,y=!1,m={parseFunctionBody:function(e,t){try{var n=y;return y=!0,d.parseFunctionBody.apply(this,arguments)}finally{y=n}},raise:function(){try{return d.raise.apply(this,arguments)}catch(e){throw y?e:a}}};if(o=s(this,this.start,m,!0).parseExpression(),"SequenceExpression"===o.type&&(o=o.expressions[0]),"FunctionExpression"===o.type||"FunctionDeclaration"===o.type||"ArrowFunctionExpression"===o.type)return o=s(this,this.start,m).parseExpression(),"SequenceExpression"===o.type&&(o=o.expressions[0]),o.async=!0,o.start=u,o.loc&&(o.loc.start=c),o.range&&(o.range[0]=u),this.pos=o.end,this.end=o.end,this.endLoc=o.endLoc,this.next(),n(o),o}catch(e){if(e!==a)throw e}finally{this.inAsyncFunction=f}}return p}}),e.extend("finishNodeAt",function(e){return function(t,n,r,i){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}}),e.extend("finishNode",function(e){return function(t,n){return t.__asyncValue&&(delete t.__asyncValue,t.value.async=!0),e.apply(this,arguments)}});e.extend("parsePropertyName",function(e){return function(t){var i=(t.key&&t.key.name,e.apply(this,arguments));return"Identifier"!==i.type||"async"!==i.name||r(this,i.end)||this.input.slice(i.end).match(l)||(h.test(this.input.slice(i.end))?(i=e.apply(this,arguments),t.__asyncValue=!0):(n(t),"set"===t.kind&&this.raise(i.start,"'set (value)' cannot be be async"),i=e.apply(this,arguments),"Identifier"===i.type&&"set"===i.name&&this.raise(i.start,"'set (value)' cannot be be async"),t.__asyncValue=!0)),i}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i;n.__asyncValue&&("constructor"===n.kind&&this.raise(n.start,"class constructor() cannot be be async"),i=this.inAsyncFunction,this.inAsyncFunction=!0);var s=e.apply(this,arguments);return this.inAsyncFunction=i,s}}),e.extend("parseMethod",function(e){return function(t){var n;this.__currentProperty&&this.__currentProperty.__asyncValue&&(n=this.inAsyncFunction,this.inAsyncFunction=!0);var r=e.apply(this,arguments);return this.inAsyncFunction=n,r}}),e.extend("parsePropertyValue",function(e){return function(t,n,r,i,s,o){var a=this.__currentProperty;this.__currentProperty=t;var u;t.__asyncValue&&(u=this.inAsyncFunction,this.inAsyncFunction=!0);var c=e.apply(this,arguments);return this.inAsyncFunction=u,this.__currentProperty=a,c}})}var a={},u=/^async[\t ]+(return|throw)/,c=/^async[\t ]+function/,l=/^\s*[():;]/,p=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g,h=/\s*(get|set)\s*\(/;t.exports=o},{}],14:[function(e,t,n){function r(e,t){return e.lineStart>=t}function i(e,t,n){var r=t.input.slice(t.start);return n&&(r=r.replace(c,"$1 $3")),e.test(r)}function s(e,t,n){var r=new e.constructor(e.options,e.input,t);if(n)for(var i in n)r[i]=n[i];var s=e,o=r;return["inFunction","inAsync","inGenerator","inModule"].forEach(function(e){e in s&&(o[e]=s[e])}),r.nextToken(),r}function o(e,t){t&&"object"==typeof t||(t={}),e.extend("parse",function(n){return function(){return this.inAsync=t.inAsyncFunction,t.awaitAnywhere&&t.inAsyncFunction&&e.raise(node.start,"The options awaitAnywhere and inAsyncFunction are mutually exclusive"),n.apply(this,arguments)}}),e.extend("parseStatement",function(e){return function(n,r){var s=this.start,o=this.startLoc;if("name"===this.type.label&&t.asyncExits&&i(a,this)){this.next();var u=this.parseStatement(n,r);return u.async=!0,u.start=s,u.loc&&(u.loc.start=o),u.range&&(u.range[0]=s),u}return e.apply(this,arguments)}}),e.extend("parseIdent",function(e){return function(n){return"module"===this.options.sourceType&&this.options.ecmaVersion>=8&&t.awaitAnywhere?e.call(this,!0):e.apply(this,arguments)}}),e.extend("parseExprAtom",function(e){var n={};return function(r){var i,o=this.start,a=(this.startLoc,e.apply(this,arguments));if("Identifier"===a.type&&"await"===a.name&&!this.inAsync&&t.awaitAnywhere){var u=this.startNodeAt(a.start,a.loc&&a.loc.start);o=this.start;var c={raise:function(){try{return pp.raise.apply(this,arguments)}catch(e){throw n}}};try{if(i=s(this,o-4,c).parseExprSubscripts(),i.end<=o)return i=s(this,o,c).parseExprSubscripts(),u.argument=i,u=this.finishNodeAt(u,"AwaitExpression",i.end,i.loc&&i.loc.end),this.pos=i.end,this.end=i.end,this.endLoc=i.endLoc,this.next(),u}catch(e){if(e===n)return a;throw e}}return a}});var n={undefined:!0,get:!0,set:!0,static:!0,async:!0,constructor:!0};e.extend("parsePropertyName",function(e){return function(t){var i=t.key&&t.key.name,s=e.apply(this,arguments);return"get"===this.value&&(t.__maybeStaticAsyncGetter=!0),n[this.value]?s:("Identifier"!==s.type||"async"!==s.name&&"async"!==i||r(this,s.end)||this.input.slice(s.end).match(u)?delete t.__maybeStaticAsyncGetter:"set"===t.kind||"set"===s.name?this.raise(s.start,"'set (value)' cannot be be async"):(this.__isAsyncProp=!0,s=e.apply(this,arguments),"Identifier"===s.type&&"set"===s.name&&this.raise(s.start,"'set (value)' cannot be be async")),s)}}),e.extend("parseClassMethod",function(e){return function(t,n,r){var i=e.apply(this,arguments);return n.__maybeStaticAsyncGetter&&(delete n.__maybeStaticAsyncGetter,n.kind="get"),i}}),e.extend("parseFunctionBody",function(e){return function(t,n){var r=this.inAsync;this.__isAsyncProp&&(t.async=!0,this.inAsync=!0,delete this.__isAsyncProp);var i=e.apply(this,arguments);return this.inAsync=r,i}})}var a=/^async[\t ]+(return|throw)/,u=/^\s*[):;]/,c=/([^\n])\/\*(\*(?!\/)|[^\n*])*\*\/([^\n])/g;t.exports=o},{}],15:[function(e,t,n){!function(e,r){"object"==typeof n&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r(e.acorn=e.acorn||{})}(this,function(e){"use strict";function t(e,t){for(var n=65536,r=0;re)return!1;if(n+=t[r+1],n>=e)return!0}}function n(e,n){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&A.test(String.fromCharCode(e)):n!==!1&&t(e,C)))}function r(e,n){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&_.test(String.fromCharCode(e)):n!==!1&&(t(e,C)||t(e,L)))))}function i(e,t){return new P(e,{beforeExpr:!0,binop:t})}function s(e,t){return void 0===t&&(t={}),t.keyword=e,O[e]=new P(e,t)}function o(e){return 10===e||13===e||8232===e||8233===e}function a(e){return"[object Array]"===Object.prototype.toString.call(e)}function u(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function c(e,t){for(var n=1,r=0;;){$.lastIndex=r;var i=$.exec(e);if(!(i&&i.index=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),a(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return a(t.onComment)&&(t.onComment=p(t,t.onComment)),t}function p(e,t){return function(n,r,i,s,o,a){var u={type:n?"Block":"Line",value:r,start:i,end:s};e.locations&&(u.loc=new M(this,o,a)),e.ranges&&(u.range=[i,s]),t.push(u)}}function h(e){return new RegExp("^("+e.replace(/ /g,"|")+")$")}function f(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}function d(e,t,n,r){try{return new RegExp(e,t)}catch(e){if(void 0!==n)throw e instanceof SyntaxError&&r.raise(n,"Error parsing regular expression: "+e.message),e}}function y(e){return e<=65535?String.fromCharCode(e):(e-=65536,String.fromCharCode((e>>10)+55296,(1023&e)+56320))}function m(e,t){return new U(t,e).parse()}function g(e,t,n){var r=new U(n,e,t);return r.nextToken(),r.parseExpression()}function v(e,t){return new U(t,e)}function b(t,n,r){e.parse_dammit=t,e.LooseParser=n,e.pluginsLoose=r}var x={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},w="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",E={5:w,6:w+" const class extends export import super"
+},S="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",k="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",A=new RegExp("["+S+"]"),_=new RegExp("["+S+k+"]");S=k=null;var C=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],L=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],P=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null},T={beforeExpr:!0},R={startsExpr:!0},O={},F={num:new P("num",R),regexp:new P("regexp",R),string:new P("string",R),name:new P("name",R),eof:new P("eof"),bracketL:new P("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new P("]"),braceL:new P("{",{beforeExpr:!0,startsExpr:!0}),braceR:new P("}"),parenL:new P("(",{beforeExpr:!0,startsExpr:!0}),parenR:new P(")"),comma:new P(",",T),semi:new P(";",T),colon:new P(":",T),dot:new P("."),question:new P("?",T),arrow:new P("=>",T),template:new P("template"),ellipsis:new P("...",T),backQuote:new P("`",R),dollarBraceL:new P("${",{beforeExpr:!0,startsExpr:!0}),eq:new P("=",{beforeExpr:!0,isAssign:!0}),assign:new P("_=",{beforeExpr:!0,isAssign:!0}),incDec:new P("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new P("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:i("||",1),logicalAND:i("&&",2),bitwiseOR:i("|",3),bitwiseXOR:i("^",4),bitwiseAND:i("&",5),equality:i("==/!=",6),relational:i("",7),bitShift:i("<>",8),plusMin:new P("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:i("%",10),star:i("*",10),slash:i("/",10),starstar:new P("**",{beforeExpr:!0}),_break:s("break"),_case:s("case",T),_catch:s("catch"),_continue:s("continue"),_debugger:s("debugger"),_default:s("default",T),_do:s("do",{isLoop:!0,beforeExpr:!0}),_else:s("else",T),_finally:s("finally"),_for:s("for",{isLoop:!0}),_function:s("function",R),_if:s("if"),_return:s("return",T),_switch:s("switch"),_throw:s("throw",T),_try:s("try"),_var:s("var"),_const:s("const"),_while:s("while",{isLoop:!0}),_with:s("with"),_new:s("new",{beforeExpr:!0,startsExpr:!0}),_this:s("this",R),_super:s("super",R),_class:s("class"),_extends:s("extends",T),_export:s("export"),_import:s("import"),_null:s("null",R),_true:s("true",R),_false:s("false",R),_in:s("in",{beforeExpr:!0,binop:7}),_instanceof:s("instanceof",{beforeExpr:!0,binop:7}),_typeof:s("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:s("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:s("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},N=/\r\n?|\n|\u2028|\u2029/,$=new RegExp(N.source,"g"),B=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,I=/(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g,j=function(e,t){this.line=e,this.column=t};j.prototype.offset=function(e){return new j(this.line,this.column+e)};var M=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)},D={ecmaVersion:7,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowHashBang:!1,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1,plugins:{}},V={},U=function(e,t,n){this.options=e=l(e),this.sourceFile=e.sourceFile,this.keywords=h(E[e.ecmaVersion>=6?6:5]);var r="";if(!e.allowReserved){for(var i=e.ecmaVersion;!(r=x[i]);i--);"module"==e.sourceType&&(r+=" await")}this.reservedWords=h(r);var s=(r?r+" ":"")+x.strict;this.reservedWordsStrict=h(s),this.reservedWordsStrictBind=h(s+" "+x.strictBind),this.input=String(t),this.containsEsc=!1,this.loadPlugins(e.plugins),n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(N).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=F.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.strict=this.inModule="module"===e.sourceType,this.potentialArrowAt=-1,this.inFunction=this.inGenerator=this.inAsync=!1,this.yieldPos=this.awaitPos=0,this.labels=[],0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2)};U.prototype.isKeyword=function(e){return this.keywords.test(e)},U.prototype.isReservedWord=function(e){return this.reservedWords.test(e)},U.prototype.extend=function(e,t){this[e]=t(this[e])},U.prototype.loadPlugins=function(e){var t=this;for(var n in e){var r=V[n];if(!r)throw new Error("Plugin '"+n+"' not found");r(t,e[n])}},U.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)};var q=U.prototype;q.isUseStrict=function(e){return this.options.ecmaVersion>=5&&"ExpressionStatement"===e.type&&"Literal"===e.expression.type&&"use strict"===e.expression.raw.slice(1,-1)},q.eat=function(e){return this.type===e&&(this.next(),!0)},q.isContextual=function(e){return this.type===F.name&&this.value===e},q.eatContextual=function(e){return this.value===e&&this.eat(F.name)},q.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},q.canInsertSemicolon=function(){return this.type===F.eof||this.type===F.braceR||N.test(this.input.slice(this.lastTokEnd,this.start))},q.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},q.semicolon=function(){this.eat(F.semi)||this.insertSemicolon()||this.unexpected()},q.afterTrailingComma=function(e,t){if(this.type==e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},q.expect=function(e){this.eat(e)||this.unexpected()},q.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")};var W=function(){this.shorthandAssign=0,this.trailingComma=0};q.checkPatternErrors=function(e,t){var n=e&&e.trailingComma;if(!t)return!!n;n&&this.raise(n,"Comma is not permitted after the rest element")},q.checkExpressionErrors=function(e,t){var n=e&&e.shorthandAssign;if(!t)return!!n;n&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns")},q.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos=6&&(e.sourceType=this.options.sourceType),this.finishNode(e,"Program")};var Y={kind:"loop"},G={kind:"switch"};z.isLet=function(){if(this.type!==F.name||this.options.ecmaVersion<6||"let"!=this.value)return!1;I.lastIndex=this.pos;var e=I.exec(this.input),t=this.pos+e[0].length,i=this.input.charCodeAt(t);if(91===i||123==i)return!0;if(n(i,!0)){for(var s=t+1;r(this.input.charCodeAt(s),!0);++s);var o=this.input.slice(t,s);if(!this.isKeyword(o))return!0}return!1},z.isAsyncFunction=function(){if(this.type!==F.name||this.options.ecmaVersion<8||"async"!=this.value)return!1;I.lastIndex=this.pos;var e=I.exec(this.input),t=this.pos+e[0].length;return!(N.test(this.input.slice(this.pos,t))||"function"!==this.input.slice(t,t+8)||t+8!=this.input.length&&r(this.input.charAt(t+8)))},z.parseStatement=function(e,t,n){var r,i=this.type,s=this.startNode();switch(this.isLet()&&(i=F._var,r="let"),i){case F._break:case F._continue:return this.parseBreakContinueStatement(s,i.keyword);case F._debugger:return this.parseDebuggerStatement(s);case F._do:return this.parseDoStatement(s);case F._for:return this.parseForStatement(s);case F._function:return!e&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(s,!1);case F._class:return e||this.unexpected(),this.parseClass(s,!0);case F._if:return this.parseIfStatement(s);case F._return:return this.parseReturnStatement(s);case F._switch:return this.parseSwitchStatement(s);case F._throw:return this.parseThrowStatement(s);case F._try:return this.parseTryStatement(s);case F._const:case F._var:return r=r||this.value,e||"var"==r||this.unexpected(),this.parseVarStatement(s,r);case F._while:return this.parseWhileStatement(s);case F._with:return this.parseWithStatement(s);case F.braceL:return this.parseBlock();case F.semi:return this.parseEmptyStatement(s);case F._export:case F._import:return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===F._import?this.parseImport(s):this.parseExport(s,n);default:if(this.isAsyncFunction()&&e)return this.next(),this.parseFunctionStatement(s,!0);var o=this.value,a=this.parseExpression();return i===F.name&&"Identifier"===a.type&&this.eat(F.colon)?this.parseLabeledStatement(s,o,a):this.parseExpressionStatement(s,a)}},z.parseBreakContinueStatement=function(e,t){var n=this,r="break"==t;this.next(),this.eat(F.semi)||this.insertSemicolon()?e.label=null:this.type!==F.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var i=0;i=6?this.eat(F.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},z.parseForStatement=function(e){if(this.next(),this.labels.push(Y),this.expect(F.parenL),this.type===F.semi)return this.parseFor(e,null);var t=this.isLet();if(this.type===F._var||this.type===F._const||t){var n=this.startNode(),r=t?"let":this.value;return this.next(),this.parseVar(n,!0,r),this.finishNode(n,"VariableDeclaration"),!(this.type===F._in||this.options.ecmaVersion>=6&&this.isContextual("of"))||1!==n.declarations.length||"var"!==r&&n.declarations[0].init?this.parseFor(e,n):this.parseForIn(e,n)}var i=new W,s=this.parseExpression(!0,i);return this.type===F._in||this.options.ecmaVersion>=6&&this.isContextual("of")?(this.checkPatternErrors(i,!0),this.toAssignable(s),this.checkLVal(s),this.parseForIn(e,s)):(this.checkExpressionErrors(i,!0),this.parseFor(e,s))},z.parseFunctionStatement=function(e,t){return this.next(),this.parseFunction(e,!0,!1,t)},z.isFunction=function(){return this.type===F._function||this.isAsyncFunction()},z.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement(!this.strict&&this.isFunction()),e.alternate=this.eat(F._else)?this.parseStatement(!this.strict&&this.isFunction()):null,this.finishNode(e,"IfStatement")},z.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(F.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},z.parseSwitchStatement=function(e){var t=this;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(F.braceL),this.labels.push(G);for(var n,r=!1;this.type!=F.braceR;)if(t.type===F._case||t.type===F._default){var i=t.type===F._case;n&&t.finishNode(n,"SwitchCase"),e.cases.push(n=t.startNode()),n.consequent=[],t.next(),i?n.test=t.parseExpression():(r&&t.raiseRecoverable(t.lastTokStart,"Multiple default clauses"),r=!0,n.test=null),t.expect(F.colon)}else n||t.unexpected(),n.consequent.push(t.parseStatement(!0));return n&&this.finishNode(n,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},z.parseThrowStatement=function(e){return this.next(),N.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var J=[];z.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===F._catch){var t=this.startNode();this.next(),this.expect(F.parenL),t.param=this.parseBindingAtom(),this.checkLVal(t.param,!0),this.expect(F.parenR),t.body=this.parseBlock(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(F._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},z.parseVarStatement=function(e,t){return this.next(),this.parseVar(e,!1,t),this.semicolon(),this.finishNode(e,"VariableDeclaration")},z.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(Y),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"WhileStatement")},z.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement(!1),this.finishNode(e,"WithStatement")},z.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},z.parseLabeledStatement=function(e,t,n){for(var r=this,i=0;i=0;o--){var a=r.labels[o];if(a.statementStart!=e.start)break;a.statementStart=r.start,a.kind=s}return this.labels.push({name:t,kind:s,statementStart:this.start}),e.body=this.parseStatement(!0),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},z.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},z.parseBlock=function(e){var t,n=this,r=this.startNode(),i=!0;for(r.body=[],this.expect(F.braceL);!this.eat(F.braceR);){var s=n.parseStatement(!0);r.body.push(s),i&&e&&n.isUseStrict(s)&&(t=n.strict,n.setStrict(n.strict=!0)),i=!1}return t===!1&&this.setStrict(!1),this.finishNode(r,"BlockStatement")},z.parseFor=function(e,t){return e.init=t,this.expect(F.semi),e.test=this.type===F.semi?null:this.parseExpression(),this.expect(F.semi),e.update=this.type===F.parenR?null:this.parseExpression(),this.expect(F.parenR),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,"ForStatement")},z.parseForIn=function(e,t){var n=this.type===F._in?"ForInStatement":"ForOfStatement";return this.next(),e.left=t,e.right=this.parseExpression(),this.expect(F.parenR),e.body=this.parseStatement(!1),this.labels.pop(),this.finishNode(e,n)},z.parseVar=function(e,t,n){var r=this;for(e.declarations=[],e.kind=n;;){var i=r.startNode();if(r.parseVarId(i),r.eat(F.eq)?i.init=r.parseMaybeAssign(t):"const"!==n||r.type===F._in||r.options.ecmaVersion>=6&&r.isContextual("of")?"Identifier"==i.id.type||t&&(r.type===F._in||r.isContextual("of"))?i.init=null:r.raise(r.lastTokEnd,"Complex binding patterns require an initialization value"):r.unexpected(),e.declarations.push(r.finishNode(i,"VariableDeclarator")),!r.eat(F.comma))break}return e},z.parseVarId=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0)},z.parseFunction=function(e,t,n,r){this.initFunction(e),this.options.ecmaVersion>=6&&!r&&(e.generator=this.eat(F.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&&(e.id=this.parseIdent());var i=this.inGenerator,s=this.inAsync,o=this.yieldPos,a=this.awaitPos;return this.inGenerator=e.generator,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,t||this.type!==F.name||(e.id=this.parseIdent()),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.inGenerator=i,this.inAsync=s,this.yieldPos=o,this.awaitPos=a,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},z.parseFunctionParams=function(e){this.expect(F.parenL),e.params=this.parseBindingList(F.parenR,!1,this.options.ecmaVersion>=8,!0),this.checkYieldAwaitInDefaultParams()},z.parseClass=function(e,t){var n=this;this.next(),this.parseClassId(e,t),this.parseClassSuper(e);var r=this.startNode(),i=!1;for(r.body=[],this.expect(F.braceL);!this.eat(F.braceR);)if(!n.eat(F.semi)){var s=n.startNode(),o=n.eat(F.star),a=!1,u=n.type===F.name&&"static"===n.value;n.parsePropertyName(s),s.static=u&&n.type!==F.parenL,s.static&&(o&&n.unexpected(),o=n.eat(F.star),n.parsePropertyName(s)),n.options.ecmaVersion>=8&&!o&&!s.computed&&"Identifier"===s.key.type&&"async"===s.key.name&&n.type!==F.parenL&&!n.canInsertSemicolon()&&(a=!0,n.parsePropertyName(s)),s.kind="method";var c=!1;if(!s.computed){var l=s.key;o||a||"Identifier"!==l.type||n.type===F.parenL||"get"!==l.name&&"set"!==l.name||(c=!0,s.kind=l.name,l=n.parsePropertyName(s)),!s.static&&("Identifier"===l.type&&"constructor"===l.name||"Literal"===l.type&&"constructor"===l.value)&&(i&&n.raise(l.start,"Duplicate constructor in the same class"),c&&n.raise(l.start,"Constructor can't have get/set modifier"),o&&n.raise(l.start,"Constructor can't be a generator"),a&&n.raise(l.start,"Constructor can't be an async method"),s.kind="constructor",i=!0)}if(n.parseClassMethod(r,s,o,a),c){var p="get"===s.kind?0:1;if(s.value.params.length!==p){var h=s.value.start;"get"===s.kind?n.raiseRecoverable(h,"getter should have no params"):n.raiseRecoverable(h,"setter should have exactly one param")}else"set"===s.kind&&"RestElement"===s.value.params[0].type&&n.raiseRecoverable(s.value.params[0].start,"Setter cannot use rest params")}}return e.body=this.finishNode(r,"ClassBody"),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},z.parseClassMethod=function(e,t,n,r){t.value=this.parseMethod(n,r),e.body.push(this.finishNode(t,"MethodDefinition"))},z.parseClassId=function(e,t){e.id=this.type===F.name?this.parseIdent():t?this.unexpected():null},z.parseClassSuper=function(e){e.superClass=this.eat(F._extends)?this.parseExprSubscripts():null},z.parseExport=function(e,t){var n=this;if(this.next(),this.eat(F.star))return this.expectContextual("from"),e.source=this.type===F.string?this.parseExprAtom():this.unexpected(),this.semicolon(),this.finishNode(e,"ExportAllDeclaration");if(this.eat(F._default)){this.checkExport(t,"default",this.lastTokStart);var r=this.type==F.parenL,i=this.parseMaybeAssign(),s=!0;return r||"FunctionExpression"!=i.type&&"ClassExpression"!=i.type||(s=!1,i.id&&(i.type="FunctionExpression"==i.type?"FunctionDeclaration":"ClassDeclaration")),e.declaration=i,s&&this.semicolon(),this.finishNode(e,"ExportDefaultDeclaration")}if(this.shouldParseExportStatement())e.declaration=this.parseStatement(!0),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id.name,e.declaration.id.start),e.specifiers=[],e.source=null;else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))e.source=this.type===F.string?this.parseExprAtom():this.unexpected();else{for(var o=0;o=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Can not use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var r=0;r=8&&"async"===o.name&&!this.canInsertSemicolon()&&this.eat(F._function))return this.parseFunction(this.startNodeAt(i,s),!1,!1,!0);if(n&&!this.canInsertSemicolon()){if(this.eat(F.arrow))return this.parseArrowExpression(this.startNodeAt(i,s),[o],!1);if(this.options.ecmaVersion>=8&&"async"===o.name&&this.type===F.name)return o=this.parseIdent(),!this.canInsertSemicolon()&&this.eat(F.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(i,s),[o],!0)}return o;case F.regexp:var a=this.value;return t=this.parseLiteral(a.value),t.regex={pattern:a.pattern,flags:a.flags},t;case F.num:case F.string:return this.parseLiteral(this.value);case F._null:case F._true:case F._false:return t=this.startNode(),t.value=this.type===F._null?null:this.type===F._true,t.raw=this.type.keyword,this.next(),this.finishNode(t,"Literal");case F.parenL:return this.parseParenAndDistinguishExpression(n);case F.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(F.bracketR,!0,!0,e),this.finishNode(t,"ArrayExpression");case F.braceL:return this.parseObj(!1,e);case F._function:return t=this.startNode(),this.next(),this.parseFunction(t,!1);case F._class:return this.parseClass(this.startNode(),!1);case F._new:return this.parseNew();case F.backQuote:return this.parseTemplate();default:this.unexpected()}},Q.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),this.next(),this.finishNode(t,"Literal")},Q.parseParenExpression=function(){this.expect(F.parenL);var e=this.parseExpression();return this.expect(F.parenR),e},Q.parseParenAndDistinguishExpression=function(e){var t,n=this,r=this.start,i=this.startLoc,s=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var o,a,u=this.start,c=this.startLoc,l=[],p=!0,h=!1,f=new W,d=this.yieldPos,y=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==F.parenR;){if(p?p=!1:n.expect(F.comma),s&&n.afterTrailingComma(F.parenR,!0)){h=!0;break}if(n.type===F.ellipsis){o=n.start,l.push(n.parseParenItem(n.parseRest())),n.type===F.comma&&n.raise(n.start,"Comma is not permitted after the rest element");break}n.type!==F.parenL||a||(a=n.start),l.push(n.parseMaybeAssign(!1,f,n.parseParenItem))}var m=this.start,g=this.startLoc;if(this.expect(F.parenR),e&&!this.canInsertSemicolon()&&this.eat(F.arrow))return this.checkPatternErrors(f,!0),this.checkYieldAwaitInDefaultParams(),a&&this.unexpected(a),this.yieldPos=d,this.awaitPos=y,this.parseParenArrowList(r,i,l);l.length&&!h||this.unexpected(this.lastTokStart),o&&this.unexpected(o),this.checkExpressionErrors(f,!0),this.yieldPos=d||this.yieldPos,this.awaitPos=y||this.awaitPos,l.length>1?(t=this.startNodeAt(u,c),t.expressions=l,this.finishNodeAt(t,"SequenceExpression",m,g)):t=l[0]}else t=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(r,i);return v.expression=t,this.finishNode(v,"ParenthesizedExpression")}return t},Q.parseParenItem=function(e){return e},Q.parseParenArrowList=function(e,t,n){return this.parseArrowExpression(this.startNodeAt(e,t),n)};var X=[];Q.parseNew=function(){var e=this.startNode(),t=this.parseIdent(!0);if(this.options.ecmaVersion>=6&&this.eat(F.dot))return e.meta=t,e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is new.target"),this.inFunction||this.raiseRecoverable(e.start,"new.target can only be used in functions"),this.finishNode(e,"MetaProperty");var n=this.start,r=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(),n,r,!0),this.eat(F.parenL)?e.arguments=this.parseExprList(F.parenR,this.options.ecmaVersion>=8,!1):e.arguments=X,this.finishNode(e,"NewExpression")},Q.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),e.tail=this.type===F.backQuote,this.finishNode(e,"TemplateElement")},Q.parseTemplate=function(){var e=this,t=this.startNode();this.next(),t.expressions=[];var n=this.parseTemplateElement();for(t.quasis=[n];!n.tail;)e.expect(F.dollarBraceL),t.expressions.push(e.parseExpression()),e.expect(F.braceR),t.quasis.push(n=e.parseTemplateElement());return this.next(),this.finishNode(t,"TemplateLiteral")},Q.parseObj=function(e,t){var n=this,r=this.startNode(),i=!0,s={};for(r.properties=[],this.next();!this.eat(F.braceR);){if(i)i=!1;else if(n.expect(F.comma),n.afterTrailingComma(F.braceR))break;var o,a,u,c,l=n.startNode();n.options.ecmaVersion>=6&&(l.method=!1,l.shorthand=!1,(e||t)&&(u=n.start,c=n.startLoc),e||(o=n.eat(F.star))),n.parsePropertyName(l),e||!(n.options.ecmaVersion>=8)||o||l.computed||"Identifier"!==l.key.type||"async"!==l.key.name||n.type===F.parenL||n.type===F.colon||n.canInsertSemicolon()?a=!1:(a=!0,n.parsePropertyName(l,t)),n.parsePropertyValue(l,e,o,a,u,c,t),n.checkPropClash(l,s),r.properties.push(n.finishNode(l,"Property"))}return this.finishNode(r,e?"ObjectPattern":"ObjectExpression")},Q.parsePropertyValue=function(e,t,n,r,i,s,o){if((n||r)&&this.type===F.colon&&this.unexpected(),this.eat(F.colon))e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,o),e.kind="init";else if(this.options.ecmaVersion>=6&&this.type===F.parenL)t&&this.unexpected(),e.kind="init",e.method=!0,e.value=this.parseMethod(n,r);else if(this.options.ecmaVersion>=5&&!e.computed&&"Identifier"===e.key.type&&("get"===e.key.name||"set"===e.key.name)&&this.type!=F.comma&&this.type!=F.braceR){(n||r||t)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),e.value=this.parseMethod(!1);var a="get"===e.kind?0:1;if(e.value.params.length!==a){var u=e.value.start;"get"===e.kind?this.raiseRecoverable(u,"getter should have no params"):this.raiseRecoverable(u,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")}else this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?((this.keywords.test(e.key.name)||(this.strict?this.reservedWordsStrict:this.reservedWords).test(e.key.name)||this.inGenerator&&"yield"==e.key.name||this.inAsync&&"await"==e.key.name)&&this.raiseRecoverable(e.key.start,"'"+e.key.name+"' can not be used as shorthand property"),e.kind="init",t?e.value=this.parseMaybeDefault(i,s,e.key):this.type===F.eq&&o?(o.shorthandAssign||(o.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,s,e.key)):e.value=e.key,e.shorthand=!0):this.unexpected()},Q.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(F.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(F.bracketR),e.key;e.computed=!1}return e.key=this.type===F.num||this.type===F.string?this.parseExprAtom():this.parseIdent(!0)},Q.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=!1,e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Q.parseMethod=function(e,t){var n=this.startNode(),r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos;return this.initFunction(n),this.options.ecmaVersion>=6&&(n.generator=e),this.options.ecmaVersion>=8&&(n.async=!!t),this.inGenerator=n.generator,this.inAsync=n.async,this.yieldPos=0,this.awaitPos=0,this.expect(F.parenL),n.params=this.parseBindingList(F.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(n,!1),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.finishNode(n,"FunctionExpression")},Q.parseArrowExpression=function(e,t,n){var r=this.inGenerator,i=this.inAsync,s=this.yieldPos,o=this.awaitPos;return this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.inGenerator=!1,this.inAsync=e.async,this.yieldPos=0,this.awaitPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0),this.inGenerator=r,this.inAsync=i,this.yieldPos=s,this.awaitPos=o,this.finishNode(e,"ArrowFunctionExpression")},Q.parseFunctionBody=function(e,t){var n=t&&this.type!==F.braceL;if(n)e.body=this.parseMaybeAssign(),e.expression=!0;else{var r=this.inFunction,i=this.labels;this.inFunction=!0,this.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.inFunction=r,this.labels=i}var s=!n&&e.body.body.length&&this.isUseStrict(e.body.body[0])?e.body.body[0]:null;if(s&&this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params)&&this.raiseRecoverable(s.start,"Illegal 'use strict' directive in function with non-simple parameter list"),this.strict||s){var o=this.strict;this.strict=!0,e.id&&this.checkLVal(e.id,!0),this.checkParams(e),this.strict=o}else!t&&this.isSimpleParamList(e.params)||this.checkParams(e)},Q.isSimpleParamList=function(e){for(var t=0;t=6||this.input.slice(this.start,this.end).indexOf("\\")==-1)&&this.raiseRecoverable(this.start,"The keyword '"+this.value+"' is reserved"),this.inGenerator&&"yield"===this.value&&this.raiseRecoverable(this.start,"Can not use 'yield' as identifier inside a generator"),this.inAsync&&"await"===this.value&&this.raiseRecoverable(this.start,"Can not use 'await' as identifier inside an async function"),t.name=this.value):e&&this.type.keyword?t.name=this.type.keyword:this.unexpected(),this.next(),this.finishNode(t,"Identifier")},Q.parseYield=function(){this.yieldPos||(this.yieldPos=this.start);var e=this.startNode();return this.next(),this.type==F.semi||this.canInsertSemicolon()||this.type!=F.star&&!this.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(F.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")},Q.parseAwait=function(){this.awaitPos||(this.awaitPos=this.start);var e=this.startNode();return this.next(),e.argument=this.parseMaybeUnary(null,!0),this.finishNode(e,"AwaitExpression")};var Z=U.prototype;Z.raise=function(e,t){var n=c(this.input,e);t+=" ("+n.line+":"+n.column+")";var r=new SyntaxError(t);throw r.pos=e,r.loc=n,r.raisedAt=this.pos,r},Z.raiseRecoverable=Z.raise,Z.curPosition=function(){if(this.options.locations)return new j(this.curLine,this.pos-this.lineStart)};var K=function(e,t,n){this.type="",this.start=t,this.end=0,e.options.locations&&(this.loc=new M(e,n)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},ee=U.prototype;ee.startNode=function(){return new K(this,this.start,this.startLoc)},ee.startNodeAt=function(e,t){return new K(this,e,t)},ee.finishNode=function(e,t){return f.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},ee.finishNodeAt=function(e,t,n,r){return f.call(this,e,t,n,r)};var te=function(e,t,n,r){this.token=e,this.isExpr=!!t,this.preserveSpace=!!n,this.override=r},ne={b_stat:new te("{",!1),b_expr:new te("{",!0),b_tmpl:new te("${",!0),p_stat:new te("(",!1),p_expr:new te("(",!0),q_tmpl:new te("`",!0,!0,function(e){return e.readTmplToken()}),f_expr:new te("function",!0)},re=U.prototype;re.initialContext=function(){return[ne.b_stat]},re.braceIsBlock=function(e){if(e===F.colon){var t=this.curContext();if(t===ne.b_stat||t===ne.b_expr)return!t.isExpr}return e===F._return?N.test(this.input.slice(this.lastTokEnd,this.start)):e===F._else||e===F.semi||e===F.eof||e===F.parenR||(e==F.braceL?this.curContext()===ne.b_stat:!this.exprAllowed)},re.updateContext=function(e){var t,n=this.type;n.keyword&&e==F.dot?this.exprAllowed=!1:(t=n.updateContext)?t.call(this,e):this.exprAllowed=n.beforeExpr},F.parenR.updateContext=F.braceR.updateContext=function(){if(1==this.context.length)return void(this.exprAllowed=!0);var e=this.context.pop();e===ne.b_stat&&this.curContext()===ne.f_expr?(this.context.pop(),this.exprAllowed=!1):e===ne.b_tmpl?this.exprAllowed=!0:this.exprAllowed=!e.isExpr},F.braceL.updateContext=function(e){this.context.push(this.braceIsBlock(e)?ne.b_stat:ne.b_expr),this.exprAllowed=!0},F.dollarBraceL.updateContext=function(){this.context.push(ne.b_tmpl),this.exprAllowed=!0},F.parenL.updateContext=function(e){var t=e===F._if||e===F._for||e===F._with||e===F._while;this.context.push(t?ne.p_stat:ne.p_expr),this.exprAllowed=!0},F.incDec.updateContext=function(){},F._function.updateContext=function(e){e.beforeExpr&&e!==F.semi&&e!==F._else&&(e!==F.colon&&e!==F.braceL||this.curContext()!==ne.b_stat)&&this.context.push(ne.f_expr),this.exprAllowed=!1},F.backQuote.updateContext=function(){this.curContext()===ne.q_tmpl?this.context.pop():this.context.push(ne.q_tmpl),this.exprAllowed=!1};var ie=function(e){this.type=e.type,this.value=e.value,this.start=e.start,this.end=e.end,e.options.locations&&(this.loc=new M(e,e.startLoc,e.endLoc)),e.options.ranges&&(this.range=[e.start,e.end])},se=U.prototype,oe="object"==typeof Packages&&"[object JavaPackage]"==Object.prototype.toString.call(Packages);se.next=function(){this.options.onToken&&this.options.onToken(new ie(this)),this.lastTokEnd=this.end,this.lastTokStart=this.start,this.lastTokEndLoc=this.endLoc,this.lastTokStartLoc=this.startLoc,this.nextToken()},se.getToken=function(){return this.next(),new ie(this)},"undefined"!=typeof Symbol&&(se[Symbol.iterator]=function(){var e=this;return{next:function(){var t=e.getToken();return{done:t.type===F.eof,value:t}}}}),se.setStrict=function(e){var t=this;if(this.strict=e,this.type===F.num||this.type===F.string){if(this.pos=this.start,this.options.locations)for(;this.pos=this.input.length?this.finishToken(F.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},se.readToken=function(e){return n(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},se.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);return e<=55295||e>=57344?e:(e<<10)+this.input.charCodeAt(this.pos+1)-56613888},se.skipBlockComment=function(){var e=this,t=this.options.onComment&&this.curPosition(),n=this.pos,r=this.input.indexOf("*/",this.pos+=2);if(r===-1&&this.raise(this.pos-2,"Unterminated comment"),this.pos=r+2,this.options.locations){$.lastIndex=n;for(var i;(i=$.exec(this.input))&&i.index8&&t<14||t>=5760&&B.test(String.fromCharCode(t))))break e;++e.pos}}},se.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},se.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(F.ellipsis)):(++this.pos,this.finishToken(F.dot))},se.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(F.assign,2):this.finishOp(F.slash,1)},se.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?F.star:F.modulo;return this.options.ecmaVersion>=7&&42===t&&(++n,r=F.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(F.assign,n+1):this.finishOp(r,n)},se.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.finishOp(124===e?F.logicalOR:F.logicalAND,2):61===t?this.finishOp(F.assign,2):this.finishOp(124===e?F.bitwiseOR:F.bitwiseAND,1)},se.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(F.assign,2):this.finishOp(F.bitwiseXOR,1)},se.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45==t&&62==this.input.charCodeAt(this.pos+2)&&N.test(this.input.slice(this.lastTokEnd,this.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(F.incDec,2):61===t?this.finishOp(F.assign,2):this.finishOp(F.plusMin,1)},se.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(F.assign,n+1):this.finishOp(F.bitShift,n)):33==t&&60==e&&45==this.input.charCodeAt(this.pos+2)&&45==this.input.charCodeAt(this.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(n=2),this.finishOp(F.relational,n))},se.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(F.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(F.arrow)):this.finishOp(61===e?F.eq:F.prefix,1)},se.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(F.parenL);case 41:return++this.pos,this.finishToken(F.parenR);case 59:return++this.pos,this.finishToken(F.semi);case 44:return++this.pos,this.finishToken(F.comma);case 91:return++this.pos,this.finishToken(F.bracketL);case 93:return++this.pos,this.finishToken(F.bracketR);case 123:return++this.pos,this.finishToken(F.braceL);case 125:return++this.pos,this.finishToken(F.braceR);case 58:return++this.pos,this.finishToken(F.colon);case 63:return++this.pos,this.finishToken(F.question);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(F.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(F.prefix,1)}this.raise(this.pos,"Unexpected character '"+y(e)+"'")},se.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)};var ae=!!d("￿","u");se.readRegexp=function(){for(var e,t,n=this,r=this.pos;;){n.pos>=n.input.length&&n.raise(r,"Unterminated regular expression");var i=n.input.charAt(n.pos);if(N.test(i)&&n.raise(r,"Unterminated regular expression"),e)e=!1;else{if("["===i)t=!0;else if("]"===i&&t)t=!1;else if("/"===i&&!t)break;e="\\"===i}++n.pos}var s=this.input.slice(r,this.pos);++this.pos;var o=this.readWord1(),a=s,u="";if(o){var c=/^[gim]*$/;this.options.ecmaVersion>=6&&(c=/^[gimuy]*$/),c.test(o)||this.raise(r,"Invalid regular expression flag"),o.indexOf("u")>=0&&(ae?u="u":(a=a.replace(/\\u\{([0-9a-fA-F]+)\}/g,function(e,t,i){return t=Number("0x"+t),t>1114111&&n.raise(r+i+3,"Code point out of bounds"),"x"}),a=a.replace(/\\u([a-fA-F0-9]{4})|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"),u=u.replace("u","")))}var l=null;return oe||(d(a,u,r,this),l=d(s,o)),this.finishToken(F.regexp,{pattern:s,flags:o,value:l})},se.readInt=function(e,t){for(var n=this,r=this.pos,i=0,s=0,o=null==t?1/0:t;s=97?u-97+10:u>=65?u-65+10:u>=48&&u<=57?u-48:1/0,a>=e)break;++n.pos,i=i*e+a}return this.pos===r||null!=t&&this.pos-r!==t?null:i},se.readRadixNumber=function(e){this.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.start+2,"Expected number in radix "+e),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(F.num,t)},se.readNumber=function(e){var t=this.pos,r=!1,i=48===this.input.charCodeAt(this.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number"),i&&this.pos==t+1&&(i=!1);var s=this.input.charCodeAt(this.pos);46!==s||i||(++this.pos,this.readInt(10),r=!0,s=this.input.charCodeAt(this.pos)),69!==s&&101!==s||i||(s=this.input.charCodeAt(++this.pos),43!==s&&45!==s||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),r=!0),n(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var o,a=this.input.slice(t,this.pos);return r?o=parseFloat(a):i&&1!==a.length?/[89]/.test(a)||this.strict?this.raise(t,"Invalid number"):o=parseInt(a,8):o=parseInt(a,10),this.finishToken(F.num,o)},se.readCodePoint=function(){var e,t=this.input.charCodeAt(this.pos);if(123===t){this.options.ecmaVersion<6&&this.unexpected();var n=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.raise(n,"Code point out of bounds")}else e=this.readHexChar(4);return e},se.readString=function(e){for(var t=this,n="",r=++this.pos;;){t.pos>=t.input.length&&t.raise(t.start,"Unterminated string constant");var i=t.input.charCodeAt(t.pos);if(i===e)break;92===i?(n+=t.input.slice(r,t.pos),n+=t.readEscapedChar(!1),r=t.pos):(o(i)&&t.raise(t.start,"Unterminated string constant"),++t.pos)}return n+=this.input.slice(r,this.pos++),this.finishToken(F.string,n)},se.readTmplToken=function(){for(var e=this,t="",n=this.pos;;){e.pos>=e.input.length&&e.raise(e.start,"Unterminated template");var r=e.input.charCodeAt(e.pos);if(96===r||36===r&&123===e.input.charCodeAt(e.pos+1))return e.pos===e.start&&e.type===F.template?36===r?(e.pos+=2,e.finishToken(F.dollarBraceL)):(++e.pos,e.finishToken(F.backQuote)):(t+=e.input.slice(n,e.pos),e.finishToken(F.template,t));if(92===r)t+=e.input.slice(n,e.pos),t+=e.readEscapedChar(!0),n=e.pos;else if(o(r)){switch(t+=e.input.slice(n,e.pos),++e.pos,r){case 13:10===e.input.charCodeAt(e.pos)&&++e.pos;case 10:t+="\n";break;default:t+=String.fromCharCode(r)}e.options.locations&&(++e.curLine,e.lineStart=e.pos),n=e.pos}else++e.pos}},se.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.pos);switch(++this.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return y(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:return this.options.locations&&(this.lineStart=this.pos,++this.curLine),"";default:if(t>=48&&t<=55){var n=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),"0"!==n&&(this.strict||e)&&this.raise(this.pos-2,"Octal literal in strict mode"),this.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},se.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.raise(t,"Bad character escape sequence"),n},se.readWord1=function(){var e=this;this.containsEsc=!1;for(var t="",i=!0,s=this.pos,o=this.options.ecmaVersion>=6;this.pos=6||!this.containsEsc)&&this.keywords.test(e)&&(t=O[e]),this.finishToken(t,e)},e.version="4.0.4",e.parse=m,e.parseExpressionAt=g,e.tokenizer=v,e.addLooseExports=b,e.Parser=U,e.plugins=V,e.defaultOptions=D,e.Position=j,e.SourceLocation=M,e.getLineInfo=c,e.Node=K,e.TokenType=P,e.tokTypes=F,e.TokContext=te,e.tokContexts=ne,e.isIdentifierChar=r,e.isIdentifierStart=n,e.Token=ie,e.isNewLine=o,e.lineBreak=N,e.lineBreakG=$,Object.defineProperty(e,"__esModule",{value:!0})})},{}],16:[function(e,t,n){!function(e,r){"object"==typeof n&&void 0!==t?r(n):"function"==typeof define&&define.amd?define(["exports"],r):r((e.acorn=e.acorn||{},e.acorn.walk=e.acorn.walk||{}))}(this,function(e){"use strict";function t(t,n,r,i,s){r||(r=e.base),function e(t,i,s){var o=s||t.type,a=n[o];r[o](t,i,e),a&&a(t,i)}(t,i,s)}function n(t,n,r,i){r||(r=e.base);var s=[];!function e(t,i,o){var a=o||t.type,u=n[a],c=t!=s[s.length-1];c&&s.push(t),r[a](t,i,e),u&&u(t,i||s,s),c&&s.pop()}(t,i)}function r(t,n,r,i,s){var o=r?e.make(r,i):i;!function e(t,n,r){o[r||t.type](t,n,e)}(t,n,s)}function i(e){return"string"==typeof e?function(t){return t==e}:e?e:function(){return!0}}function s(t,n,r,s,o,a){s=i(s),o||(o=e.base);try{!function e(t,i,a){var u=a||t.type;if((null==n||t.start<=n)&&(null==r||t.end>=r)&&o[u](t,i,e),(null==n||t.start==n)&&(null==r||t.end==r)&&s(u,t))throw new h(t,i)}(t,a)}catch(e){if(e instanceof h)return e;throw e}}function o(t,n,r,s,o){r=i(r),s||(s=e.base);try{!function e(t,i,o){var a=o||t.type;if(!(t.start>n||t.end=n&&r(a,t))throw new h(t,i);s[a](t,i,e)}}(t,o)}catch(e){if(e instanceof h)return e;throw e}}function u(t,n,r,s,o){r=i(r),s||(s=e.base);var a;return function e(t,i,o){if(!(t.start>n)){var u=o||t.type;t.end<=n&&(!a||a.node.end=(t[n]||0))return!0;return!1}var i=n.versions.node.split("."),s=e("./core.json"),o={};for(var a in s)if(Object.prototype.hasOwnProperty.call(s,a)&&r(a))for(var u=0;u=0;c--)i.indexOf(a[c])===-1&&(u=u.concat(i.map(function(e){return s+r.join(r.join.apply(r,a.slice(0,c+1)),e)})));return"win32"===n.platform&&(u[u.length-1]=u[u.length-1].replace(":",":\\")),u.concat(t.paths)}}).call(this,e("_process"))},{_process:7,path:6}],26:[function(e,t,n){var r=e("./core"),i=e("fs"),s=e("path"),o=e("./caller.js"),a=e("./node-modules-paths.js");t.exports=function(e,t){function n(e){if(l(e))return e;for(var t=0;t=0&&e>1;return t?-n:n}var s=e("./base64"),o=5,a=1<>>=o,i>0&&(t|=c),n+=s.encode(t);while(i>0);return n},n.decode=function(e,t,n){var r,a,l=e.length,p=0,h=0;do{if(t>=l)throw new Error("Expected more digits in base 64 VLQ value.");if(a=s.decode(e.charCodeAt(t++)),a===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(a&c),a&=u,p+=a<0?t-u>1?r(u,t,i,s,o,a):a==n.LEAST_UPPER_BOUND?t1?r(e,u,i,s,o,a):a==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,s){if(0===t.length)return-1;var o=r(-1,t.length,e,t,i,s||n.GREATEST_LOWER_BOUND);if(o<0)return-1;for(;o-1>=0&&0===i(t[o],t[o-1],!0);)--o;return o}},{}],31:[function(e,t,n){function r(e,t){var n=e.generatedLine,r=t.generatedLine,i=e.generatedColumn,o=t.generatedColumn;return r>n||r==n&&o>=i||s.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var s=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){r(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(s.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=i},{"./util":36}],32:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t){return Math.round(e+Math.random()*(t-e))}function s(e,t,n,o){if(n=0){var s=this._originalMappings[i];if(void 0===e.column)for(var o=s.originalLine;s&&s.originalLine===o;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i];else for(var c=s.originalColumn;s&&s.originalLine===t&&s.originalColumn==c;)r.push({line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}),s=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,i.prototype=Object.create(r.prototype),i.prototype.consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=c.fromArray(e._names.toArray(),!0),r=t._sources=c.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var o=e._mappings.toArray().slice(),u=t.__generatedMappings=[],l=t.__originalMappings=[],h=0,f=o.length;h1&&(n.source=y+i[1],y+=i[1],n.originalLine=f+i[2],f=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&w.push(n)}p(E,a.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(w,a.compareByOriginalPositions),this.__originalMappings=w},i.prototype._findMapping=function(e,t,n,r,i,s){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,s)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var s=a.getArg(i,"source",null);null!==s&&(s=this._sources.at(s),null!=this.sourceRoot&&(s=a.join(this.sourceRoot,s)));var o=a.getArg(i,"name",null);return null!==o&&(o=this._names.at(o)),{source:s,line:a.getArg(i,"originalLine",null),column:a.getArg(i,"originalColumn",null),name:o}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=a.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=a.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=a.getArg(e,"source");if(null!=this.sourceRoot&&(t=a.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};t=this._sources.indexOf(t);var n={source:t,originalLine:a.getArg(e,"line"),originalColumn:a.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",a.compareByOriginalPositions,a.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var s=this._originalMappings[i];if(s.source===n.source)return{line:a.getArg(s,"generatedLine",null),column:a.getArg(s,"generatedColumn",null),lastColumn:a.getArg(s,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,o.prototype=Object.create(r.prototype),o.prototype.constructor=r,o.prototype._version=3,Object.defineProperty(o.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,o=0,a=1,u=0,c=0,l=0,p=0,h="",f=this._mappings.toArray(),d=0,y=f.length;d0){if(!s.compareByGeneratedPositionsInflated(t,f[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-o),o=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-c),c=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-l),l=n)),h+=e}return h},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=s.relative(t,e));var n=s.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":27,"./base64-vlq":28,"./mapping-list":31,"./util":36}],35:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[a]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,s=e("./util"),o=/(\r?\n)/,a="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)a.add(t);else{var i=n?s.join(n,e.source):e.source;a.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var a=new r,u=e.split(o),c=function(){return u.shift()+(u.shift()||"")},l=1,p=0,h=null;return t.eachMapping(function(e){if(null!==h){if(!(l0&&(h&&i(h,c()),a.add(u.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=s.join(n,e)),a.setSourceContent(e,r))}),a},r.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},r.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[a]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;l--)o=u[l],"."===o?u.splice(l,1):".."===o?c++:c>0&&(""===o?(u.splice(l+1,c),c=0):(u.splice(l,2),c--));return t=u.join("/"),""===t&&(t=a?"/":"."),r?(r.path=t,s(r)):t}function a(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),r=i(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),s(n);if(n||t.match(v))return t;if(r&&!r.host&&!r.path)return r.host=t,s(r);var a="/"===t.charAt(0)?t:o(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=a,s(r)):a}function u(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if(e=e.slice(0,r),e.match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)}function c(e){return e}function l(e){return h(e)?"$"+e:e}function p(e){return h(e)?e.slice(1):e}function h(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function f(e,t,n){var r=e.source-t.source;return 0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r||n?r:(r=e.generatedColumn-t.generatedColumn,0!==r?r:(r=e.generatedLine-t.generatedLine,0!==r?r:e.name-t.name))))}function d(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:(r=e.generatedColumn-t.generatedColumn,0!==r||n?r:(r=e.source-t.source,0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r?r:e.name-t.name))))}function y(e,t){return e===t?0:e>t?1:-1}function m(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:(n=e.generatedColumn-t.generatedColumn,0!==n?n:(n=y(e.source,t.source),0!==n?n:(n=e.originalLine-t.originalLine,0!==n?n:(n=e.originalColumn-t.originalColumn,0!==n?n:y(e.name,t.name)))))}n.getArg=r;var g=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,v=/^data:.+\,.+$/;n.urlParse=i,n.urlGenerate=s,n.normalize=o,n.join=a,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(g)},n.relative=u;var b=function(){return!("__proto__"in Object.create(null))}();n.toSetString=b?c:l,n.fromSetString=b?c:p,n.compareByOriginalPositions=f,n.compareByGeneratedPositionsDeflated=d,n.compareByGeneratedPositionsInflated=m},{}],37:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":33,"./lib/source-map-generator":34,"./lib/source-node":35}],38:[function(e,t,n){t.exports={name:"nodent",version:"3.0.7",description:"NoDent - Asynchronous Javascript language extensions",main:"nodent.js",scripts:{cover:"istanbul cover ./nodent.js tests -- --quick --syntax --forceStrict ; open ./coverage/lcov-report/index.html",test:"cd tests && npm i --prod && cd .. && node --expose-gc ./nodent.js tests --syntax --quick","test-loader":"cd tests/loader/app && npm test && cd ../../..",start:"./nodent.js"},bin:{nodentjs:"./nodent.js"},dependencies:{acorn:">=2.5.2","acorn-es7-plugin":"^1.1.3","nodent-runtime":"^3.0.3",resolve:"^1.1.7","source-map":"0.5.6"},repository:{type:"git",url:"git+https://github.com/MatAtBread/nodent.git"},engines:"node >= 0.10.0",keywords:["Javascript","ES7","async","await","language","extensions","Node","callback","generator","Promise","asynchronous"],author:{name:"Mat At Bread",email:"nodent@mailed.me.uk"},license:"BSD-2-Clause",bugs:{url:"https://github.com/MatAtBread/nodent/issues"},gitHead:"8ea9feab498470d7a2c3c09326a1c17e8eeb332a",homepage:"https://github.com/MatAtBread/nodent#readme",_id:"nodent@3.0.7",_shasum:"08dd540baf834c136648aeaa9ae8ecd4bf92aa52",_from:"nodent@>=3.0.2 <4.0.0",_npmVersion:"3.10.3",_nodeVersion:"6.7.0",_npmUser:{name:"matatbread",email:"npm@mailed.me.uk"},maintainers:[{name:"matatbread",email:"npm@mailed.me.uk"}],dist:{shasum:"08dd540baf834c136648aeaa9ae8ecd4bf92aa52",tarball:"https://registry.npmjs.org/nodent/-/nodent-3.0.7.tgz"},_npmOperationalInternal:{host:"packages-18-east.internal.npmjs.com",tmp:"tmp/nodent-3.0.7.tgz_1477471431033_0.10623699799180031"},directories:{},_resolved:"https://registry.npmjs.org/nodent/-/nodent-3.0.7.tgz",readme:"ERROR: No README data found!"}},{}],nodent:[function(e,t,n){(function(n,r,i,s,o,a,u,c){"use strict";function l(e){var t={};return e.forEach(function(e){if(e&&"object"==typeof e)for(var n in e)t[n]=e[n]}),t}function p(e){throw e}function h(){}function f(e){return"ExpressionStatement"===e.type&&("StringLiteral"===e.expression.type||"Literal"===e.expression.type&&"string"==typeof e.expression.value)}function d(t,n,r){n||(n=console.warn.bind(console));var i,s,o={};if("string"==typeof t)(i=t.match(M))&&(s=i[1]||"default");else for(var a=0;a"))}return o.promises||o.es7||o.generators||o.engine?((o.promises||o.es7)&&o.generators&&(n("No valid 'use nodent' directive, assumed -es7 mode"),o=j.es7),(o.generators||o.engine)&&(o.promises=!0),o.promises&&(o.es7=!0),o):null}function y(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),"#!"===e.substring(0,2)&&(e="//"+e),e}function m(e){var t;return t=e instanceof i?e:new i(e.toString(),"binary"),t.toString("base64")}function g(e,t){return t=t||e.log,function(n,r,i){var s=y(R.readFileSync(r,"utf8")),o=e.parse(s,r,i);i=i||d(o.ast,t,r),e.asynchronize(o,void 0,i,t),e.prettyPrint(o,i),n._compile(o.code,o.filename)}}function v(e){return e=e||q,function(t,n,r){if(Array.isArray(n)){var i=n;n=function(e,t){return i.indexOf(e)>=0}}else n=n||function(e,t){return!(e.match(/Sync$/)&&e.replace(/Sync$/,"")in t)};r||(r="");var s=Object.create(t);for(var o in s)!function(){var i=o;try{"function"!=typeof t[i]||s[i+r]&&s[i+r].isAsync||!n(i,s)||(s[i+r]=function(){var n=Array.prototype.slice.call(arguments);return new e(function(e,r){var s=function(t,n){if(t)return r(t);switch(arguments.length){case 0:return e();case 2:return e(n);default:return e(Array.prototype.slice.call(arguments,1))}};n.length>t[i].length?n.push(s):n[t[i].length-1]=s;t[i].apply(t,n)})},s[i+r].isAsync=!0)}catch(e){}}();return s.super=t,s}}function b(t,n){var r=t.filename.split("/"),i=r.pop(),s=O(t.ast,n&&n.sourcemap?{map:{startLine:n.mapStartLine||0,file:i+"(original)",sourceMapRoot:r.join("/"),sourceContent:t.origCode}}:null,t.origCode);if(n&&n.sourcemap)try{var o="",a=s.map.toJSON();if(a){var u=e("source-map").SourceMapConsumer;t.sourcemap=a,T[t.filename]={map:a,smc:new u(a)},o="\n\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,"+m(JSON.stringify(a))+"\n"}t.code=s.code+o}catch(e){t.code=s}else t.code=s;return t}function x(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n);var i={origCode:e.toString(),filename:t};try{return i.ast=F.parse(i.origCode,r&&r.parser),r.babelTree&&F.treeWalker(i.ast,function(e,t,n){"Literal"===e.type?n[0].replace(N.babelLiteralNode(e.value)):"Property"===e.type&&("ClassBody"===n[0].parent.type?e.type="ClassProperty":e.type="ObjectProperty"),t()}),i}catch(e){if(e instanceof SyntaxError){var s=i.origCode.substr(e.pos-e.loc.column);s=s.split("\n")[0],e.message+=" "+t+" (nodent)\n"+s+"\n"+s.replace(/[\S ]/g,"-").substring(0,e.loc.column)+"^",e.stack=""}throw e}}function w(t,n){n=n||{};var r=t+"|"+Object.keys(n).sort().reduce(function(e,t){return e+t+JSON.stringify(n[t])},"");return this.covers[r]||(t.indexOf("/")>=0?this.covers[r]=e(t):this.covers[r]=e(c+"/covers/"+t)),this.covers[r](this,n)}function E(e,t,n,r){"object"==typeof n&&void 0===r&&(r=n),r=r||{};for(var i in I)i in r||(r[i]=I[i]);var s=this.parse(e,t,null,r);return this.asynchronize(s,null,r,this.log||h),this.prettyPrint(s,r),s}function S(t,n,r){var i={},s=this;n||(n=/\.njs$/),r?r.compiler||(r.compiler={}):r={compiler:{}};var o=l([B,r.compiler]);return function(a,u,c){function l(e){u.statusCode=500,u.write(e.toString()),u.end()}if(i[a.url])return u.setHeader("Content-Type",i[a.url].contentType),r.setHeaders&&r.setHeaders(u),u.write(i[a.url].output),void u.end();if(!(a.url.match(n)||r.htmlScriptRegex&&a.url.match(r.htmlScriptRegex)))return c&&c();var p=t+a.url;if(r.extensions&&!R.existsSync(p))for(var h=0;h …"+n.source+":"+n.line+":"+n.column+(e.getFunctionName()?")":"")}}return"\n    at "+e}return e+t.map(n).join("")}function _(e){var t={};t[I.$asyncbind]={value:V,writable:!0,enumerable:!1,configurable:!0},t[I.$asyncspawn]={value:U,writable:!0,enumerable:!1,configurable:!0};try{Object.defineProperties(Function.prototype,t)}catch(t){e.log("Function prototypes already assigned: ",t.messsage)}I[I.$error]in r||(r[I[I.$error]]=p),e.augmentObject&&Object.defineProperties(Object.prototype,{asyncify:{value:function(e,t,n){return v(e)(this,t,n)},writable:!0,configurable:!0},isThenable:{value:function(){return q.isThenable(this)},writable:!0,configurable:!0}}),Object[I.$makeThenable]=q.resolve}function C(t){function n(e,t){e=e.split("."),t=t.split(".");for(var n=0;n<3;n++){if(e[n]t[n])return 1}return 0}function r(i,s){if(!s.match(/nodent\/nodent\.js$/)){if(s.match(/node_modules\/nodent\/.*\.js$/))return P(i,s);for(var u=0;u=3&&L()}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},e("buffer").Buffer,arguments[3],arguments[4],arguments[5],arguments[6],"/node_modules/nodent")},{"./htmlScriptParser":8,"./lib/arboriculture":9,"./lib/output":10,"./lib/parser":11,"./package.json":38,_process:7,buffer:2,fs:1,"nodent-runtime":17,path:6,resolve:20,"source-map":37}]},{},[]);
\ No newline at end of file
diff --git a/tools/eslint/node_modules/ajv/dist/regenerator.min.js b/tools/eslint/node_modules/ajv/dist/regenerator.min.js
index 2d0d23621e24f4..83b02b98af34aa 100644
--- a/tools/eslint/node_modules/ajv/dist/regenerator.min.js
+++ b/tools/eslint/node_modules/ajv/dist/regenerator.min.js
@@ -1,36 +1,36 @@
 /* regenerator 0.9.5: Source transformer enabling ECMAScript 6 generator functions (yield) in JavaScript-of-today (ES5) */
-require=function e(t,n,r){function i(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return i(n?n:e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var a="function"==typeof require&&require,s=0;s=0;a--)if(s[a]!=o[a])return!1;for(a=s.length-1;a>=0;a--)if(i=s[a],!u(e[i],t[i]))return!1;return!0}function p(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||t.call({},e)===!0)}function f(e,t,n,r){var i;h.isString(n)&&(r=n,n=null);try{t()}catch(e){i=e}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s(i,n,"Missing expected exception"+r),!e&&p(i,n)&&s(i,n,"Got unwanted exception"+r),e&&i&&n&&!p(i,n)||!e&&i)throw i}var h=e("util/"),d=Array.prototype.slice,y=Object.prototype.hasOwnProperty,m=t.exports=o;m.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=a(this),this.generatedMessage=!0);var t=e.stackStartFunction||s;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,o=r.indexOf("\n"+i);if(o>=0){var u=r.indexOf("\n",o+1);r=r.substring(u+1)}this.stack=r}}},h.inherits(m.AssertionError,Error),m.fail=s,m.ok=o,m.equal=function(e,t,n){e!=t&&s(e,t,n,"==",m.equal)},m.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",m.notEqual)},m.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",m.deepEqual)},m.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",m.strictEqual)},m.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",m.notStrictEqual)},m.throws=function(e,t,n){f.apply(this,[!0].concat(d.call(arguments)))},m.doesNotThrow=function(e,t){f.apply(this,[!1].concat(d.call(arguments)))},m.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var n in e)y.call(e,n)&&t.push(n);return t}},{"util/":35}],3:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],4:[function(e,t,n){(function(t){"use strict";function r(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}function i(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(i()=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),s.alloc(+e)}function b(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return X(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(r)return X(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return B(this,t,n);case"utf8":case"utf-8":return F(this,t,n);case"ascii":return P(this,t,n);case"latin1":case"binary":return j(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function v(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function x(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:_(e,t,n,r,i);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):_(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function _(e,t,n,r,i){function a(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,o=e.length,u=t.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,o/=2,u/=2,n/=2}var l;if(i){var c=-1;for(l=n;lo&&(n=o-u),l=n;l>=0;l--){for(var p=!0,f=0;fi&&(r=i)):r=i;var a=t.length;if(a%2!==0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var s=0;s239?4:a>223?3:a>191?2:1;if(i+o<=n){var u,l,c,p;switch(o){case 1:a<128&&(s=a);break;case 2:u=e[i+1],128===(192&u)&&(p=(31&a)<<6|63&u,p>127&&(s=p));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(p=(15&a)<<12|(63&u)<<6|63&l,p>2047&&(p<55296||p>57343)&&(s=p));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(p=(15&a)<<18|(63&u)<<12|(63&l)<<6|63&c,p>65535&&p<1114112&&(s=p))}}null===s?(s=65533,o=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=o}return T(r)}function T(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr)&&(n=r);for(var i="",a=t;an)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,n,r,i,a){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function R(e,t,n,r,i,a){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(e,t,n,r,i){return i||R(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),Q.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,i){return i||R(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),Q.write(e,t,n,r,52,8),n+8}function G(e){if(e=q(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function q(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function K(e){return e<16?"0"+e.toString(16):e.toString(16)}function X(e,t){t=t||1/0;for(var n,r=e.length,i=null,a=[],s=0;s55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function J(e){for(var t=[],n=0;n>8,i=n%256,a.push(i),a.push(r);return a}function z(e){return $.toByteArray(G(e))}function Y(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function H(e){return e!==e}var $=e("base64-js"),Q=e("ieee754"),Z=e("isarray");n.Buffer=s,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),n.kMaxLength=i(),s.poolSize=8192,s._augment=function(e){return e.__proto__=s.prototype,e},s.from=function(e,t,n){return o(null,e,t,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(e,t,n){return l(null,e,t,n)},s.allocUnsafe=function(e){return c(null,e)},s.allocUnsafeSlow=function(e){return c(null,e)},s.isBuffer=function(e){return!(null==e||!e._isBuffer)},s.compare=function(e,t){if(!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,a=Math.min(n,r);i0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},s.prototype.compare=function(e,t,n,r,i){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var a=i-r,o=n-t,u=Math.min(a,o),l=this.slice(r,i),c=e.slice(t,n),p=0;pi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return A(this,e,t,n);case"ascii":return D(this,e,t,n);case"latin1":case"binary":return C(this,e,t,n);case"base64":return S(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;s.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t0&&(i*=256);)r+=this[e+--t]*i;return r},s.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],i=1,a=0;++a=i&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,i=1,a=this[e+--r];r>0&&(i*=256);)a+=this[e+--r]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*t)),a},s.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},s.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),Q.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),Q.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),Q.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),Q.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t|=0,n|=0,!r){var i=Math.pow(2,8*n)-1;N(this,e,t,n,i,0)}var a=1,s=0;for(this[t]=255&e;++s=0&&(s*=256);)this[t+a]=e/s&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):M(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var a=0,s=1,o=0;for(this[t]=255&e;++a>0)-o&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var a=n-1,s=1,o=0;for(this[t+a]=255&e;--a>=0&&(s*=256);)e<0&&0===o&&0!==this[t+a+1]&&(o=1),this[t+a]=(e/s>>0)-o&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):M(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return U(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return U(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-r(e)}function a(e){var t,n,i,a,s,o,u=e.length;s=r(e),o=new p(3*u/4-s),i=s>0?u-4:u;var l=0;for(t=0,n=0;t>16&255,o[l++]=a>>8&255,o[l++]=255&a;return 2===s?(a=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,o[l++]=255&a):1===s&&(a=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,o[l++]=a>>8&255,o[l++]=255&a),o}function s(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function o(e,t,n){for(var r,i=[],a=t;ac?c:u+s));return 1===r?(t=e[n-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),a.push(i),a.join("")}n.byteLength=i,n.toByteArray=a,n.fromByteArray=u;for(var l=[],c=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,d=f.length;h>1,c=-7,p=n?i-1:0,f=n?-1:1,h=e[t+p];for(p+=f,a=h&(1<<-c)-1,h>>=-c,c+=o;c>0;a=256*a+e[t+p],p+=f,c-=8);for(s=a&(1<<-c)-1,a>>=-c,c+=r;c>0;s=256*s+e[t+p],p+=f,c-=8);if(0===a)a=1-l;else{if(a===u)return s?NaN:(h?-1:1)*(1/0);s+=Math.pow(2,r),a-=l}return(h?-1:1)*s*Math.pow(2,a-r)},n.write=function(e,t,n,r,i,a){var s,o,u,l=8*a-i-1,c=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:a-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),t+=s+p>=1?f/u:f*Math.pow(2,1-p),t*u>=2&&(s++,u/=2),s+p>=c?(o=0,s=c):s+p>=1?(o=(t*u-1)*Math.pow(2,i),s+=p):(o=t*Math.pow(2,p-1)*Math.pow(2,i),s=0));i>=8;e[n+h]=255&o,h+=d,o/=256,i-=8);for(s=s<0;e[n+h]=255&s,h+=d,s/=256,l-=8);e[n+h-d]|=128*y}},{}],7:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],8:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function a(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!a(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,a,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(n=this._events[e],o(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),n.apply(this,a)}else if(s(n))for(a=Array.prototype.slice.call(arguments,1),l=n.slice(),r=l.length,u=0;u0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,a,o;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],a=n.length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(o=a;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){r=o;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],i(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return t=this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],9:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],10:[function(e,t,n){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||i(e)||!!e._isBuffer)}},{}],11:[function(e,t,n){n.endianness=function(){return"LE"},n.hostname=function(){return"undefined"!=typeof location?location.hostname:""},n.loadavg=function(){return[]},n.uptime=function(){return 0},n.freemem=function(){return Number.MAX_VALUE},n.totalmem=function(){return Number.MAX_VALUE},n.cpus=function(){return[]},n.type=function(){return"Browser"},n.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},n.networkInterfaces=n.getNetworkInterfaces=function(){return{}},n.arch=function(){return"javascript"},n.platform=function(){return"browser"},n.tmpdir=n.tmpDir=function(){return"/tmp"},n.EOL="\n"},{}],12:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;a--){var s=a>=0?arguments[a]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,i="/"===s.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),a="/"===s(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"),e||i||(e="."),e&&a&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");
-return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),s=Math.min(i.length,a.length),o=s,u=0;u1)for(var n=1;n0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var u=new Error("stream.unshift() after end event");e.emit("error",u)}else{var l;!t.decoder||i||r||(n=t.decoder.write(n),l=!t.objectMode&&0===n.length),i||(t.reading=!1),l||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,i?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&f(e))),d(e,t)}else i||(t.reading=!1);return o(t)}function o(e){return!e.ended&&(e.needReadable||e.length=V?e=V:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function l(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=u(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function c(e,t){var n=null;return O.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function p(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,f(e)}}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(M("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?T(h,e):h(e))}function h(e){M("emit readable"),e.emit("readable"),x(e)}function d(e,t){t.readingMore||(t.readingMore=!0,T(y,e,t))}function y(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=E(e,t.buffer,t.decoder),n}function E(e,t,n){var r;return ea.length?a.length:e;if(i+=s===a.length?a:a.slice(0,e),e-=s,0===e){s===a.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(s));break}++r}return t.length-=r,i}function D(e,t){var n=I.allocUnsafe(e),r=t.head,i=1;for(r.data.copy(n),e-=r.data.length;r=r.next;){var a=r.data,s=e>a.length?a.length:e;if(a.copy(n,n.length-e,0,s),e-=s,0===e){s===a.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(s));break}++i}return t.length-=i,n}function C(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,T(S,t,e))}function S(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function w(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return M("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?C(this):f(this),null;if(e=l(e,t),0===e&&t.ended)return 0===t.length&&C(this),null;var r=t.needReadable;M("need readable",r),(0===t.length||t.length-e0?_(e,t):null,null===i?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&C(this)),null!==i&&this.emit("data",i),i},a.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},a.prototype.pipe=function(e,t){function i(e){M("onunpipe"),e===f&&s()}function a(){M("onend"),e.end()}function s(){M("cleanup"),e.removeListener("close",l),e.removeListener("finish",c),e.removeListener("drain",b),e.removeListener("error",u),e.removeListener("unpipe",i),f.removeListener("end",a),f.removeListener("end",s),f.removeListener("data",o),g=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||b()}function o(t){M("ondata"),v=!1;var n=e.write(t);!1!==n||v||((1===h.pipesCount&&h.pipes===e||h.pipesCount>1&&k(h.pipes,e)!==-1)&&!g&&(M("false write response, pause",f._readableState.awaitDrain),f._readableState.awaitDrain++,v=!0),f.pause())}function u(t){M("onerror",t),p(),e.removeListener("error",u),0===B(e,"error")&&e.emit("error",t)}function l(){e.removeListener("finish",c),p()}function c(){M("onfinish"),e.removeListener("close",l),p()}function p(){M("unpipe"),f.unpipe(e)}var f=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,M("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==n.stdout&&e!==n.stderr,y=d?a:s;h.endEmitted?T(y):f.once("end",y),e.on("unpipe",i);var b=m(f);e.on("drain",b);var g=!1,v=!1;return f.on("data",o),r(e,"error",u),e.once("close",l),e.once("finish",c),e.emit("pipe",f),h.flowing||(M("pipe resume"),f.resume()),e},a.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var n=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1?setImmediate:D;s.WritableState=a;var S=e("core-util-is");S.inherits=e("inherits");var w,k={deprecate:e("util-deprecate")};!function(){try{w=e("stream")}catch(e){}finally{w||(w=e("events").EventEmitter)}}();var F=e("buffer").Buffer,T=e("buffer-shims");S.inherits(s,w),a.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(a.prototype,"buffer",{get:k.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var P;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(P=Function.prototype[Symbol.hasInstance],Object.defineProperty(s,Symbol.hasInstance,{value:function(e){return!!P.call(this,e)||e&&e._writableState instanceof a}})):P=function(e){return e instanceof this},s.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},s.prototype.write=function(e,t,n){var i=this._writableState,a=!1;return"function"==typeof t&&(n=t,t=null),F.isBuffer(e)?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=r),i.ended?o(this,n):u(this,i,e,n)&&(i.pendingcb++,a=c(this,i,e,t,n)),a},s.prototype.cork=function(){var e=this._writableState;e.corked++},s.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||b(this,e))},s.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},s.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},s.prototype._writev=null,s.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||_(this,r,n)}}).call(this,e("_process"))},{"./_stream_duplex":15,_process:13,buffer:4,"buffer-shims":21,"core-util-is":22,events:8,inherits:9,"process-nextick-args":24,"util-deprecate":25}],20:[function(e,t,n){"use strict";function r(){this.head=null,this.tail=null,this.length=0}var i=(e("buffer").Buffer,e("buffer-shims"));t.exports=r,r.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},r.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},r.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},r.prototype.clear=function(){this.head=this.tail=null,this.length=0},r.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},r.prototype.concat=function(e){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var t=i.allocUnsafe(e>>>0),n=this.head,r=0;n;)n.data.copy(t,r),r+=n.data.length,n=n.next;return t}},{buffer:4,"buffer-shims":21}],21:[function(e,t,n){(function(t){"use strict";var r=e("buffer"),i=r.Buffer,a=r.SlowBuffer,s=r.kMaxLength||2147483647;n.alloc=function(e,t,n){if("function"==typeof i.alloc)return i.alloc(e,t,n);if("number"==typeof n)throw new TypeError("encoding must not be number");if("number"!=typeof e)throw new TypeError("size must be a number");if(e>s)throw new RangeError("size is too large");var r=n,a=t;void 0===a&&(r=void 0,a=0);var o=new i(e);if("string"==typeof a)for(var u=new i(a,r),l=u.length,c=-1;++cs)throw new RangeError("size is too large");return new i(e)},n.from=function(e,n,r){if("function"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,n,r);if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new i(e,n);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var a=n;if(1===arguments.length)return new i(e);"undefined"==typeof a&&(a=0);var s=r;if("undefined"==typeof s&&(s=e.byteLength-a),a>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(s>e.byteLength-a)throw new RangeError("'length' is out of bounds");return new i(e.slice(a,a+s))}if(i.isBuffer(e)){var o=new i(e.length);return e.copy(o,0,0,e.length),o}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new i(e);if("Buffer"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},n.allocUnsafeSlow=function(e){if("function"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(e);if("number"!=typeof e)throw new TypeError("size must be a number");if(e>=s)throw new RangeError("size is too large");return new a(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:4}],22:[function(e,t,n){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===m(e)}function r(e){return"boolean"==typeof e}function i(e){return null===e}function a(e){return null==e}function s(e){return"number"==typeof e}function o(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function l(e){return void 0===e}function c(e){return"[object RegExp]"===m(e)}function p(e){return"object"==typeof e&&null!==e}function f(e){return"[object Date]"===m(e)}function h(e){return"[object Error]"===m(e)||e instanceof Error}function d(e){return"function"==typeof e}function y(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function m(e){return Object.prototype.toString.call(e)}n.isArray=t,n.isBoolean=r,n.isNull=i,n.isNullOrUndefined=a,n.isNumber=s,n.isString=o,n.isSymbol=u,n.isUndefined=l,n.isRegExp=c,n.isObject=p,n.isDate=f,n.isError=h,n.isFunction=d,n.isPrimitive=y,n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":10}],23:[function(e,t,n){arguments[4][7][0].apply(n,arguments)},{dup:7}],24:[function(e,t,n){(function(e){"use strict";function n(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,s,o=arguments.length;switch(o){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(a=new Array(o-1),s=0;s=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,r=t.charCodeAt(i);if(r>=55296&&r<=56319){var a=this.surrogateSize;return this.charLength+=a,this.charReceived+=a,this.charBuffer.copy(this.charBuffer,a,0,a),e.copy(this.charBuffer,0,0,a),t.substring(0,i)}return t},l.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var n=e[e.length-t];if(1==t&&n>>5==6){this.charLength=2;break}if(t<=2&&n>>4==14){this.charLength=3;break}if(t<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=t},l.prototype.end=function(e){var t="";
-if(e&&e.length&&(t=this.write(e)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;t+=r.slice(0,n).toString(i)}return t}},{buffer:4}],32:[function(e,t,n){function r(){throw new Error("tty.ReadStream is not implemented")}function i(){throw new Error("tty.ReadStream is not implemented")}n.isatty=function(){return!1},n.ReadStream=r,n.WriteStream=i},{}],33:[function(e,t,n){arguments[4][9][0].apply(n,arguments)},{dup:9}],34:[function(e,t,n){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],35:[function(e,t,n){(function(t,r){function i(e,t){var r={seen:[],stylize:s};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),y(t)?r.showHidden=t:t&&n._extend(r,t),_(r.showHidden)&&(r.showHidden=!1),_(r.depth)&&(r.depth=2),_(r.colors)&&(r.colors=!1),_(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),u(r,e,r.depth)}function a(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"["+i.colors[n][1]+"m":e}function s(e,t){return e}function o(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function u(e,t,r){if(e.customInspect&&t&&S(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return v(i)||(i=u(e,i,r)),i}var a=l(e,t);if(a)return a;var s=Object.keys(t),y=o(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(t)),C(t)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(t);if(0===s.length){if(S(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(E(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(D(t))return e.stylize(Date.prototype.toString.call(t),"date");if(C(t))return c(t)}var b="",g=!1,x=["{","}"];if(d(t)&&(g=!0,x=["[","]"]),S(t)){var _=t.name?": "+t.name:"";b=" [Function"+_+"]"}if(E(t)&&(b=" "+RegExp.prototype.toString.call(t)),D(t)&&(b=" "+Date.prototype.toUTCString.call(t)),C(t)&&(b=" "+c(t)),0===s.length&&(!g||0==t.length))return x[0]+b+x[1];if(r<0)return E(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var A;return A=g?p(e,t,r,y,s):s.map(function(n){return f(e,t,r,y,n,g)}),e.seen.pop(),h(A,b,x)}function l(e,t){if(_(t))return e.stylize("undefined","undefined");if(v(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return g(t)?e.stylize(""+t,"number"):y(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,n,r,i){for(var a=[],s=0,o=t.length;s-1&&(o=a?o.split("\n").map(function(e){return"  "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return"   "+e}).join("\n"))):o=e.stylize("[Circular]","special")),_(s)){if(a&&i.match(/^\d+$/))return o;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+o}function h(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n  ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function d(e){return Array.isArray(e)}function y(e){return"boolean"==typeof e}function m(e){return null===e}function b(e){return null==e}function g(e){return"number"==typeof e}function v(e){return"string"==typeof e}function x(e){return"symbol"==typeof e}function _(e){return void 0===e}function E(e){return A(e)&&"[object RegExp]"===k(e)}function A(e){return"object"==typeof e&&null!==e}function D(e){return A(e)&&"[object Date]"===k(e)}function C(e){return A(e)&&("[object Error]"===k(e)||e instanceof Error)}function S(e){return"function"==typeof e}function w(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||"undefined"==typeof e}function k(e){return Object.prototype.toString.call(e)}function F(e){return e<10?"0"+e.toString(10):e.toString(10)}function T(){var e=new Date,t=[F(e.getHours()),F(e.getMinutes()),F(e.getSeconds())].join(":");return[e.getDate(),I[e.getMonth()],t].join(" ")}function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;n.format=function(e){if(!v(e)){for(var t=[],n=0;n=a)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),o=r[n];n1&&void 0!==arguments[1]?arguments[1]:{};return t.filename=e,T(m.default.readFileSync(e,"utf8"),t)}n.__esModule=!0,n.transformFromAst=n.transform=n.analyse=n.Pipeline=n.OptionManager=n.traverse=n.types=n.messages=n.util=n.version=n.template=n.buildExternalHelpers=n.options=n.File=void 0;var u=e("../transformation/file");Object.defineProperty(n,"File",{enumerable:!0,get:function(){return i(u).default}});var l=e("../transformation/file/options/config");Object.defineProperty(n,"options",{enumerable:!0,get:function(){return i(l).default}});var c=e("../tools/build-external-helpers");Object.defineProperty(n,"buildExternalHelpers",{enumerable:!0,get:function(){return i(c).default}});var p=e("babel-template");Object.defineProperty(n,"template",{enumerable:!0,get:function(){return i(p).default}});var f=e("../../package");Object.defineProperty(n,"version",{enumerable:!0,get:function(){return f.version}}),n.Plugin=a,n.transformFile=s,n.transformFileSync=o;var h=e("lodash/isFunction"),d=i(h),y=e("fs"),m=i(y),b=e("../util"),g=r(b),v=e("babel-messages"),x=r(v),_=e("babel-types"),E=r(_),A=e("babel-traverse"),D=i(A),C=e("../transformation/file/options/option-manager"),S=i(C),w=e("../transformation/pipeline"),k=i(w);n.util=g,n.messages=x,n.types=E,n.traverse=D.default,n.OptionManager=S.default,n.Pipeline=k.default;var F=new k.default,T=(n.analyse=F.analyse.bind(F),n.transform=F.transform.bind(F));n.transformFromAst=F.transformFromAst.bind(F)},{"../../package":528,"../tools/build-external-helpers":44,"../transformation/file":45,"../transformation/file/options/config":49,"../transformation/file/options/option-manager":51,"../transformation/pipeline":56,"../util":59,"babel-messages":99,"babel-template":225,"babel-traverse":229,"babel-types":265,fs:1,"lodash/isFunction":480}],40:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/core-js/get-iterator"),a=r(i);n.default=function(e,t){if(e&&t)return(0,o.default)(e,t,function(e,t){if(t&&Array.isArray(e)){for(var n=t.slice(0),r=e,i=Array.isArray(r),s=0,r=i?r:(0,a.default)(r);;){var o;if(i){if(s>=r.length)break;o=r[s++]}else{if(s=r.next(),s.done)break;o=s.value}var u=o;n.indexOf(u)<0&&n.push(u)}return n}})};var s=e("lodash/mergeWith"),o=r(s);t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"lodash/mergeWith":495}],41:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}n.__esModule=!0,n.default=function(e,t,n){if(e){if("Program"===e.type)return a.file(e,t||[],n||[]);if("File"===e.type)return e}throw new Error("Not a valid ast?")};var i=e("babel-types"),a=r(i);t.exports=n.default},{"babel-types":265}],42:[function(e,t,n){(function(r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/typeof"),s=i(a);n.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.cwd();if("object"===("undefined"==typeof u.default?"undefined":(0,s.default)(u.default)))return null;var n=p[t];if(!n){n=new u.default;var i=c.default.join(t,".babelrc");n.id=i,n.filename=i,n.paths=u.default._nodeModulePaths(t),p[t]=n}try{return u.default._resolveFilename(e,n)}catch(e){return null}};var o=e("module"),u=i(o),l=e("path"),c=i(l),p={};t.exports=n.default}).call(this,e("_process"))},{_process:13,"babel-runtime/helpers/typeof":118,module:1,path:12}],43:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/core-js/map"),a=r(i),s=e("babel-runtime/helpers/classCallCheck"),o=r(s),u=e("babel-runtime/helpers/possibleConstructorReturn"),l=r(u),c=e("babel-runtime/helpers/inherits"),p=r(c),f=function(e){function t(){(0,o.default)(this,t);var n=(0,l.default)(this,e.call(this));return n.dynamicData={},n}return(0,p.default)(t,e),t.prototype.setDynamic=function(e,t){this.dynamicData[e]=t},t.prototype.get=function(t){if(this.has(t))return e.prototype.get.call(this,t);if(Object.prototype.hasOwnProperty.call(this.dynamicData,t)){var n=this.dynamicData[t]();return this.set(t,n),n}},t}(a.default);n.default=f,t.exports=n.default},{"babel-runtime/core-js/map":102,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117}],44:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(e,t){var n=[],r=x.functionExpression(null,[x.identifier("global")],x.blockStatement(n)),i=x.program([x.expressionStatement(x.callExpression(r,[c.get("selfGlobal")]))]);return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.assignmentExpression("=",x.memberExpression(x.identifier("global"),e),x.objectExpression([])))])),t(n),i}function s(e,t){var n=[];return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.identifier("global"))])),t(n),x.program([_({FACTORY_PARAMETERS:x.identifier("global"),BROWSER_ARGUMENTS:x.assignmentExpression("=",x.memberExpression(x.identifier("root"),e),x.objectExpression([])),COMMON_ARGUMENTS:x.identifier("exports"),AMD_ARGUMENTS:x.arrayExpression([x.stringLiteral("exports")]),FACTORY_BODY:n,UMD_ROOT:x.identifier("this")})])}function o(e,t){var n=[];return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.objectExpression([]))])),t(n),n.push(x.expressionStatement(e)),x.program(n)}function u(e,t,n){(0,g.default)(c.list,function(r){if(!(n&&n.indexOf(r)<0)){var i=x.identifier(r);e.push(x.expressionStatement(x.assignmentExpression("=",x.memberExpression(t,i),c.get(r))))}})}n.__esModule=!0,n.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"global",n=x.identifier("babelHelpers"),r=function(t){return u(t,n,e)},i=void 0,l={global:a,umd:s,var:o}[t];if(!l)throw new Error(d.get("unsupportedOutputType",t));return i=l(n,r),(0,f.default)(i).code};var l=e("babel-helpers"),c=i(l),p=e("babel-generator"),f=r(p),h=e("babel-messages"),d=i(h),y=e("babel-template"),m=r(y),b=e("lodash/each"),g=r(b),v=e("babel-types"),x=i(v),_=(0,m.default)('\n  (function (root, factory) {\n    if (typeof define === "function" && define.amd) {\n      define(AMD_ARGUMENTS, factory);\n    } else if (typeof exports === "object") {\n      factory(COMMON_ARGUMENTS);\n    } else {\n      factory(BROWSER_ARGUMENTS);\n    }\n  })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n    FACTORY_BODY\n  });\n');t.exports=n.default},{"babel-generator":85,"babel-helpers":98,"babel-messages":99,"babel-template":225,"babel-types":265,"lodash/each":461}],45:[function(e,t,n){(function(t){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0,n.File=void 0;var a=e("babel-runtime/helpers/typeof"),s=i(a),o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("babel-runtime/core-js/object/create"),c=i(l),p=e("babel-runtime/core-js/object/assign"),f=i(p),h=e("babel-runtime/helpers/classCallCheck"),d=i(h),y=e("babel-runtime/helpers/possibleConstructorReturn"),m=i(y),b=e("babel-runtime/helpers/inherits"),g=i(b),v=e("babel-helpers"),x=i(v),_=e("./metadata"),E=r(_),A=e("convert-source-map"),D=i(A),C=e("./options/option-manager"),S=i(C),w=e("../plugin-pass"),k=i(w),F=e("babel-traverse"),T=i(F),P=e("source-map"),j=i(P),B=e("babel-generator"),O=i(B),I=e("babel-code-frame"),N=i(I),L=e("lodash/defaults"),M=i(L),R=e("./logger"),U=i(R),V=e("../../store"),G=i(V),q=e("babylon"),K=e("../../util"),X=r(K),J=e("path"),W=i(J),z=e("babel-types"),Y=r(z),H=e("../../helpers/resolve"),$=i(H),Q=e("../internal-plugins/block-hoist"),Z=i(Q),ee=e("../internal-plugins/shadow-functions"),te=i(ee),ne=/^#!.*/,re=[[Z.default],[te.default]],ie={enter:function(e,t){var n=e.node.loc;n&&(t.loc=n,e.stop())}},ae=function(n){function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];(0,d.default)(this,r);var i=(0,m.default)(this,n.call(this));return i.pipeline=t,i.log=new U.default(i,e.filename||"unknown"),i.opts=i.initOptions(e),i.parserOpts={sourceType:i.opts.sourceType,sourceFileName:i.opts.filename,plugins:[]},i.pluginVisitors=[],i.pluginPasses=[],i.buildPluginsForOptions(i.opts),i.opts.passPerPreset&&(i.perPresetOpts=[],i.opts.presets.forEach(function(e){var t=(0,f.default)((0,c.default)(i.opts),e);i.perPresetOpts.push(t),i.buildPluginsForOptions(t)})),i.metadata={usedHelpers:[],marked:[],modules:{imports:[],exports:{exported:[],specifiers:[]}}},i.dynamicImportTypes={},i.dynamicImportIds={},i.dynamicImports=[],i.declarations={},i.usedHelpers={},i.path=null,i.ast={},i.code="",i.shebang="",i.hub=new F.Hub(i),i}return(0,g.default)(r,n),r.prototype.getMetadata=function(){for(var e=!1,t=this.ast.program.body,n=Array.isArray(t),r=0,t=n?t:(0,u.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(Y.isModuleDeclaration(a)){e=!0;break}}e&&this.path.traverse(E,this)},r.prototype.initOptions=function(e){e=new S.default(this.log,this.pipeline).init(e),e.inputSourceMap&&(e.sourceMaps=!0),e.moduleId&&(e.moduleIds=!0),e.basename=W.default.basename(e.filename,W.default.extname(e.filename)),e.ignore=X.arrayify(e.ignore,X.regexify),e.only&&(e.only=X.arrayify(e.only,X.regexify)),(0,M.default)(e,{moduleRoot:e.sourceRoot}),(0,M.default)(e,{sourceRoot:e.moduleRoot}),(0,M.default)(e,{filenameRelative:e.filename});var t=W.default.basename(e.filenameRelative);return(0,M.default)(e,{sourceFileName:t,sourceMapTarget:t}),e},r.prototype.buildPluginsForOptions=function(e){if(Array.isArray(e.plugins)){for(var t=e.plugins.concat(re),n=[],r=[],i=t,a=Array.isArray(i),s=0,i=a?i:(0,u.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var l=o,c=l[0],p=l[1];n.push(c.visitor),r.push(new k.default(this,c,p)),c.manipulateOptions&&c.manipulateOptions(e,this.parserOpts,this)}this.pluginVisitors.push(n),this.pluginPasses.push(r)}},r.prototype.getModuleName=function(){var e=this.opts;if(!e.moduleIds)return null;if(null!=e.moduleId&&!e.getModuleId)return e.moduleId;var t=e.filenameRelative,n="";if(null!=e.moduleRoot&&(n=e.moduleRoot+"/"),!e.filenameRelative)return n+e.filename.replace(/^\//,"");if(null!=e.sourceRoot){var r=new RegExp("^"+e.sourceRoot+"/?");t=t.replace(r,"")}return t=t.replace(/\.(\w*?)$/,""),n+=t,n=n.replace(/\\/g,"/"),e.getModuleId?e.getModuleId(n)||n:n},r.prototype.resolveModuleSource=function e(t){var e=this.opts.resolveModuleSource;return e&&(t=e(t,this.opts.filename)),t},r.prototype.addImport=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=e+":"+t,i=this.dynamicImportIds[r];if(!i){e=this.resolveModuleSource(e),i=this.dynamicImportIds[r]=this.scope.generateUidIdentifier(n);var a=[];"*"===t?a.push(Y.importNamespaceSpecifier(i)):"default"===t?a.push(Y.importDefaultSpecifier(i)):a.push(Y.importSpecifier(i,Y.identifier(t)));var s=Y.importDeclaration(a,Y.stringLiteral(e));s._blockHoist=3,this.path.unshiftContainer("body",s)}return i},r.prototype.addHelper=function(e){var t=this.declarations[e];if(t)return t;this.usedHelpers[e]||(this.metadata.usedHelpers.push(e),this.usedHelpers[e]=!0);var n=this.get("helperGenerator"),r=this.get("helpersNamespace");if(n){var i=n(e);if(i)return i}else if(r)return Y.memberExpression(r,Y.identifier(e));var a=(0,x.default)(e),s=this.declarations[e]=this.scope.generateUidIdentifier(e);return Y.isFunctionExpression(a)&&!a.id?(a.body._compact=!0,a._generated=!0,a.id=s,a.type="FunctionDeclaration",this.path.unshiftContainer("body",a)):(a._compact=!0,this.scope.push({id:s,init:a,unique:!0})),s},r.prototype.addTemplateObject=function(e,t,n){var r=n.elements.map(function(e){return e.value}),i=e+"_"+n.elements.length+"_"+r.join(","),a=this.declarations[i];if(a)return a;var s=this.declarations[i]=this.scope.generateUidIdentifier("templateObject"),o=this.addHelper(e),u=Y.callExpression(o,[t,n]);return u._compact=!0,this.scope.push({id:s,init:u,_blockHoist:1.9}),s},r.prototype.buildCodeFrameError=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SyntaxError,r=e&&(e.loc||e._loc),i=new n(t);return r?i.loc=r.start:((0,T.default)(e,ie,this.scope,i),i.message+=" (This is an error on an internal node. Probably an internal error",i.loc&&(i.message+=". Location has been estimated."),i.message+=")"),i},r.prototype.mergeSourceMap=function(e){var t=this.opts.inputSourceMap;if(!t)return e;var n=function(){var n=new j.default.SourceMapConsumer(t),r=new j.default.SourceMapConsumer(e),i=new j.default.SourceMapGenerator({file:n.file,sourceRoot:n.sourceRoot}),a=r.sources[0];n.eachMapping(function(e){var t=r.generatedPositionFor({line:e.generatedLine,column:e.generatedColumn,source:a});null!=t.column&&i.addMapping({source:e.source,original:null==e.source?null:{line:e.originalLine,column:e.originalColumn},generated:t})});var s=i.toJSON();return t.mappings=s.mappings,{v:t}}();return"object"===("undefined"==typeof n?"undefined":(0,s.default)(n))?n.v:void 0},r.prototype.parse=function(n){var r=q.parse,i=this.opts.parserOpts;if(i&&(i=(0,f.default)({},this.parserOpts,i),i.parser)){if("string"==typeof i.parser){var a=W.default.dirname(this.opts.filename)||t.cwd(),s=(0,$.default)(i.parser,a);if(!s)throw new Error("Couldn't find parser "+i.parser+' with "parse" method relative to directory '+a);r=e(s).parse}else r=i.parser;i.parser={parse:function(e){return(0,q.parse)(e,i)}}}this.log.debug("Parse start");var o=r(n,i||this.parserOpts);return this.log.debug("Parse stop"),o},r.prototype._addAst=function(e){this.path=F.NodePath.get({hub:this.hub,parentPath:null,parent:e,container:e,key:"program"}).setContext(),this.scope=this.path.scope,this.ast=e,this.getMetadata()},r.prototype.addAst=function(e){this.log.debug("Start set AST"),this._addAst(e),this.log.debug("End set AST")},r.prototype.transform=function(){for(var e=0;e=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a,o=s.plugin,l=o[e];l&&l.call(s,this)}},r.prototype.parseInputSourceMap=function(e){var t=this.opts;if(t.inputSourceMap!==!1){var n=D.default.fromSource(e);n&&(t.inputSourceMap=n.toObject(),e=D.default.removeComments(e))}return e},r.prototype.parseShebang=function(){var e=ne.exec(this.code);e&&(this.shebang=e[0],this.code=this.code.replace(ne,""))},r.prototype.makeResult=function(e){var t=e.code,n=e.map,r=e.ast,i=e.ignored,a={metadata:null,options:this.opts,ignored:!!i,code:null,ast:null,map:n||null};return this.opts.code&&(a.code=t),this.opts.ast&&(a.ast=r),this.opts.metadata&&(a.metadata=this.metadata),a},r.prototype.generate=function(){var n=this.opts,r=this.ast,i={ast:r};if(!n.code)return this.makeResult(i);var a=O.default;if(n.generatorOpts.generator&&(a=n.generatorOpts.generator,"string"==typeof a)){var s=W.default.dirname(this.opts.filename)||t.cwd(),o=(0,$.default)(a,s);if(!o)throw new Error("Couldn't find generator "+a+' with "print" method relative to directory '+s);a=e(o).print}this.log.debug("Generation start");var u=a(r,n.generatorOpts?(0,f.default)(n,n.generatorOpts):n,this.code);return i.code=u.code,i.map=u.map,this.log.debug("Generation end"),this.shebang&&(i.code=this.shebang+"\n"+i.code),i.map&&(i.map=this.mergeSourceMap(i.map)),"inline"!==n.sourceMaps&&"both"!==n.sourceMaps||(i.code+="\n"+D.default.fromObject(i.map).toComment()),"inline"===n.sourceMaps&&(i.map=null),this.makeResult(i)},r}(G.default);n.default=ae,n.File=ae}).call(this,e("_process"))},{"../../helpers/resolve":42,"../../store":43,"../../util":59,"../internal-plugins/block-hoist":54,"../internal-plugins/shadow-functions":55,"../plugin-pass":57,"./logger":46,"./metadata":47,"./options/option-manager":51,_process:13,"babel-code-frame":60,"babel-generator":85,"babel-helpers":98,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/object/assign":104,"babel-runtime/core-js/object/create":105,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"babel-runtime/helpers/typeof":118,"babel-traverse":229,"babel-types":265,babylon:274,"convert-source-map":275,"lodash/defaults":460,path:12,"source-map":527}],46:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("debug/node"),o=r(s),u=(0,o.default)("babel:verbose"),l=(0,o.default)("babel"),c=[],p=function(){function e(t,n){(0,a.default)(this,e),this.filename=n,this.file=t}return e.prototype._buildMessage=function(e){var t="[BABEL] "+this.filename;return e&&(t+=": "+e),t},e.prototype.warn=function(e){console.warn(this._buildMessage(e))},e.prototype.error=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Error;throw new t(this._buildMessage(e))},e.prototype.deprecate=function(e){this.file.opts&&this.file.opts.suppressDeprecationMessages||(e=this._buildMessage(e),c.indexOf(e)>=0||(c.push(e),console.error(e)))},e.prototype.verbose=function(e){u.enabled&&u(this._buildMessage(e))},e.prototype.debug=function(e){l.enabled&&l(this._buildMessage(e))},e.prototype.deopt=function(e,t){this.debug(t)},e}();n.default=p,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114,"debug/node":276}],47:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=e.node,r=n.source?n.source.value:null,i=t.metadata.modules.exports,a=e.get("declaration");if(a.isStatement()){var s=a.getBindingIdentifiers();for(var o in s)i.exported.push(o),i.specifiers.push({kind:"local",local:o,exported:e.isExportDefaultDeclaration()?"default":o})}if(e.isExportNamedDeclaration()&&n.specifiers)for(var l=n.specifiers,p=Array.isArray(l),f=0,l=p?l:(0,u.default)(l);;){var h;if(p){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var d=h,y=d.exported.name;i.exported.push(y),c.isExportDefaultSpecifier(d)&&i.specifiers.push({kind:"external",local:y,exported:y,source:r}),c.isExportNamespaceSpecifier(d)&&i.specifiers.push({kind:"external-namespace",exported:y,source:r});var m=d.local;m&&(r&&i.specifiers.push({kind:"external",local:m.name,exported:y,source:r}),r||i.specifiers.push({kind:"local",local:m.name,exported:y}))}e.isExportAllDeclaration()&&i.specifiers.push({kind:"external-all",source:r})}function s(e){e.skip()}n.__esModule=!0,n.ImportDeclaration=n.ModuleDeclaration=void 0;var o=e("babel-runtime/core-js/get-iterator"),u=i(o);n.ExportDeclaration=a,n.Scope=s;var l=e("babel-types"),c=r(l);n.ModuleDeclaration={enter:function(e,t){var n=e.node;n.source&&(n.source.value=t.resolveModuleSource(n.source.value))}},n.ImportDeclaration={exit:function(e,t){var n=e.node,r=[],i=[];t.metadata.modules.imports.push({source:n.source.value,imported:i,specifiers:r});for(var a=e.get("specifiers"),s=Array.isArray(a),o=0,a=s?a:(0,u.default)(a);;){var l;if(s){if(o>=a.length)break;l=a[o++]}else{if(o=a.next(),o.done)break;l=o.value}var c=l,p=c.node.local.name;if(c.isImportDefaultSpecifier()&&(i.push("default"),r.push({kind:"named",imported:"default",local:p})),c.isImportSpecifier()){var f=c.node.imported.name;i.push(f),r.push({kind:"named",imported:f,local:p})}c.isImportNamespaceSpecifier()&&(i.push("*"),r.push({kind:"namespace",local:p}))}}}},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],48:[function(e,t,n){(function(r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=_[e];return null==t?_[e]=x.default.existsSync(e):t}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=e.filename,r=new S(t);return e.babelrc!==!1&&r.findConfigs(n),r.mergeConfig({options:e,alias:"base",dirname:n&&g.default.dirname(n)}),r.configs}n.__esModule=!0;var o=e("babel-runtime/core-js/object/assign"),u=i(o),l=e("babel-runtime/helpers/classCallCheck"),c=i(l);n.default=s;var p=e("../../../helpers/resolve"),f=i(p),h=e("json5"),d=i(h),y=e("path-is-absolute"),m=i(y),b=e("path"),g=i(b),v=e("fs"),x=i(v),_={},E={},A=".babelignore",D=".babelrc",C="package.json",S=function(){function e(t){(0,c.default)(this,e),this.resolvedConfigs=[],this.configs=[],this.log=t}return e.prototype.findConfigs=function(e){if(e){(0,m.default)(e)||(e=g.default.join(r.cwd(),e));for(var t=!1,n=!1;e!==(e=g.default.dirname(e));){if(!t){var i=g.default.join(e,D);a(i)&&(this.addConfig(i),t=!0);var s=g.default.join(e,C);!t&&a(s)&&(t=this.addConfig(s,"babel",JSON))}if(!n){var o=g.default.join(e,A);a(o)&&(this.addIgnoreConfig(o),n=!0)}if(n&&t)return}}},e.prototype.addIgnoreConfig=function(e){var t=x.default.readFileSync(e,"utf8"),n=t.split("\n");n=n.map(function(e){return e.replace(/#(.*?)$/,"").trim()}).filter(function(e){return!!e}),n.length&&this.mergeConfig({options:{ignore:n},alias:e,dirname:g.default.dirname(e)})},e.prototype.addConfig=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d.default;if(this.resolvedConfigs.indexOf(e)>=0)return!1;this.resolvedConfigs.push(e);var r=x.default.readFileSync(e,"utf8"),i=void 0;try{i=E[r]=E[r]||n.parse(r),t&&(i=i[t])}catch(t){throw t.message=e+": Error while parsing JSON - "+t.message,t}return this.mergeConfig({options:i,alias:e,dirname:g.default.dirname(e)}),!!i},e.prototype.mergeConfig=function(e){var t=e.options,n=e.alias,i=e.loc,a=e.dirname;
-if(!t)return!1;if(t=(0,u.default)({},t),a=a||r.cwd(),i=i||n,t.extends){var s=(0,f.default)(t.extends,a);s?this.addConfig(s):this.log&&this.log.error("Couldn't resolve extends clause of "+t.extends+" in "+n),delete t.extends}this.configs.push({options:t,alias:n,loc:i,dirname:a});var o=void 0,l=r.env.BABEL_ENV||r.env.NODE_ENV||"development";t.env&&(o=t.env[l],delete t.env),this.mergeConfig({options:o,alias:n+".env."+l,dirname:a})},e}();t.exports=n.default}).call(this,e("_process"))},{"../../../helpers/resolve":42,_process:13,"babel-runtime/core-js/object/assign":104,"babel-runtime/helpers/classCallCheck":114,fs:1,json5:281,path:12,"path-is-absolute":515}],49:[function(e,t,n){"use strict";t.exports={filename:{type:"filename",description:"filename to use when reading from stdin - this will be used in source-maps, errors etc",default:"unknown",shorthand:"f"},filenameRelative:{hidden:!0,type:"string"},inputSourceMap:{hidden:!0},env:{hidden:!0,default:{}},mode:{description:"",hidden:!0},retainLines:{type:"boolean",default:!1,description:"retain line numbers - will result in really ugly code"},highlightCode:{description:"enable/disable ANSI syntax highlighting of code frames (on by default)",type:"boolean",default:!0},suppressDeprecationMessages:{type:"boolean",default:!1,hidden:!0},presets:{type:"list",description:"",default:[]},plugins:{type:"list",default:[],description:""},ignore:{type:"list",description:"list of glob paths to **not** compile",default:[]},only:{type:"list",description:"list of glob paths to **only** compile"},code:{hidden:!0,default:!0,type:"boolean"},metadata:{hidden:!0,default:!0,type:"boolean"},ast:{hidden:!0,default:!0,type:"boolean"},extends:{type:"string",hidden:!0},comments:{type:"boolean",default:!0,description:"write comments to generated output (true by default)"},shouldPrintComment:{hidden:!0,description:"optional callback to control whether a comment should be inserted, when this is used the comments option is ignored"},wrapPluginVisitorMethod:{hidden:!0,description:"optional callback to wrap all visitor methods"},compact:{type:"booleanString",default:"auto",description:"do not include superfluous whitespace characters and line terminators [true|false|auto]"},minified:{type:"boolean",default:!1,description:"save as much bytes when printing [true|false]"},sourceMap:{alias:"sourceMaps",hidden:!0},sourceMaps:{type:"booleanString",description:"[true|false|inline]",default:!1,shorthand:"s"},sourceMapTarget:{type:"string",description:"set `file` on returned source map"},sourceFileName:{type:"string",description:"set `sources[0]` on returned source map"},sourceRoot:{type:"filename",description:"the root from which all sources are relative"},babelrc:{description:"Whether or not to look up .babelrc and .babelignore files",type:"boolean",default:!0},sourceType:{description:"",default:"module"},auxiliaryCommentBefore:{type:"string",description:"print a comment before any injected non-user code"},auxiliaryCommentAfter:{type:"string",description:"print a comment after any injected non-user code"},resolveModuleSource:{hidden:!0},getModuleId:{hidden:!0},moduleRoot:{type:"filename",description:"optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"},moduleIds:{type:"boolean",default:!1,shorthand:"M",description:"insert an explicit id for modules"},moduleId:{description:"specify a custom name for module ids",type:"string"},passPerPreset:{description:"Whether to spawn a traversal pass per a preset. By default all presets are merged.",type:"boolean",default:!1,hidden:!0},parserOpts:{description:"Options to pass into the parser, or to change parsers (parserOpts.parser)",default:!1},generatorOpts:{description:"Options to pass into the generator, or to change generators (generatorOpts.generator)",default:!1}}},{}],50:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e){var n=e[t];if(null!=n){var r=l.default[t];if(r&&r.alias&&(r=l.default[r.alias]),r){var i=o[r.type];i&&(n=i(n)),e[t]=n}}}return e}n.__esModule=!0,n.config=void 0,n.normaliseOptions=a;var s=e("./parsers"),o=i(s),u=e("./config"),l=r(u);n.config=l.default},{"./config":49,"./parsers":52}],51:[function(e,t,n){(function(r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var s=e("babel-runtime/helpers/objectWithoutProperties"),o=a(s),u=e("babel-runtime/core-js/json/stringify"),l=a(u),c=e("babel-runtime/core-js/object/assign"),p=a(c),f=e("babel-runtime/core-js/get-iterator"),h=a(f),d=e("babel-runtime/helpers/typeof"),y=a(d),m=e("babel-runtime/helpers/classCallCheck"),b=a(m),g=e("../../../api/node"),v=i(g),x=e("../../plugin"),_=a(x),E=e("babel-messages"),A=i(E),D=e("./index"),C=e("../../../helpers/resolve"),S=a(C),w=e("lodash/cloneDeepWith"),k=a(w),F=e("lodash/clone"),T=a(F),P=e("../../../helpers/merge"),j=a(P),B=e("./config"),O=a(B),I=e("./removed"),N=a(I),L=e("./build-config-chain"),M=a(L),R=e("path"),U=a(R),V=function(){function t(e){(0,b.default)(this,t),this.resolvedConfigs=[],this.options=t.createBareOptions(),this.log=e}return t.memoisePluginContainer=function(e,n,r,i){for(var a=t.memoisedPlugins,s=Array.isArray(a),o=0,a=s?a:(0,h.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(l.container===e)return l.plugin}var c=void 0;if(c="function"==typeof e?e(v):e,"object"===("undefined"==typeof c?"undefined":(0,y.default)(c))){var p=new _.default(c,i);return t.memoisedPlugins.push({container:e,plugin:p}),p}throw new TypeError(A.get("pluginNotObject",n,r,"undefined"==typeof c?"undefined":(0,y.default)(c))+n+r)},t.createBareOptions=function(){var e={};for(var t in O.default){var n=O.default[t];e[t]=(0,T.default)(n.default)}return e},t.normalisePlugin=function(e,n,r,i){if(e=e.__esModule?e.default:e,!(e instanceof _.default)){if("function"!=typeof e&&"object"!==("undefined"==typeof e?"undefined":(0,y.default)(e)))throw new TypeError(A.get("pluginNotFunction",n,r,"undefined"==typeof e?"undefined":(0,y.default)(e)));e=t.memoisePluginContainer(e,n,r,i)}return e.init(n,r),e},t.normalisePlugins=function(n,r,i){return i.map(function(i,a){var s=void 0,o=void 0;if(!i)throw new TypeError("Falsy value found in plugins");Array.isArray(i)?(s=i[0],o=i[1]):s=i;var u="string"==typeof s?s:n+"$"+a;if("string"==typeof s){var l=(0,S.default)("babel-plugin-"+s,r)||(0,S.default)(s,r);if(!l)throw new ReferenceError(A.get("pluginUnknown",s,n,a,r));s=e(l)}return s=t.normalisePlugin(s,n,a,u),[s,o]})},t.prototype.mergeOptions=function(e){var n=this,i=e.options,a=e.extending,s=e.alias,o=e.loc,u=e.dirname;if(s=s||"foreign",i){("object"!==("undefined"==typeof i?"undefined":(0,y.default)(i))||Array.isArray(i))&&this.log.error("Invalid options type for "+s,TypeError);var l=(0,k.default)(i,function(e){if(e instanceof _.default)return e});u=u||r.cwd(),o=o||s;for(var c in l){var f=O.default[c];if(!f&&this.log)if(N.default[c])this.log.error("Using removed Babel 5 option: "+s+"."+c+" - "+N.default[c].message,ReferenceError);else{var h="Unknown option: "+s+"."+c+". Check out http://babeljs.io/docs/usage/options/ for more information about options.",d="A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:\n\nInvalid:\n  `{ presets: [{option: value}] }`\nValid:\n  `{ presets: [['presetName', {option: value}]] }`\n\nFor more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.";this.log.error(h+"\n\n"+d,ReferenceError)}}(0,D.normaliseOptions)(l),l.plugins&&(l.plugins=t.normalisePlugins(o,u,l.plugins)),l.presets&&(l.passPerPreset?l.presets=this.resolvePresets(l.presets,u,function(e,t){n.mergeOptions({options:e,extending:e,alias:t,loc:t,dirname:u})}):(this.mergePresets(l.presets,u),delete l.presets)),i===a?(0,p.default)(a,l):(0,j.default)(a||this.options,l)}},t.prototype.mergePresets=function(e,t){var n=this;this.resolvePresets(e,t,function(e,t){n.mergeOptions({options:e,alias:t,loc:t,dirname:U.default.dirname(t||"")})})},t.prototype.resolvePresets=function(t,n,r){return t.map(function(t){var i=void 0;if(Array.isArray(t)){if(t.length>2)throw new Error("Unexpected extra options "+(0,l.default)(t.slice(2))+" passed to preset.");var a=t;t=a[0],i=a[1]}var s=void 0;try{if("string"==typeof t){if(s=(0,S.default)("babel-preset-"+t,n)||(0,S.default)(t,n),!s){var u=t.match(/^(@[^\/]+)\/(.+)$/);if(u){var c=u[1],p=u[2];t=c+"/babel-preset-"+p,s=(0,S.default)(t,n)}}if(!s)throw new Error("Couldn't find preset "+(0,l.default)(t)+" relative to directory "+(0,l.default)(n));t=e(s)}if("object"===("undefined"==typeof t?"undefined":(0,y.default)(t))&&t.__esModule)if(t.default)t=t.default;else{var f=t,h=(f.__esModule,(0,o.default)(f,["__esModule"]));t=h}if("object"===("undefined"==typeof t?"undefined":(0,y.default)(t))&&t.buildPreset&&(t=t.buildPreset),"function"!=typeof t&&void 0!==i)throw new Error("Options "+(0,l.default)(i)+" passed to "+(s||"a preset")+" which does not accept options.");if("function"==typeof t&&(t=t(v,i)),"object"!==("undefined"==typeof t?"undefined":(0,y.default)(t)))throw new Error("Unsupported preset format: "+t+".");r&&r(t,s)}catch(e){throw s&&(e.message+=" (While processing preset: "+(0,l.default)(s)+")"),e}return t})},t.prototype.normaliseOptions=function(){var e=this.options;for(var t in O.default){var n=O.default[t],r=e[t];!r&&n.optional||(n.alias?e[n.alias]=e[n.alias]||r:e[t]=r)}},t.prototype.init=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,M.default)(e,this.log),n=Array.isArray(t),r=0,t=n?t:(0,h.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this.mergeOptions(a)}return this.normaliseOptions(e),this.options},t}();n.default=V,V.memoisedPlugins=[],t.exports=n.default}).call(this,e("_process"))},{"../../../api/node":39,"../../../helpers/merge":40,"../../../helpers/resolve":42,"../../plugin":58,"./build-config-chain":48,"./config":49,"./index":50,"./removed":53,_process:13,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/object/assign":104,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/objectWithoutProperties":116,"babel-runtime/helpers/typeof":118,"lodash/clone":455,"lodash/cloneDeepWith":457,path:12}],52:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return!!e}function s(e){return p.booleanify(e)}function o(e){return p.list(e)}n.__esModule=!0,n.filename=void 0,n.boolean=a,n.booleanString=s,n.list=o;var u=e("slash"),l=i(u),c=e("../../../util"),p=r(c);n.filename=l.default},{"../../../util":59,slash:516}],53:[function(e,t,n){"use strict";t.exports={auxiliaryComment:{message:"Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"},blacklist:{message:"Put the specific transforms you want in the `plugins` option"},breakConfig:{message:"This is not a necessary option in Babel 6"},experimental:{message:"Put the specific transforms you want in the `plugins` option"},externalHelpers:{message:"Use the `external-helpers` plugin instead. Check out http://babeljs.io/docs/plugins/external-helpers/"},extra:{message:""},jsxPragma:{message:"use the `pragma` option in the `react-jsx` plugin . Check out http://babeljs.io/docs/plugins/transform-react-jsx/"},loose:{message:"Specify the `loose` option for the relevant plugin you are using or use a preset that sets the option."},metadataUsedHelpers:{message:"Not required anymore as this is enabled by default"},modules:{message:"Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules"},nonStandard:{message:"Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"},optional:{message:"Put the specific transforms you want in the `plugins` option"},sourceMapName:{message:"Use the `sourceMapTarget` option"},stage:{message:"Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"},whitelist:{message:"Put the specific transforms you want in the `plugins` option"}}},{}],54:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../plugin"),a=r(i),s=e("lodash/sortBy"),o=r(s);n.default=new a.default({name:"internal.blockHoist",visitor:{Block:{exit:function(e){for(var t=e.node,n=!1,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return t.code=!1,t.mode="lint",this.transform(e,t)},e.prototype.pretransform=function(e,t){var n=new p.default(t,this);return n.wrap(e,function(){return n.addCode(e),n.parseCode(e),n})},e.prototype.transform=function(e,t){var n=new p.default(t,this);return n.wrap(e,function(){return n.addCode(e),n.parseCode(e),n.transform()})},e.prototype.analyse=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];return t.code=!1,n&&(t.plugins=t.plugins||[],t.plugins.push(new l.default({visitor:n}))),this.transform(e,t).metadata},e.prototype.transformFromAst=function(e,t,n){e=(0,o.default)(e);var r=new p.default(n,this);return r.wrap(t,function(){return r.addCode(t),r.addAst(e),r.transform()})},e}();n.default=f,t.exports=n.default},{"../helpers/normalize-ast":41,"./file":45,"./plugin":58,"babel-runtime/helpers/classCallCheck":114}],57:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("babel-runtime/helpers/possibleConstructorReturn"),o=r(s),u=e("babel-runtime/helpers/inherits"),l=r(u),c=e("../store"),p=r(c),f=e("./file"),h=(r(f),function(e){function t(n,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,a.default)(this,t);var s=(0,o.default)(this,e.call(this));return s.plugin=r,s.key=r.key,s.file=n,s.opts=i,s}return(0,l.default)(t,e),t.prototype.addHelper=function(){var e;return(e=this.file).addHelper.apply(e,arguments)},t.prototype.addImport=function(){var e;return(e=this.file).addImport.apply(e,arguments)},t.prototype.getModuleName=function(){var e;return(e=this.file).getModuleName.apply(e,arguments)},t.prototype.buildCodeFrameError=function(){var e;return(e=this.file).buildCodeFrameError.apply(e,arguments)},t}(p.default));n.default=h,t.exports=n.default},{"../store":43,"./file":45,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117}],58:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/core-js/get-iterator"),s=i(a),o=e("babel-runtime/helpers/classCallCheck"),u=i(o),l=e("babel-runtime/helpers/possibleConstructorReturn"),c=i(l),p=e("babel-runtime/helpers/inherits"),f=i(p),h=e("./file/options/option-manager"),d=i(h),y=e("babel-messages"),m=r(y),b=e("../store"),g=i(b),v=e("babel-traverse"),x=i(v),_=e("lodash/assign"),E=i(_),A=e("lodash/clone"),D=i(A),C=["enter","exit"],S=function(e){function t(n,r){(0,u.default)(this,t);var i=(0,c.default)(this,e.call(this));return i.initialized=!1,i.raw=(0,E.default)({},n),i.key=i.take("name")||r,i.manipulateOptions=i.take("manipulateOptions"),i.post=i.take("post"),i.pre=i.take("pre"),i.visitor=i.normaliseVisitor((0,D.default)(i.take("visitor"))||{}),i}return(0,f.default)(t,e),t.prototype.take=function(e){var t=this.raw[e];return delete this.raw[e],t},t.prototype.chain=function(e,t){if(!e[t])return this[t];if(!this[t])return e[t];var n=[e[t],this[t]];return function(){for(var e=void 0,t=arguments.length,r=Array(t),i=0;i=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;if(c){var p=c.apply(this,r);null!=p&&(e=p)}}return e}},t.prototype.maybeInherit=function(e){var t=this.take("inherits");t&&(t=d.default.normalisePlugin(t,e,"inherits"),this.manipulateOptions=this.chain(t,"manipulateOptions"),this.post=this.chain(t,"post"),this.pre=this.chain(t,"pre"),this.visitor=x.default.visitors.merge([t.visitor,this.visitor]))},t.prototype.init=function(e,t){if(!this.initialized){this.initialized=!0,this.maybeInherit(e);for(var n in this.raw)throw new Error(m.get("pluginInvalidProperty",e,t,n))}},t.prototype.normaliseVisitor=function(e){for(var t=C,n=Array.isArray(t),r=0,t=n?t:(0,s.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(e[a])throw new Error("Plugins aren't allowed to specify catch-all enter/exit handlers. Please target individual nodes.")}return x.default.explode(e),e},t}(g.default);n.default=S,t.exports=n.default},{"../store":43,"./file/options/option-manager":51,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"babel-traverse":229,"lodash/assign":453,"lodash/clone":455}],59:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=t||i.EXTENSIONS,r=F.default.extname(e);return(0,A.default)(n,r)}function a(e){return e?Array.isArray(e)?e:"string"==typeof e?e.split(","):[e]:[]}function s(e){if(!e)return new RegExp(/.^/);if(Array.isArray(e)&&(e=new RegExp(e.map(y.default).join("|"),"i")),"string"==typeof e){e=(0,P.default)(e),((0,b.default)(e,"./")||(0,b.default)(e,"*/"))&&(e=e.slice(2)),(0,b.default)(e,"**/")&&(e=e.slice(3));var t=_.default.makeRe(e,{nocase:!0});return new RegExp(t.source.slice(1,-1),"i")}if((0,w.default)(e))return e;throw new TypeError("illegal type for regexify")}function o(e,t){return e?(0,v.default)(e)?o([e],t):(0,C.default)(e)?o(a(e),t):Array.isArray(e)?(t&&(e=e.map(t)),e):[e]:[]}function u(e){return"true"===e||1==e||!("false"===e||0==e||!e)&&e}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2];if(e=e.replace(/\\/g,"/"),n){for(var r=n,i=Array.isArray(r),a=0,r=i?r:(0,f.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(c(o,e))return!1}return!0}if(t.length)for(var u=t,l=Array.isArray(u),p=0,u=l?u:(0,f.default)(u);;){var h;if(l){if(p>=u.length)break;h=u[p++]}else{if(p=u.next(),p.done)break;h=p.value}var d=h;if(c(d,e))return!0}return!1}function c(e,t){return"function"==typeof e?e(t):e.test(t)}n.__esModule=!0,n.inspect=n.inherits=void 0;var p=e("babel-runtime/core-js/get-iterator"),f=r(p),h=e("util");Object.defineProperty(n,"inherits",{enumerable:!0,get:function(){return h.inherits}}),Object.defineProperty(n,"inspect",{enumerable:!0,get:function(){return h.inspect}}),n.canCompile=i,n.list=a,n.regexify=s,n.arrayify=o,n.booleanify=u,n.shouldIgnore=l;var d=e("lodash/escapeRegExp"),y=r(d),m=e("lodash/startsWith"),b=r(m),g=e("lodash/isBoolean"),v=r(g),x=e("minimatch"),_=r(x),E=e("lodash/includes"),A=r(E),D=e("lodash/isString"),C=r(D),S=e("lodash/isRegExp"),w=r(S),k=e("path"),F=r(k),T=e("slash"),P=r(T);i.EXTENSIONS=[".js",".jsx",".es6",".es"]},{"babel-runtime/core-js/get-iterator":100,"lodash/escapeRegExp":463,"lodash/includes":473,"lodash/isBoolean":478,"lodash/isRegExp":487,"lodash/isString":488,"lodash/startsWith":500,minimatch:511,path:12,slash:516,util:35}],60:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){return{keyword:e.cyan,capitalized:e.yellow,jsx_tag:e.yellow,punctuator:e.yellow,number:e.magenta,string:e.green,regex:e.magenta,comment:e.grey,invalid:e.white.bgRed.bold,gutter:e.grey,marker:e.red.bold}}function a(e){var t=e.slice(-2),n=t[0],r=t[1],i=u.default.matchToToken(e);if("name"===i.type){if(c.default.keyword.isReservedWordES6(i.value))return"keyword";if(d.test(i.value)&&("<"===r[n-1]||"3&&void 0!==arguments[3]?arguments[3]:{};n=Math.max(n,0);var a=r.highlightCode&&f.default.supportsColor||r.forceColor,o=f.default;r.forceColor&&(o=new f.default.constructor({enabled:!0}));var u=function(e,t){return a?e(t):t},l=i(o);a&&(e=s(l,e));var c=r.linesAbove||2,p=r.linesBelow||3,d=e.split(h),y=Math.max(t-(c+1),0),m=Math.min(d.length,t+p);t||n||(y=0,m=d.length);var b=String(m).length,g=d.slice(y,m).map(function(e,r){var i=y+1+r,a=(" "+i).slice(-b),s=" "+a+" | ";if(i===t){var o="";if(n){var c=e.slice(0,n-1).replace(/[^\t]/g," ");o=["\n ",u(l.gutter,s.replace(/\d/g," ")),c,u(l.marker,"^")].join("")}return[u(l.marker,">"),u(l.gutter,s),e,o].join("")}return" "+u(l.gutter,s)+e}).join("\n");return a?o.reset(g):g};var o=e("js-tokens"),u=r(o),l=e("esutils"),c=r(l),p=e("chalk"),f=r(p),h=/\r\n|[\n\r\u2028\u2029]/,d=/^[a-z][\w-]*$/i,y=/^[()\[\]{}]$/;t.exports=n.default},{chalk:61,esutils:72,"js-tokens":73}],61:[function(e,t,n){(function(n){"use strict";function r(e){this.enabled=e&&void 0!==e.enabled?e.enabled:p}function i(e){var t=function(){return a.apply(t,arguments)};return t._styles=e,t.enabled=this.enabled,t.__proto__=y,t}function a(){var e=arguments,t=e.length,n=0!==t&&String(arguments[0]);if(t>1)for(var r=1;r<]/g}},{}],66:[function(e,t,n){"use strict";var r=e("ansi-regex")();t.exports=function(e){return"string"==typeof e?e.replace(r,""):e}},{"ansi-regex":67}],67:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],68:[function(e,t,n){(function(e){"use strict";var n=e.argv,r=n.indexOf("--"),i=function(e){e="--"+e;var t=n.indexOf(e);return t!==-1&&(r===-1||t=48&&e<=55}function i(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&h.indexOf(e)>=0}function a(e){return 10===e||13===e||8232===e||8233===e}function s(e){if(e<=65535)return String.fromCharCode(e);var t=String.fromCharCode(Math.floor((e-65536)/1024)+55296),n=String.fromCharCode((e-65536)%1024+56320);return t+n}function o(e){return e<128?d[e]:f.NonAsciiIdentifierStart.test(s(e))}function u(e){return e<128?y[e]:f.NonAsciiIdentifierPart.test(s(e))}function l(e){return e<128?d[e]:p.NonAsciiIdentifierStart.test(s(e))}function c(e){return e<128?y[e]:p.NonAsciiIdentifierPart.test(s(e))}var p,f,h,d,y,m;for(f={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,
-NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},p={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],d=new Array(128),m=0;m<128;++m)d[m]=m>=97&&m<=122||m>=65&&m<=90||36===m||95===m;for(y=new Array(128),m=0;m<128;++m)y[m]=m>=97&&m<=122||m>=65&&m<=90||m>=48&&m<=57||36===m||95===m;t.exports={isDecimalDigit:e,isHexDigit:n,isOctalDigit:r,isWhiteSpace:i,isLineTerminator:a,isIdentifierStartES5:o,isIdentifierPartES5:u,isIdentifierStartES6:l,isIdentifierPartES6:c}}()},{}],71:[function(e,t,n){!function(){"use strict";function n(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function r(e,t){return!(!t&&"yield"===e)&&i(e,t)}function i(e,t){if(t&&n(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function a(e,t){return"null"===e||"true"===e||"false"===e||r(e,t)}function s(e,t){return"null"===e||"true"===e||"false"===e||i(e,t)}function o(e){return"eval"===e||"arguments"===e}function u(e){var t,n,r;if(0===e.length)return!1;if(r=e.charCodeAt(0),!h.isIdentifierStartES5(r))return!1;for(t=1,n=e.length;t=n)return!1;if(i=e.charCodeAt(t),!(56320<=i&&i<=57343))return!1;r=l(r,i)}if(!a(r))return!1;a=h.isIdentifierPartES6}return!0}function p(e,t){return u(e)&&!a(e,t)}function f(e,t){return c(e)&&!s(e,t)}var h=e("./code");t.exports={isKeywordES5:r,isKeywordES6:i,isReservedWordES5:a,isReservedWordES6:s,isRestrictedWord:o,isIdentifierNameES5:u,isIdentifierNameES6:c,isIdentifierES5:p,isIdentifierES6:f}}()},{"./code":70}],72:[function(e,t,n){!function(){"use strict";n.ast=e("./ast"),n.code=e("./code"),n.keyword=e("./keyword")}()},{"./ast":69,"./code":70,"./keyword":71}],73:[function(e,t,n){t.exports=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.exports.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},{}],74:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("lodash/trimEnd"),o=r(s),u=/^[ \t]+$/,l=function(){function e(t){(0,a.default)(this,e),this._map=null,this._buf=[],this._last="",this._queue=[],this._position={line:1,column:0},this._sourcePosition={identifierName:null,line:null,column:null,filename:null},this._map=t}return e.prototype.get=function(){this._flush();var e=this._map,t={code:(0,o.default)(this._buf.join("")),map:null,rawMappings:e&&e.getRawMappings()};return e&&Object.defineProperty(t,"map",{configurable:!0,enumerable:!0,get:function(){return this.map=e.get()},set:function(e){Object.defineProperty(this,"map",{value:e,writable:!0})}}),t},e.prototype.append=function(e){this._flush();var t=this._sourcePosition,n=t.line,r=t.column,i=t.filename,a=t.identifierName;this._append(e,n,r,a,i)},e.prototype.queue=function(e){if("\n"===e)for(;this._queue.length>0&&u.test(this._queue[0][0]);)this._queue.shift();var t=this._sourcePosition,n=t.line,r=t.column,i=t.filename,a=t.identifierName;this._queue.unshift([e,n,r,a,i])},e.prototype._flush=function(){for(var e=void 0;e=this._queue.pop();)this._append.apply(this,e)},e.prototype._append=function(e,t,n,r,i){this._map&&"\n"!==e[0]&&this._map.mark(this._position.line,this._position.column,t,n,r,i),this._buf.push(e),this._last=e[e.length-1];for(var a=0;a0&&"\n"===this._queue[0][0]&&this._queue.shift()},e.prototype.removeLastSemicolon=function(){this._queue.length>0&&";"===this._queue[0][0]&&this._queue.shift()},e.prototype.endsWith=function(e){if(1===e.length){var t=void 0;if(this._queue.length>0){var n=this._queue[0][0];t=n[n.length-1]}else t=this._last;return t===e}var r=this._last+this._queue.reduce(function(e,t){return t[0]+e},"");return e.length<=r.length&&r.slice(-e.length)===e},e.prototype.hasContent=function(){return this._queue.length>0||!!this._last},e.prototype.source=function(e,t){if(!e||t){var n=t?t[e]:null;this._sourcePosition.identifierName=t&&t.identifierName||null,this._sourcePosition.line=n?n.line:null,this._sourcePosition.column=n?n.column:null,this._sourcePosition.filename=t&&t.filename||null}},e.prototype.withSource=function(e,t,n){if(!this._map)return n();var r=this._sourcePosition.line,i=this._sourcePosition.column,a=this._sourcePosition.filename,s=this._sourcePosition.identifierName;this.source(e,t),n(),this._sourcePosition.line=r,this._sourcePosition.column=i,this._sourcePosition.filename=a,this._sourcePosition.identifierName=s},e.prototype.getCurrentColumn=function(){var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=e.lastIndexOf("\n");return t===-1?this._position.column+e.length:e.length-1-t},e.prototype.getCurrentLine=function(){for(var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=0,n=0;n")),this.space(),this.print(e.returnType,e)}function b(e){this.print(e.name,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.typeAnnotation,e)}function g(e){this.print(e.id,e),this.print(e.typeParameters,e)}function v(e){this.print(e.id,e),this.print(e.typeParameters,e),e.extends.length&&(this.space(),this.word("extends"),this.space(),this.printList(e.extends,e)),e.mixins&&e.mixins.length&&(this.space(),this.word("mixins"),this.space(),this.printList(e.mixins,e)),this.space(),this.print(e.body,e)}function x(e){"plus"===e.variance?this.token("+"):"minus"===e.variance&&this.token("-")}function _(e){this.word("interface"),this.space(),this._interfaceish(e)}function E(){this.space(),this.token("&"),this.space()}function A(e){this.printJoin(e.types,e,{separator:E})}function D(){this.word("mixed")}function C(){this.word("empty")}function S(e){this.token("?"),this.print(e.typeAnnotation,e)}function w(){this.word("number")}function k(){this.word("string")}function F(){this.word("this")}function T(e){this.token("["),this.printList(e.types,e),this.token("]")}function P(e){this.word("typeof"),this.space(),this.print(e.argument,e)}function j(e){this.word("type"),this.space(),this.print(e.id,e),this.print(e.typeParameters,e),this.space(),this.token("="),this.space(),this.print(e.right,e),this.semicolon()}function B(e){this.token(":"),this.space(),e.optional&&this.token("?"),this.print(e.typeAnnotation,e)}function O(e){this._variance(e),this.word(e.name),e.bound&&this.print(e.bound,e),e.default&&(this.space(),this.token("="),this.space(),this.print(e.default,e))}function I(e){this.token("<"),this.printList(e.params,e,{}),this.token(">")}function N(e){var t=this;e.exact?this.token("{|"):this.token("{");var n=e.properties.concat(e.callProperties,e.indexers);n.length&&(this.space(),this.printJoin(n,e,{addNewlines:function(e){if(e&&!n[0])return 1},indent:!0,statement:!0,iterator:function(){1!==n.length&&(t.format.flowCommaSeparator?t.token(","):t.semicolon(),t.space())}}),this.space()),e.exact?this.token("|}"):this.token("}")}function L(e){e.static&&(this.word("static"),this.space()),this.print(e.value,e)}function M(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.token("["),this.print(e.id,e),this.token(":"),this.space(),this.print(e.key,e),this.token("]"),this.token(":"),this.space(),this.print(e.value,e)}function R(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.print(e.key,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.value,e)}function U(e){this.print(e.qualification,e),this.token("."),this.print(e.id,e)}function V(){this.space(),this.token("|"),this.space()}function G(e){this.printJoin(e.types,e,{separator:V})}function q(e){this.token("("),this.print(e.expression,e),this.print(e.typeAnnotation,e),this.token(")")}function K(){this.word("void")}n.__esModule=!0,n.AnyTypeAnnotation=r,n.ArrayTypeAnnotation=i,n.BooleanTypeAnnotation=a,n.BooleanLiteralTypeAnnotation=s,n.NullLiteralTypeAnnotation=o,n.DeclareClass=u,n.DeclareFunction=l,n.DeclareInterface=c,n.DeclareModule=p,n.DeclareModuleExports=f,n.DeclareTypeAlias=h,n.DeclareVariable=d,n.ExistentialTypeParam=y,n.FunctionTypeAnnotation=m,n.FunctionTypeParam=b,n.InterfaceExtends=g,n._interfaceish=v,n._variance=x,n.InterfaceDeclaration=_,n.IntersectionTypeAnnotation=A,n.MixedTypeAnnotation=D,n.EmptyTypeAnnotation=C,n.NullableTypeAnnotation=S;var X=e("./types");Object.defineProperty(n,"NumericLiteralTypeAnnotation",{enumerable:!0,get:function(){return X.NumericLiteral}}),Object.defineProperty(n,"StringLiteralTypeAnnotation",{enumerable:!0,get:function(){return X.StringLiteral}}),n.NumberTypeAnnotation=w,n.StringTypeAnnotation=k,n.ThisTypeAnnotation=F,n.TupleTypeAnnotation=T,n.TypeofTypeAnnotation=P,n.TypeAlias=j,n.TypeAnnotation=B,n.TypeParameter=O,n.TypeParameterInstantiation=I,n.ObjectTypeAnnotation=N,n.ObjectTypeCallProperty=L,n.ObjectTypeIndexer=M,n.ObjectTypeProperty=R,n.QualifiedTypeIdentifier=U,n.UnionTypeAnnotation=G,n.TypeCastExpression=q,n.VoidTypeAnnotation=K,n.ClassImplements=g,n.GenericTypeAnnotation=g,n.TypeParameterDeclaration=I},{"./types":84}],79:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){this.print(e.name,e),e.value&&(this.token("="),this.print(e.value,e))}function a(e){this.word(e.name)}function s(e){this.print(e.namespace,e),this.token(":"),this.print(e.name,e)}function o(e){this.print(e.object,e),this.token("."),this.print(e.property,e)}function u(e){this.token("{"),this.token("..."),this.print(e.argument,e),this.token("}")}function l(e){this.token("{"),this.print(e.expression,e),this.token("}")}function c(e){this.token("{"),this.token("..."),this.print(e.expression,e),this.token("}")}function p(e){this.token(e.value)}function f(e){var t=e.openingElement;if(this.print(t,e),!t.selfClosing){this.indent();for(var n=e.children,r=Array.isArray(n),i=0,n=r?n:(0,g.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;this.print(s,e)}this.dedent(),this.print(e.closingElement,e)}}function h(){this.space()}function d(e){this.token("<"),this.print(e.name,e),e.attributes.length>0&&(this.space(),this.printJoin(e.attributes,e,{separator:h})),e.selfClosing?(this.space(),this.token("/>")):this.token(">")}function y(e){this.token("")}function m(){}n.__esModule=!0;var b=e("babel-runtime/core-js/get-iterator"),g=r(b);n.JSXAttribute=i,n.JSXIdentifier=a,n.JSXNamespacedName=s,n.JSXMemberExpression=o,n.JSXSpreadAttribute=u,n.JSXExpressionContainer=l,n.JSXSpreadChild=c,n.JSXText=p,n.JSXElement=f,n.JSXOpeningElement=d,n.JSXClosingElement=y,n.JSXEmptyExpression=m},{"babel-runtime/core-js/get-iterator":100}],80:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){var t=this;this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e,{iterator:function(e){e.optional&&t.token("?"),t.print(e.typeAnnotation,e)}}),this.token(")"),e.returnType&&this.print(e.returnType,e)}function a(e){var t=e.kind,n=e.key;"method"!==t&&"init"!==t||e.generator&&this.token("*"),"get"!==t&&"set"!==t||(this.word(t),this.space()),e.async&&(this.word("async"),this.space()),e.computed?(this.token("["),this.print(n,e),this.token("]")):this.print(n,e),this._params(e),this.space(),this.print(e.body,e)}function s(e){e.async&&(this.word("async"),this.space()),this.word("function"),e.generator&&this.token("*"),e.id?(this.space(),this.print(e.id,e)):this.space(),this._params(e),this.space(),this.print(e.body,e)}function o(e){e.async&&(this.word("async"),this.space());var t=e.params[0];1===e.params.length&&c.isIdentifier(t)&&!u(e,t)?this.print(t,e):this._params(e),this.space(),this.token("=>"),this.space(),this.print(e.body,e)}function u(e,t){return e.typeParameters||e.returnType||t.typeAnnotation||t.optional||t.trailingComments}n.__esModule=!0,n.FunctionDeclaration=void 0,n._params=i,n._method=a,n.FunctionExpression=s,n.ArrowFunctionExpression=o;var l=e("babel-types"),c=r(l);n.FunctionDeclaration=s},{"babel-types":265}],81:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){this.print(e.imported,e),e.local&&e.local.name!==e.imported.name&&(this.space(),this.word("as"),this.space(),this.print(e.local,e))}function a(e){this.print(e.local,e)}function s(e){this.print(e.exported,e)}function o(e){this.print(e.local,e),e.exported&&e.local.name!==e.exported.name&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e))}function u(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.exported,e)}function l(e){this.word("export"),this.space(),this.token("*"),e.exported&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e)),this.space(),this.word("from"),this.space(),this.print(e.source,e),this.semicolon()}function c(){this.word("export"),this.space(),f.apply(this,arguments)}function p(){this.word("export"),this.space(),this.word("default"),this.space(),f.apply(this,arguments)}function f(e){if(e.declaration){var t=e.declaration;this.print(t,e),m.isStatement(t)||this.semicolon()}else{"type"===e.exportKind&&(this.word("type"),this.space());for(var n=e.specifiers.slice(0),r=!1;;){var i=n[0];if(!m.isExportDefaultSpecifier(i)&&!m.isExportNamespaceSpecifier(i))break;r=!0,this.print(n.shift(),e),n.length&&(this.token(","),this.space())}(n.length||!n.length&&!r)&&(this.token("{"),n.length&&(this.space(),this.printList(n,e),this.space()),this.token("}")),e.source&&(this.space(),this.word("from"),this.space(),this.print(e.source,e)),this.semicolon()}}function h(e){this.word("import"),this.space(),"type"!==e.importKind&&"typeof"!==e.importKind||(this.word(e.importKind),this.space());var t=e.specifiers.slice(0);if(t&&t.length){for(;;){var n=t[0];if(!m.isImportDefaultSpecifier(n)&&!m.isImportNamespaceSpecifier(n))break;this.print(t.shift(),e),t.length&&(this.token(","),this.space())}t.length&&(this.token("{"),this.space(),this.printList(t,e),this.space(),this.token("}")),this.space(),this.word("from"),this.space()}this.print(e.source,e),this.semicolon()}function d(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.local,e)}n.__esModule=!0,n.ImportSpecifier=i,n.ImportDefaultSpecifier=a,n.ExportDefaultSpecifier=s,n.ExportSpecifier=o,n.ExportNamespaceSpecifier=u,n.ExportAllDeclaration=l,n.ExportNamedDeclaration=c,n.ExportDefaultDeclaration=p,n.ImportDeclaration=h,n.ImportNamespaceSpecifier=d;var y=e("babel-types"),m=r(y)},{"babel-types":265}],82:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){this.word("with"),this.space(),this.token("("),this.print(e.object,e),this.token(")"),this.printBlock(e)}function s(e){this.word("if"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.space();var t=e.alternate&&C.isIfStatement(o(e.consequent));t&&(this.token("{"),this.newline(),this.indent()),this.printAndIndentOnComments(e.consequent,e),t&&(this.dedent(),this.newline(),this.token("}")),e.alternate&&(this.endsWith("}")&&this.space(),this.word("else"),this.space(),this.printAndIndentOnComments(e.alternate,e))}function o(e){return C.isStatement(e.body)?o(e.body):e}function u(e){this.word("for"),this.space(),this.token("("),this.inForStatementInitCounter++,this.print(e.init,e),this.inForStatementInitCounter--,this.token(";"),e.test&&(this.space(),this.print(e.test,e)),this.token(";"),e.update&&(this.space(),this.print(e.update,e)),this.token(")"),this.printBlock(e)}function l(e){this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.printBlock(e)}function c(e){this.word("do"),this.space(),this.print(e.body,e),this.space(),this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.semicolon()}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"label";return function(n){this.word(e);var r=n[t];if(r){this.space();var i=this.startTerminatorless();this.print(r,n),this.endTerminatorless(i)}this.semicolon()}}function f(e){this.print(e.label,e),this.token(":"),this.space(),this.print(e.body,e)}function h(e){this.word("try"),this.space(),this.print(e.block,e),this.space(),e.handlers?this.print(e.handlers[0],e):this.print(e.handler,e),e.finalizer&&(this.space(),this.word("finally"),this.space(),this.print(e.finalizer,e))}function d(e){this.word("catch"),this.space(),this.token("("),this.print(e.param,e),this.token(")"),this.space(),this.print(e.body,e)}function y(e){this.word("switch"),this.space(),this.token("("),this.print(e.discriminant,e),this.token(")"),this.space(),this.token("{"),this.printSequence(e.cases,e,{indent:!0,addNewlines:function(t,n){if(!t&&e.cases[e.cases.length-1]===n)return-1}}),this.token("}")}function m(e){e.test?(this.word("case"),this.space(),this.print(e.test,e),this.token(":")):(this.word("default"),this.token(":")),e.consequent.length&&(this.newline(),this.printSequence(e.consequent,e,{indent:!0}))}function b(){this.word("debugger"),this.semicolon()}function g(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<4;e++)this.space(!0)}function v(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<6;e++)this.space(!0)}function x(e,t){this.word(e.kind),this.space();var n=!1;if(!C.isFor(t))for(var r=e.declarations,i=Array.isArray(r),a=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;o.init&&(n=!0)}var u=void 0;n&&(u="const"===e.kind?v:g),this.printList(e.declarations,e,{separator:u}),(!C.isFor(t)||t.left!==e&&t.init!==e)&&this.semicolon()}function _(e){this.print(e.id,e),this.print(e.id.typeAnnotation,e),e.init&&(this.space(),this.token("="),this.space(),this.print(e.init,e))}n.__esModule=!0,n.ThrowStatement=n.BreakStatement=n.ReturnStatement=n.ContinueStatement=n.ForAwaitStatement=n.ForOfStatement=n.ForInStatement=void 0;var E=e("babel-runtime/core-js/get-iterator"),A=i(E);n.WithStatement=a,n.IfStatement=s,n.ForStatement=u,n.WhileStatement=l,n.DoWhileStatement=c,n.LabeledStatement=f,n.TryStatement=h,n.CatchClause=d,n.SwitchStatement=y,n.SwitchCase=m,n.DebuggerStatement=b,n.VariableDeclaration=x,n.VariableDeclarator=_;var D=e("babel-types"),C=r(D),S=function(e){return function(t){this.word("for"),this.space(),"await"===e&&(this.word("await"),this.space(),e="of"),this.token("("),this.print(t.left,t),this.space(),this.word(e),this.space(),this.print(t.right,t),this.token(")"),this.printBlock(t)}};n.ForInStatement=S("in"),n.ForOfStatement=S("of"),n.ForAwaitStatement=S("await"),n.ContinueStatement=p("continue"),n.ReturnStatement=p("return","argument"),n.BreakStatement=p("break"),n.ThrowStatement=p("throw","argument")},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],83:[function(e,t,n){"use strict";function r(e){this.print(e.tag,e),this.print(e.quasi,e)}function i(e,t){var n=t.quasis[0]===e,r=t.quasis[t.quasis.length-1]===e,i=(n?"`":"}")+e.value.raw+(r?"`":"${");n||this.space(),this.token(i),r||this.space()}function a(e){for(var t=e.quasis,n=0;n0&&this.space(),this.print(i,e),r=0||e.indexOf("@preserve")>=0},"auto"===a.compact&&(a.compact=e.length>5e5,a.compact&&console.error("[BABEL] "+g.get("codeGeneratorDeopt",t.filename,"500KB"))),a.compact&&(a.indent.adjustMultilineComment=!1),a}function s(e,t){var n="double";if(!e)return n;for(var r={single:0,double:0},i=0,a=0;a=3)break}}return r.single>r.double?"single":"double"}n.__esModule=!0,n.CodeGenerator=void 0;var o=e("babel-runtime/helpers/classCallCheck"),u=i(o),l=e("babel-runtime/helpers/possibleConstructorReturn"),c=i(l),p=e("babel-runtime/helpers/inherits"),f=i(p);n.default=function(e,t,n){var r=new _(e,t,n);return r.generate()};var h=e("detect-indent"),d=i(h),y=e("./source-map"),m=i(y),b=e("babel-messages"),g=r(b),v=e("./printer"),x=i(v),_=function(e){function t(n,r,i){(0,u.default)(this,t),r=r||{};var s=n.tokens||[],o=a(i,r,s),l=r.sourceMaps?new m.default(r,i):null,p=(0,c.default)(this,e.call(this,o,l,s));return p.ast=n,p}return(0,f.default)(t,e),t.prototype.generate=function(){return e.prototype.generate.call(this,this.ast)},t}(x.default);n.CodeGenerator=function(){function e(t,n,r){(0,u.default)(this,e),this._generator=new _(t,n,r)}return e.prototype.generate=function(){return this._generator.generate()},e}()},{"./printer":89,"./source-map":90,"babel-messages":99,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"detect-indent":92}],86:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){function t(e,t){var r=n[e];n[e]=r?function(e,n,i){var a=r(e,n,i);return null==a?t(e,n,i):a}:t}for(var n={},r=(0,y.default)(e),i=Array.isArray(r),a=0,r=i?r:(0,h.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s,u=_.FLIPPED_ALIAS_KEYS[o];if(u)for(var l=u,c=Array.isArray(l),p=0,l=c?l:(0,h.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var d=f;t(d,e[o])}else t(o,e[o])}return n}function s(e,t,n,r){var i=e[t.type];return i?i(t,n,r):null}function o(e){return!!_.isCallExpression(e)||!!_.isMemberExpression(e)&&(o(e.object)||!e.computed&&o(e.property))}function u(e,t,n){if(!e)return 0;_.isExpressionStatement(e)&&(e=e.expression);var r=s(A,e,t);if(!r){var i=s(D,e,t);if(i)for(var a=0;aa)return!0;if(r===a&&t.right===e&&!v.isLogicalExpression(t))return!0}return!1}function u(e,t){if("in"===e.operator){if(v.isVariableDeclarator(t))return!0;if(v.isFor(t))return!0}return!1}function l(e,t){return!v.isForStatement(t)&&((!v.isExpressionStatement(t)||t.expression!==e)&&(!v.isReturnStatement(t)&&(!v.isThrowStatement(t)&&((!v.isSwitchStatement(t)||t.discriminant!==e)&&((!v.isWhileStatement(t)||t.test!==e)&&((!v.isIfStatement(t)||t.test!==e)&&(!v.isForInStatement(t)||t.right!==e)))))))}function c(e,t){return v.isBinary(t)||v.isUnaryLike(t)||v.isCallExpression(t)||v.isMemberExpression(t)||v.isNewExpression(t)||v.isConditionalExpression(t)&&e===t.test}function p(e,t,n){return b(n,{considerDefaultExports:!0})}function f(e,t){return!!v.isMemberExpression(t,{object:e})||!(!v.isCallExpression(t,{callee:e})&&!v.isNewExpression(t,{callee:e}))}function h(e,t,n){return b(n,{considerDefaultExports:!0})}function d(e,t){return!!v.isExportDeclaration(t)||(!(!v.isBinaryExpression(t)&&!v.isLogicalExpression(t))||(!!v.isUnaryExpression(t)||f(e,t)))}function y(e,t){return!!v.isUnaryLike(t)||(!!v.isBinary(t)||(!!v.isConditionalExpression(t,{test:e})||f(e,t)))}function m(e){return!!v.isObjectPattern(e.left)||y.apply(void 0,arguments)}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.considerArrow,r=void 0!==n&&n,i=t.considerDefaultExports,a=void 0!==i&&i,s=e.length-1,o=e[s];s--;for(var u=e[s];s>0;){if(v.isExpressionStatement(u,{expression:o}))return!0;if(a&&v.isExportDefaultDeclaration(u,{declaration:o}))return!0;if(r&&v.isArrowFunctionExpression(u,{body:o}))return!0;if(!(v.isCallExpression(u,{callee:o})||v.isSequenceExpression(u)&&u.expressions[0]===o||v.isMemberExpression(u,{object:o})||v.isConditional(u,{test:o})||v.isBinary(u,{left:o})||v.isAssignmentExpression(u,{left:o})))return!1;o=u,s--,u=e[s]}return!1}n.__esModule=!0,n.AwaitExpression=n.FunctionTypeAnnotation=void 0,n.NullableTypeAnnotation=i,n.UpdateExpression=a,n.ObjectExpression=s,n.Binary=o,n.BinaryExpression=u,n.SequenceExpression=l,n.YieldExpression=c,n.ClassExpression=p,n.UnaryLike=f,n.FunctionExpression=h,n.ArrowFunctionExpression=d,n.ConditionalExpression=y,n.AssignmentExpression=m;var g=e("babel-types"),v=r(g),x={"||":0,"&&":1,"|":2,"^":3,"&":4,"==":5,"===":5,"!=":5,"!==":5,"<":6,">":6,"<=":6,">=":6,in:6,instanceof:6,">>":7,"<<":7,">>>":7,"+":8,"-":8,"*":9,"/":9,"%":9,"**":10};n.FunctionTypeAnnotation=i,n.AwaitExpression=c},{"babel-types":265}],88:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y.isMemberExpression(e)?(a(e.object,t),e.computed&&a(e.property,t)):y.isBinary(e)||y.isAssignmentExpression(e)?(a(e.left,t),a(e.right,t)):y.isCallExpression(e)?(t.hasCall=!0,a(e.callee,t)):y.isFunction(e)?t.hasFunction=!0:y.isIdentifier(e)&&(t.hasHelper=t.hasHelper||s(e.callee)),t}function s(e){return y.isMemberExpression(e)?s(e.object)||s(e.property):y.isIdentifier(e)?"require"===e.name||"_"===e.name[0]:y.isCallExpression(e)?s(e.callee):!(!y.isBinary(e)&&!y.isAssignmentExpression(e))&&(y.isIdentifier(e.left)&&s(e.left)||s(e.right))}function o(e){return y.isLiteral(e)||y.isObjectExpression(e)||y.isArrayExpression(e)||y.isIdentifier(e)||y.isMemberExpression(e)}var u=e("lodash/isBoolean"),l=i(u),c=e("lodash/each"),p=i(c),f=e("lodash/map"),h=i(f),d=e("babel-types"),y=r(d);n.nodes={AssignmentExpression:function(e){var t=a(e.right);if(t.hasCall&&t.hasHelper||t.hasFunction)return{before:t.hasFunction,after:!0}},SwitchCase:function(e,t){return{before:e.consequent.length||t.cases[0]===e}},LogicalExpression:function(e){if(y.isFunction(e.left)||y.isFunction(e.right))return{after:!0}},Literal:function(e){if("use strict"===e.value)return{after:!0}},CallExpression:function(e){if(y.isFunction(e.callee)||s(e))return{before:!0,after:!0}},VariableDeclaration:function(e){for(var t=0;t0?new F.default(r):null}return e.prototype.generate=function(e){return this.print(e),this._maybeAddAuxComment(),this._buf.get()},e.prototype.indent=function(){this.format.compact||this.format.concise||this._indent++},e.prototype.dedent=function(){this.format.compact||this.format.concise||this._indent--},e.prototype.semicolon=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._maybeAddAuxComment(),this._append(";",!e)},e.prototype.rightBrace=function(){this.format.minified&&this._buf.removeLastSemicolon(),this.token("}")},e.prototype.space=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.format.compact||(this._buf.hasContent()&&!this.endsWith(" ")&&!this.endsWith("\n")||e)&&this._space()},e.prototype.word=function(e){this._endsWithWord&&this._space(),this._maybeAddAuxComment(),this._append(e),this._endsWithWord=!0},e.prototype.number=function(e){this.word(e),this._endsWithInteger=(0,_.default)(+e)&&!O.test(e)&&!j.test(e)&&!B.test(e)&&"."!==e[e.length-1]},e.prototype.token=function(e){("--"===e&&this.endsWith("!")||"+"===e[0]&&this.endsWith("+")||"-"===e[0]&&this.endsWith("-")||"."===e[0]&&this._endsWithInteger)&&this._space(),this._maybeAddAuxComment(),this._append(e)},e.prototype.newline=function(e){if(!this.format.retainLines&&!this.format.compact){if(this.format.concise)return void this.space();if(!(this.endsWith("\n\n")||("number"!=typeof e&&(e=1),e=Math.min(2,e),(this.endsWith("{\n")||this.endsWith(":\n"))&&e--,e<=0)))for(var t=0;t1&&void 0!==arguments[1]&&arguments[1];this._maybeAddParen(e),this._maybeIndent(e),t?this._buf.queue(e):this._buf.append(e),this._endsWithWord=!1,this._endsWithInteger=!1},e.prototype._maybeIndent=function(e){this._indent&&this.endsWith("\n")&&"\n"!==e[0]&&this._buf.queue(this._getIndent())},e.prototype._maybeAddParen=function(e){var t=this._parenPushNewlineState;if(t){this._parenPushNewlineState=null;var n=void 0;for(n=0;n2&&void 0!==arguments[2]?arguments[2]:{};if(e&&e.length){n.indent&&this.indent();for(var r={addNewlines:n.addNewlines},i=0;i1&&void 0!==arguments[1])||arguments[1];e.innerComments&&(t&&this.indent(),this._printComments(e.innerComments),t&&this.dedent())},e.prototype.printSequence=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.statement=!0,this.printJoin(e,t,n)},e.prototype.printList=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return null==n.separator&&(n.separator=a),this.printJoin(e,t,n)},e.prototype._printNewline=function(e,t,n,r){var i=this;if(!this.format.retainLines&&!this.format.compact){if(this.format.concise)return void this.space();var a=0;if(null!=t.start&&!t._ignoreUserWhitespace&&this._whitespace)if(e){var s=t.leadingComments,o=s&&(0,b.default)(s,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});a=this._whitespace.getNewlinesBefore(o||t)}else{var u=t.trailingComments,l=u&&(0,v.default)(u,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});a=this._whitespace.getNewlinesAfter(l||t)}else{e||a++,r.addNewlines&&(a+=r.addNewlines(e,t)||0);var c=w.needsWhitespaceAfter;e&&(c=w.needsWhitespaceBefore),c(t,n)&&a++,this._buf.hasContent()||(a=0)}this.newline(a)}},e.prototype._getComments=function(e,t){return t&&(e?t.leadingComments:t.trailingComments)||[]},e.prototype._printComment=function(e){var t=this;if(this.format.shouldPrintComment(e.value)&&!e.ignore&&!this._printedComments.has(e)){if(this._printedComments.add(e),null!=e.start){if(this._printedCommentStarts[e.start])return;this._printedCommentStarts[e.start]=!0}this.newline(this._whitespace?this._whitespace.getNewlinesBefore(e):0),this.endsWith("[")||this.endsWith("{")||this.space();var n="CommentLine"===e.type?"//"+e.value+"\n":"/*"+e.value+"*/";if("CommentBlock"===e.type&&this.format.indent.adjustMultilineComment){var r=e.loc&&e.loc.start.column;if(r){var i=new RegExp("\\n\\s{1,"+r+"}","g");n=n.replace(i,"\n")}var a=Math.max(this._getIndent().length,this._buf.getCurrentColumn());n=n.replace(/\n(?!$)/g,"\n"+(0,A.default)(" ",a))}this.withSource("start",e.loc,function(){t._append(n)}),this.newline((this._whitespace?this._whitespace.getNewlinesAfter(e):0)+("CommentLine"===e.type?-1:0))}},e.prototype._printComments=function(e){if(e&&e.length)for(var t=e,n=Array.isArray(t),r=0,t=n?t:(0,l.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this._printComment(a)}},e}();n.default=I;for(var N=[e("./generators/template-literals"),e("./generators/expressions"),e("./generators/statements"),e("./generators/classes"),e("./generators/methods"),e("./generators/modules"),e("./generators/types"),e("./generators/flow"),e("./generators/base"),e("./generators/jsx")],L=0;L=0){for(;i&&e.start===r[i-1].start;)--i;t=r[i-1],n=r[i]}return this._getNewlinesBetween(t,n)},e.prototype.getNewlinesAfter=function(e){var t=void 0,n=void 0,r=this.tokens,i=this._findToken(function(t){return t.end-e.end},0,r.length);if(i>=0){for(;i&&e.end===r[i-1].end;)--i;t=r[i],n=r[i+1],","===n.type.label&&(n=r[i+2])}return n&&"eof"===n.type.label?1:this._getNewlinesBetween(t,n)},e.prototype._getNewlinesBetween=function(e,t){if(!t||!t.loc)return 0;for(var n=e?e.loc.end.line:1,r=t.loc.start.line,i=0,a=n;a=n)return-1;var r=t+n>>>1,i=e(this.tokens[r]);return i<0?this._findToken(e,r+1,n):i>0?this._findToken(e,t,r):0===i?r:-1},e}();n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],92:[function(e,t,n){"use strict";function r(e){var t=0,n=0,r=0;for(var i in e){var a=e[i],s=a[0],o=a[1];(s>n||s===n&&o>r)&&(n=s,r=o,t=Number(i))}return t}var i=e("repeating"),a=/^(?:( )+|\t+)/;t.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");var t,n,s=0,o=0,u=0,l={};e.split(/\n/g).forEach(function(e){if(e){var r,i=e.match(a);i?(r=i[0].length,i[1]?o++:s++):r=0;var c=r-u;u=r,c?(n=c>0,t=l[n?c:-c],t?t[0]++:t=l[c]=[1,0]):t&&(t[1]+=Number(n))}});var c,p,f=r(l);return f?o>=s?(c="space",p=i(" ",f)):(c="tab",p=i("\t",f)):(c=null,p=""),{amount:f,type:c,indent:p}}},{repeating:93}],93:[function(e,t,n){"use strict";var r=e("is-finite");t.exports=function(e,t){if("string"!=typeof e)throw new TypeError("Expected `input` to be a string");if(t<0||!r(t))throw new TypeError("Expected `count` to be a positive finite number");var n="";do 1&t&&(n+=e),e+=e;while(t>>=1);return n}},{"is-finite":94}],94:[function(e,t,n){"use strict";var r=e("number-is-nan");t.exports=Number.isFinite||function(e){return!("number"!=typeof e||r(e)||e===1/0||e===-(1/0))}},{"number-is-nan":95}],95:[function(e,t,n){"use strict";t.exports=Number.isNaN||function(e){return e!==e}},{}],96:[function(e,t,n){(function(e){!function(r){var i="object"==typeof n&&n,a="object"==typeof t&&t&&t.exports==i&&t,s="object"==typeof e&&e;s.global!==s&&s.window!==s||(r=s);var o={},u=o.hasOwnProperty,l=function(e,t){var n;for(n in e)u.call(e,n)&&t(n,e[n])},c=function(e,t){return t?(l(t,function(t,n){e[t]=n}),e):e},p=function(e,t){for(var n=e.length,r=-1;++r=55296&&O<=56319&&R>M+1&&(I=L.charCodeAt(M+1),I>=56320&&I<=57343))){N=1024*(O-55296)+I-56320+65536;var V=N.toString(16);u||(V=V.toUpperCase()),i+="\\u{"+V+"}",M++}else{if(!t.escapeEverything){if(A.test(U)){i+=U;continue}if('"'==U){i+=a==U?'\\"':U;continue}if("'"==U){i+=a==U?"\\'":U;continue}}if("\0"!=U||r||E.test(L.charAt(M+1)))if(_.test(U))i+=x[U];else{var G=U.charCodeAt(0),V=G.toString(16);u||(V=V.toUpperCase());var q=V.length>2||r,K="\\"+(q?"u":"x")+("0000"+V).slice(q?-4:-2);i+=K}else i+="\\0"}}return t.wrap&&(i=a+i+a),t.escapeEtago?i.replace(/<\/(script|style)/gi,"<\\/$1"):i};D.version="1.3.0","function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return D}):i&&!i.nodeType?a?a.exports=D:i.jsesc=D:r.jsesc=D}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],97:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-template"),a=r(i),s={};n.default=s,s.typeof=(0,a.default)('\n  (typeof Symbol === "function" && typeof Symbol.iterator === "symbol")\n    ? function (obj) { return typeof obj; }\n    : function (obj) {\n        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype\n          ? "symbol"\n          : typeof obj;\n      };\n'),s.jsx=(0,a.default)('\n  (function () {\n    var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7;\n\n    return function createRawReactElement (type, props, key, children) {\n      var defaultProps = type && type.defaultProps;\n      var childrenLength = arguments.length - 3;\n\n      if (!props && childrenLength !== 0) {\n        // If we\'re going to assign props.children, we create a new object now\n        // to avoid mutating defaultProps.\n        props = {};\n      }\n      if (props && defaultProps) {\n        for (var propName in defaultProps) {\n          if (props[propName] === void 0) {\n            props[propName] = defaultProps[propName];\n          }\n        }\n      } else if (!props) {\n        props = defaultProps || {};\n      }\n\n      if (childrenLength === 1) {\n        props.children = children;\n      } else if (childrenLength > 1) {\n        var childArray = Array(childrenLength);\n        for (var i = 0; i < childrenLength; i++) {\n          childArray[i] = arguments[i + 3];\n        }\n        props.children = childArray;\n      }\n\n      return {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key === undefined ? null : \'\' + key,\n        ref: null,\n        props: props,\n        _owner: null,\n      };\n    };\n\n  })()\n'),s.asyncIterator=(0,a.default)('\n  (function (iterable) {\n    if (typeof Symbol === "function") {\n      if (Symbol.asyncIterator) {\n        var method = iterable[Symbol.asyncIterator];\n        if (method != null) return method.call(iterable);\n      }\n      if (Symbol.iterator) {\n        return iterable[Symbol.iterator]();\n      }\n    }\n    throw new TypeError("Object is not async iterable");\n  })\n'),s.asyncGenerator=(0,a.default)('\n  (function () {\n    function AwaitValue(value) {\n      this.value = value;\n    }\n\n    function AsyncGenerator(gen) {\n      var front, back;\n\n      function send(key, arg) {\n        return new Promise(function (resolve, reject) {\n          var request = {\n            key: key,\n            arg: arg,\n            resolve: resolve,\n            reject: reject,\n            next: null\n          };\n\n          if (back) {\n            back = back.next = request;\n          } else {\n            front = back = request;\n            resume(key, arg);\n          }\n        });\n      }\n\n      function resume(key, arg) {\n        try {\n          var result = gen[key](arg)\n          var value = result.value;\n          if (value instanceof AwaitValue) {\n            Promise.resolve(value.value).then(\n              function (arg) { resume("next", arg); },\n              function (arg) { resume("throw", arg); });\n          } else {\n            settle(result.done ? "return" : "normal", result.value);\n          }\n        } catch (err) {\n          settle("throw", err);\n        }\n      }\n\n      function settle(type, value) {\n        switch (type) {\n          case "return":\n            front.resolve({ value: value, done: true });\n            break;\n          case "throw":\n            front.reject(value);\n            break;\n          default:\n            front.resolve({ value: value, done: false });\n            break;\n        }\n\n        front = front.next;\n        if (front) {\n          resume(front.key, front.arg);\n        } else {\n          back = null;\n        }\n      }\n\n      this._invoke = send;\n\n      // Hide "return" method if generator return is not supported\n      if (typeof gen.return !== "function") {\n        this.return = undefined;\n      }\n    }\n\n    if (typeof Symbol === "function" && Symbol.asyncIterator) {\n      AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; };\n    }\n\n    AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };\n    AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };\n    AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };\n\n    return {\n      wrap: function (fn) {\n        return function () {\n          return new AsyncGenerator(fn.apply(this, arguments));\n        };\n      },\n      await: function (value) {\n        return new AwaitValue(value);\n      }\n    };\n\n  })()\n'),s.asyncGeneratorDelegate=(0,a.default)('\n  (function (inner, awaitWrap) {\n    var iter = {}, waiting = false;\n\n    function pump(key, value) {\n      waiting = true;\n      value = new Promise(function (resolve) { resolve(inner[key](value)); });\n      return { done: false, value: awaitWrap(value) };\n    };\n\n    if (typeof Symbol === "function" && Symbol.iterator) {\n      iter[Symbol.iterator] = function () { return this; };\n    }\n\n    iter.next = function (value) {\n      if (waiting) {\n        waiting = false;\n        return value;\n      }\n      return pump("next", value);\n    };\n\n    if (typeof inner.throw === "function") {\n      iter.throw = function (value) {\n        if (waiting) {\n          waiting = false;\n          throw value;\n        }\n        return pump("throw", value);\n      };\n    }\n\n    if (typeof inner.return === "function") {\n      iter.return = function (value) {\n        return pump("return", value);\n      };\n    }\n\n    return iter;\n  })\n'),s.asyncToGenerator=(0,a.default)('\n  (function (fn) {\n    return function () {\n      var gen = fn.apply(this, arguments);\n      return new Promise(function (resolve, reject) {\n        function step(key, arg) {\n          try {\n            var info = gen[key](arg);\n            var value = info.value;\n          } catch (error) {\n            reject(error);\n            return;\n          }\n\n          if (info.done) {\n            resolve(value);\n          } else {\n            return Promise.resolve(value).then(function (value) {\n              step("next", value);\n            }, function (err) {\n              step("throw", err);\n            });\n          }\n        }\n\n        return step("next");\n      });\n    };\n  })\n'),s.classCallCheck=(0,a.default)('\n  (function (instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError("Cannot call a class as a function");\n    }\n  });\n'),s.createClass=(0,a.default)('\n  (function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i ++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if ("value" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  })()\n'),s.defineEnumerableProperties=(0,a.default)('\n  (function (obj, descs) {\n    for (var key in descs) {\n      var desc = descs[key];\n      desc.configurable = desc.enumerable = true;\n      if ("value" in desc) desc.writable = true;\n      Object.defineProperty(obj, key, desc);\n    }\n    return obj;\n  })\n'),s.defaults=(0,a.default)("\n  (function (obj, defaults) {\n    var keys = Object.getOwnPropertyNames(defaults);\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var value = Object.getOwnPropertyDescriptor(defaults, key);\n      if (value && value.configurable && obj[key] === undefined) {\n        Object.defineProperty(obj, key, value);\n      }\n    }\n    return obj;\n  })\n"),s.defineProperty=(0,a.default)("\n  (function (obj, key, value) {\n    // Shortcircuit the slow defineProperty path when possible.\n    // We are trying to avoid issues where setters defined on the\n    // prototype cause side effects under the fast path of simple\n    // assignment. By checking for existence of the property with\n    // the in operator, we can optimize most of this overhead away.\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  });\n"),s.extends=(0,a.default)("\n  Object.assign || (function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  })\n"),s.get=(0,a.default)('\n  (function get(object, property, receiver) {\n    if (object === null) object = Function.prototype;\n\n    var desc = Object.getOwnPropertyDescriptor(object, property);\n\n    if (desc === undefined) {\n      var parent = Object.getPrototypeOf(object);\n\n      if (parent === null) {\n        return undefined;\n      } else {\n        return get(parent, property, receiver);\n      }\n    } else if ("value" in desc) {\n      return desc.value;\n    } else {\n      var getter = desc.get;\n\n      if (getter === undefined) {\n        return undefined;\n      }\n\n      return getter.call(receiver);\n    }\n  });\n'),s.inherits=(0,a.default)('\n  (function (subClass, superClass) {\n    if (typeof superClass !== "function" && superClass !== null) {\n      throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n    }\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n  })\n'),s.instanceof=(0,a.default)('\n  (function (left, right) {\n    if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {\n      return right[Symbol.hasInstance](left);\n    } else {\n      return left instanceof right;\n    }\n  });\n'),s.interopRequireDefault=(0,a.default)("\n  (function (obj) {\n    return obj && obj.__esModule ? obj : { default: obj };\n  })\n"),s.interopRequireWildcard=(0,a.default)("\n  (function (obj) {\n    if (obj && obj.__esModule) {\n      return obj;\n    } else {\n      var newObj = {};\n      if (obj != null) {\n        for (var key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n        }\n      }\n      newObj.default = obj;\n      return newObj;\n    }\n  })\n"),s.newArrowCheck=(0,a.default)('\n  (function (innerThis, boundThis) {\n    if (innerThis !== boundThis) {\n      throw new TypeError("Cannot instantiate an arrow function");\n    }\n  });\n'),s.objectDestructuringEmpty=(0,a.default)('\n  (function (obj) {\n    if (obj == null) throw new TypeError("Cannot destructure undefined");\n  });\n'),s.objectWithoutProperties=(0,a.default)("\n  (function (obj, keys) {\n    var target = {};\n    for (var i in obj) {\n      if (keys.indexOf(i) >= 0) continue;\n      if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n      target[i] = obj[i];\n    }\n    return target;\n  })\n"),s.possibleConstructorReturn=(0,a.default)('\n  (function (self, call) {\n    if (!self) {\n      throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n    }\n    return call && (typeof call === "object" || typeof call === "function") ? call : self;\n  });\n'),s.selfGlobal=(0,a.default)('\n  typeof global === "undefined" ? self : global\n'),s.set=(0,a.default)('\n  (function set(object, property, value, receiver) {\n    var desc = Object.getOwnPropertyDescriptor(object, property);\n\n    if (desc === undefined) {\n      var parent = Object.getPrototypeOf(object);\n\n      if (parent !== null) {\n        set(parent, property, value, receiver);\n      }\n    } else if ("value" in desc && desc.writable) {\n      desc.value = value;\n    } else {\n      var setter = desc.set;\n\n      if (setter !== undefined) {\n        setter.call(receiver, value);\n      }\n    }\n\n    return value;\n  });\n'),s.slicedToArray=(0,a.default)('\n  (function () {\n    // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n    // array iterator case.\n    function sliceIterator(arr, i) {\n      // this is an expanded form of `for...of` that properly supports abrupt completions of\n      // iterators etc. variable names have been minimised to reduce the size of this massive\n      // helper. sometimes spec compliancy is annoying :(\n      //\n      // _n = _iteratorNormalCompletion\n      // _d = _didIteratorError\n      // _e = _iteratorError\n      // _i = _iterator\n      // _s = _step\n\n      var _arr = [];\n      var _n = true;\n      var _d = false;\n      var _e = undefined;\n      try {\n        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n          _arr.push(_s.value);\n          if (i && _arr.length === i) break;\n        }\n      } catch (err) {\n        _d = true;\n        _e = err;\n      } finally {\n        try {\n          if (!_n && _i["return"]) _i["return"]();\n        } finally {\n          if (_d) throw _e;\n        }\n      }\n      return _arr;\n    }\n\n    return function (arr, i) {\n      if (Array.isArray(arr)) {\n        return arr;\n      } else if (Symbol.iterator in Object(arr)) {\n        return sliceIterator(arr, i);\n      } else {\n        throw new TypeError("Invalid attempt to destructure non-iterable instance");\n      }\n    };\n  })();\n'),s.slicedToArrayLoose=(0,a.default)('\n  (function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      var _arr = [];\n      for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n        _arr.push(_step.value);\n        if (i && _arr.length === i) break;\n      }\n      return _arr;\n    } else {\n      throw new TypeError("Invalid attempt to destructure non-iterable instance");\n    }\n  });\n'),s.taggedTemplateLiteral=(0,a.default)("\n  (function (strings, raw) {\n    return Object.freeze(Object.defineProperties(strings, {\n        raw: { value: Object.freeze(raw) }\n    }));\n  });\n"),s.taggedTemplateLiteralLoose=(0,a.default)("\n  (function (strings, raw) {\n    strings.raw = raw;\n    return strings;\n  });\n"),s.temporalRef=(0,a.default)('\n  (function (val, name, undef) {\n    if (val === undef) {\n      throw new ReferenceError(name + " is not defined - temporal dead zone");\n    } else {\n      return val;\n    }\n  })\n'),s.temporalUndefined=(0,a.default)("\n  ({})\n"),s.toArray=(0,a.default)("\n  (function (arr) {\n    return Array.isArray(arr) ? arr : Array.from(arr);\n  });\n"),s.toConsumableArray=(0,a.default)("\n  (function (arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n      return arr2;\n    } else {\n      return Array.from(arr);\n    }\n  });\n"),t.exports=n.default},{"babel-template":225}],98:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=u.default[e];if(!t)throw new ReferenceError("Unknown helper "+e);return t().expression}n.__esModule=!0,n.list=void 0;var a=e("babel-runtime/core-js/object/keys"),s=r(a);n.get=i;var o=e("./helpers"),u=r(o);n.list=(0,s.default)(u.default).map(function(e){return"_"===e[0]?e.slice(1):e}).filter(function(e){return"__esModule"!==e});n.default=i},{"./helpers":97,"babel-runtime/core-js/object/keys":107}],99:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},{}],117:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../helpers/typeof"),a=r(i);n.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==("undefined"==typeof t?"undefined":(0,a.default)(t))&&"function"!=typeof t?e:t}},{"../helpers/typeof":118}],118:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../core-js/symbol/iterator"),a=r(i),s=e("../core-js/symbol"),o=r(s),u="function"==typeof o.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};n.default="function"==typeof o.default&&"symbol"===u(a.default)?function(e){return"undefined"==typeof e?"undefined":u(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":"undefined"==typeof e?"undefined":u(e)}},{"../core-js/symbol":109,"../core-js/symbol/iterator":111}],119:[function(e,t,n){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":208,"../modules/es6.string.iterator":217,"../modules/web.dom.iterable":224}],120:[function(e,t,n){var r=e("../../modules/_core"),i=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(e){return i.stringify.apply(i,arguments)}},{"../../modules/_core":148}],121:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.map"),e("../modules/es7.map.to-json"),t.exports=e("../modules/_core").Map},{"../modules/_core":148,"../modules/es6.map":210,"../modules/es6.object.to-string":216,"../modules/es6.string.iterator":217,"../modules/es7.map.to-json":221,"../modules/web.dom.iterable":224}],122:[function(e,t,n){e("../../modules/es6.number.max-safe-integer"),t.exports=9007199254740991},{"../../modules/es6.number.max-safe-integer":211}],123:[function(e,t,n){e("../../modules/es6.object.assign"),t.exports=e("../../modules/_core").Object.assign},{"../../modules/_core":148,"../../modules/es6.object.assign":212}],124:[function(e,t,n){e("../../modules/es6.object.create");var r=e("../../modules/_core").Object;t.exports=function(e,t){return r.create(e,t)}},{"../../modules/_core":148,"../../modules/es6.object.create":213}],125:[function(e,t,n){e("../../modules/es6.symbol"),t.exports=e("../../modules/_core").Object.getOwnPropertySymbols},{"../../modules/_core":148,"../../modules/es6.symbol":218}],126:[function(e,t,n){e("../../modules/es6.object.keys"),t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":148,"../../modules/es6.object.keys":214}],127:[function(e,t,n){e("../../modules/es6.object.set-prototype-of"),t.exports=e("../../modules/_core").Object.setPrototypeOf},{"../../modules/_core":148,"../../modules/es6.object.set-prototype-of":215}],128:[function(e,t,n){e("../../modules/es6.symbol"),t.exports=e("../../modules/_core").Symbol.for},{"../../modules/_core":148,"../../modules/es6.symbol":218}],129:[function(e,t,n){e("../../modules/es6.symbol"),e("../../modules/es6.object.to-string"),e("../../modules/es7.symbol.async-iterator"),e("../../modules/es7.symbol.observable"),t.exports=e("../../modules/_core").Symbol},{"../../modules/_core":148,"../../modules/es6.object.to-string":216,"../../modules/es6.symbol":218,"../../modules/es7.symbol.async-iterator":222,"../../modules/es7.symbol.observable":223}],130:[function(e,t,n){e("../../modules/es6.string.iterator"),e("../../modules/web.dom.iterable"),t.exports=e("../../modules/_wks-ext").f("iterator")},{"../../modules/_wks-ext":205,"../../modules/es6.string.iterator":217,"../../modules/web.dom.iterable":224}],131:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/web.dom.iterable"),e("../modules/es6.weak-map"),t.exports=e("../modules/_core").WeakMap},{"../modules/_core":148,"../modules/es6.object.to-string":216,"../modules/es6.weak-map":219,"../modules/web.dom.iterable":224}],132:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/web.dom.iterable"),e("../modules/es6.weak-set"),t.exports=e("../modules/_core").WeakSet},{"../modules/_core":148,"../modules/es6.object.to-string":216,"../modules/es6.weak-set":220,"../modules/web.dom.iterable":224}],133:[function(e,t,n){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],134:[function(e,t,n){t.exports=function(){}},{}],135:[function(e,t,n){t.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},{}],136:[function(e,t,n){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":166}],137:[function(e,t,n){var r=e("./_for-of");t.exports=function(e,t){var n=[];return r(e,!1,n.push,n,t),n}},{"./_for-of":157}],138:[function(e,t,n){var r=e("./_to-iobject"),i=e("./_to-length"),a=e("./_to-index");t.exports=function(e){return function(t,n,s){var o,u=r(t),l=i(u.length),c=a(s,l);if(e&&n!=n){for(;l>c;)if(o=u[c++],o!=o)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===n)return e||c||0;return!e&&-1}}},{"./_to-index":197,"./_to-iobject":199,"./_to-length":200}],139:[function(e,t,n){var r=e("./_ctx"),i=e("./_iobject"),a=e("./_to-object"),s=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var n=1==e,u=2==e,l=3==e,c=4==e,p=6==e,f=5==e||p,h=t||o;return function(t,o,d){for(var y,m,b=a(t),g=i(b),v=r(o,d,3),x=s(g.length),_=0,E=n?h(t,x):u?h(t,0):void 0;x>_;_++)if((f||_ in g)&&(y=g[_],m=v(y,_,b),e))if(n)E[_]=m;else if(m)switch(e){case 3:return!0;case 5:return y;case 6:return _;case 2:E.push(y)}else if(c)return!1;return p?-1:l||c?c:E}}},{"./_array-species-create":141,"./_ctx":149,"./_iobject":163,"./_to-length":200,"./_to-object":201}],140:[function(e,t,n){var r=e("./_is-object"),i=e("./_is-array"),a=e("./_wks")("species");t.exports=function(e){var t;return i(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!i(t.prototype)||(t=void 0),r(t)&&(t=t[a],null===t&&(t=void 0))),void 0===t?Array:t}},{"./_is-array":165,"./_is-object":166,"./_wks":206}],141:[function(e,t,n){var r=e("./_array-species-constructor");t.exports=function(e,t){return new(r(e))(t)}},{"./_array-species-constructor":140}],142:[function(e,t,n){var r=e("./_cof"),i=e("./_wks")("toStringTag"),a="Arguments"==r(function(){return arguments}()),s=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,n,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=s(t=Object(e),i))?n:a?r(t):"Object"==(o=r(t))&&"function"==typeof t.callee?"Arguments":o}},{"./_cof":143,"./_wks":206}],143:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],144:[function(e,t,n){"use strict";var r=e("./_object-dp").f,i=e("./_object-create"),a=e("./_redefine-all"),s=e("./_ctx"),o=e("./_an-instance"),u=e("./_defined"),l=e("./_for-of"),c=e("./_iter-define"),p=e("./_iter-step"),f=e("./_set-species"),h=e("./_descriptors"),d=e("./_meta").fastKey,y=h?"_s":"size",m=function(e,t){var n,r=d(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};t.exports={getConstructor:function(e,t,n,c){var p=e(function(e,r){o(e,p,t,"_i"),e._i=i(null),e._f=void 0,e._l=void 0,e[y]=0,void 0!=r&&l(r,n,e[c],e)});return a(p.prototype,{clear:function(){for(var e=this,t=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete t[n.i];e._f=e._l=void 0,e[y]=0},delete:function(e){var t=this,n=m(t,e);if(n){var r=n.n,i=n.p;delete t._i[n.i],n.r=!0,i&&(i.n=r),r&&(r.p=i),t._f==n&&(t._f=r),t._l==n&&(t._l=i),t[y]--}return!!n},forEach:function(e){o(this,p,"forEach");for(var t,n=s(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(n(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!m(this,e)}}),h&&r(p.prototype,"size",{get:function(){return u(this[y])}}),p},def:function(e,t,n){var r,i,a=m(e,t);return a?a.v=n:(e._l=a={i:i=d(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=a),r&&(r.n=a),e[y]++,"F"!==i&&(e._i[i]=a)),e},getEntry:m,setStrong:function(e,t,n){c(e,t,function(e,t){this._t=e,this._k=t,this._l=void 0},function(){for(var e=this,t=e._k,n=e._l;n&&n.r;)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?"keys"==t?p(0,n.k):"values"==t?p(0,n.v):p(0,[n.k,n.v]):(e._t=void 0,p(1))},n?"entries":"values",!n,!0),f(t)}}},{"./_an-instance":135,"./_ctx":149,"./_defined":150,"./_descriptors":151,"./_for-of":157,"./_iter-define":169,"./_iter-step":170,"./_meta":174,"./_object-create":176,"./_object-dp":177,"./_redefine-all":189,"./_set-species":192}],145:[function(e,t,n){var r=e("./_classof"),i=e("./_array-from-iterable");t.exports=function(e){return function(){if(r(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},{"./_array-from-iterable":137,"./_classof":142}],146:[function(e,t,n){"use strict";var r=e("./_redefine-all"),i=e("./_meta").getWeak,a=e("./_an-object"),s=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_array-methods"),c=e("./_has"),p=l(5),f=l(6),h=0,d=function(e){return e._l||(e._l=new y)},y=function(){this.a=[]},m=function(e,t){return p(e.a,function(e){return e[0]===t})};y.prototype={get:function(e){var t=m(this,e);if(t)return t[1]},has:function(e){return!!m(this,e)},set:function(e,t){var n=m(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=f(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,n,a){var l=e(function(e,r){o(e,l,t,"_i"),e._i=h++,e._l=void 0,void 0!=r&&u(r,n,e[a],e)});return r(l.prototype,{delete:function(e){if(!s(e))return!1;var t=i(e);return t===!0?d(this).delete(e):t&&c(t,this._i)&&delete t[this._i]},has:function(e){if(!s(e))return!1;var t=i(e);return t===!0?d(this).has(e):t&&c(t,this._i)}}),l},def:function(e,t,n){var r=i(a(t),!0);return r===!0?d(e).set(t,n):r[e._i]=n,e},ufstore:d}},{"./_an-instance":135,"./_an-object":136,"./_array-methods":139,"./_for-of":157,"./_has":159,"./_is-object":166,"./_meta":174,"./_redefine-all":189}],147:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_export"),a=e("./_meta"),s=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),l=e("./_for-of"),c=e("./_an-instance"),p=e("./_is-object"),f=e("./_set-to-string-tag"),h=e("./_object-dp").f,d=e("./_array-methods")(0),y=e("./_descriptors");t.exports=function(e,t,n,m,b,g){var v=r[e],x=v,_=b?"set":"add",E=x&&x.prototype,A={};return y&&"function"==typeof x&&(g||E.forEach&&!s(function(){(new x).entries().next()}))?(x=t(function(t,n){c(t,x,e,"_c"),t._c=new v,void 0!=n&&l(n,b,t[_],t)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in E&&(!g||"clear"!=e)&&o(x.prototype,e,function(n,r){if(c(this,x,e),!t&&g&&!p(n))return"get"==e&&void 0;var i=this._c[e](0===n?0:n,r);return t?this:i})}),"size"in E&&h(x.prototype,"size",{get:function(){return this._c.size}})):(x=m.getConstructor(t,e,b,_),u(x.prototype,n),a.NEED=!0),f(x,e),A[e]=x,i(i.G+i.W+i.F,A),g||m.setStrong(x,e,b),x}},{"./_an-instance":135,"./_array-methods":139,"./_descriptors":151,"./_export":155,"./_fails":156,"./_for-of":157,"./_global":158,"./_hide":160,"./_is-object":166,"./_meta":174,"./_object-dp":177,"./_redefine-all":189,"./_set-to-string-tag":193}],148:[function(e,t,n){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],149:[function(e,t,n){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":133}],150:[function(e,t,n){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on  "+e);return e}},{}],151:[function(e,t,n){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":156}],152:[function(e,t,n){var r=e("./_is-object"),i=e("./_global").document,a=r(i)&&r(i.createElement);t.exports=function(e){return a?i.createElement(e):{}}},{"./_global":158,"./_is-object":166}],153:[function(e,t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],154:[function(e,t,n){var r=e("./_object-keys"),i=e("./_object-gops"),a=e("./_object-pie");t.exports=function(e){var t=r(e),n=i.f;if(n)for(var s,o=n(e),u=a.f,l=0;o.length>l;)u.call(e,s=o[l++])&&t.push(s);return t}},{"./_object-gops":182,"./_object-keys":185,"./_object-pie":186}],155:[function(e,t,n){var r=e("./_global"),i=e("./_core"),a=e("./_ctx"),s=e("./_hide"),o="prototype",u=function(e,t,n){var l,c,p,f=e&u.F,h=e&u.G,d=e&u.S,y=e&u.P,m=e&u.B,b=e&u.W,g=h?i:i[t]||(i[t]={}),v=g[o],x=h?r:d?r[t]:(r[t]||{})[o];h&&(n=t);for(l in n)c=!f&&x&&void 0!==x[l],c&&l in g||(p=c?x[l]:n[l],g[l]=h&&"function"!=typeof x[l]?n[l]:m&&c?a(p,r):b&&x[l]==p?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[o]=e[o],t}(p):y&&"function"==typeof p?a(Function.call,p):p,y&&((g.virtual||(g.virtual={}))[l]=p,e&u.R&&v&&!v[l]&&s(v,l,p)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":148,"./_ctx":149,"./_global":158,"./_hide":160}],156:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],157:[function(e,t,n){var r=e("./_ctx"),i=e("./_iter-call"),a=e("./_is-array-iter"),s=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={},n=t.exports=function(e,t,n,p,f){var h,d,y,m,b=f?function(){return e}:u(e),g=r(n,p,t?2:1),v=0;if("function"!=typeof b)throw TypeError(e+" is not iterable!");if(a(b)){for(h=o(e.length);h>v;v++)if(m=t?g(s(d=e[v])[0],d[1]):g(e[v]),m===l||m===c)return m}else for(y=b.call(e);!(d=y.next()).done;)if(m=i(y,g,d.value,t),m===l||m===c)return m};n.BREAK=l,n.RETURN=c},{"./_an-object":136,"./_ctx":149,"./_is-array-iter":164,"./_iter-call":167,"./_to-length":200,"./core.get-iterator-method":207}],158:[function(e,t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],159:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],160:[function(e,t,n){var r=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},{"./_descriptors":151,"./_object-dp":177,"./_property-desc":188}],161:[function(e,t,n){t.exports=e("./_global").document&&document.documentElement},{"./_global":158}],162:[function(e,t,n){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":151,"./_dom-create":152,"./_fails":156}],163:[function(e,t,n){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":143}],164:[function(e,t,n){var r=e("./_iterators"),i=e("./_wks")("iterator"),a=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||a[i]===e)}},{"./_iterators":171,"./_wks":206}],165:[function(e,t,n){var r=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==r(e)}},{"./_cof":143}],166:[function(e,t,n){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],167:[function(e,t,n){var r=e("./_an-object");t.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&r(a.call(e)),t}}},{"./_an-object":136}],168:[function(e,t,n){"use strict";var r=e("./_object-create"),i=e("./_property-desc"),a=e("./_set-to-string-tag"),s={};e("./_hide")(s,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,n){e.prototype=r(s,{next:i(1,n)}),a(e,t+" Iterator")}},{"./_hide":160,"./_object-create":176,"./_property-desc":188,"./_set-to-string-tag":193,"./_wks":206}],169:[function(e,t,n){"use strict";var r=e("./_library"),i=e("./_export"),a=e("./_redefine"),s=e("./_hide"),o=e("./_has"),u=e("./_iterators"),l=e("./_iter-create"),c=e("./_set-to-string-tag"),p=e("./_object-gpo"),f=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d="@@iterator",y="keys",m="values",b=function(){return this};t.exports=function(e,t,n,g,v,x,_){l(n,t,g);var E,A,D,C=function(e){if(!h&&e in F)return F[e];switch(e){case y:return function(){return new n(this,e)};case m:return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",w=v==m,k=!1,F=e.prototype,T=F[f]||F[d]||v&&F[v],P=T||C(v),j=v?w?C("entries"):P:void 0,B="Array"==t?F.entries||T:T;if(B&&(D=p(B.call(new e)),D!==Object.prototype&&(c(D,S,!0),r||o(D,f)||s(D,f,b))),w&&T&&T.name!==m&&(k=!0,P=function(){return T.call(this)}),r&&!_||!h&&!k&&F[f]||s(F,f,P),u[t]=P,u[S]=b,v)if(E={values:w?P:C(m),keys:x?P:C(y),entries:j},_)for(A in E)A in F||a(F,A,E[A]);else i(i.P+i.F*(h||k),t,E);return E}},{"./_export":155,"./_has":159,"./_hide":160,"./_iter-create":168,"./_iterators":171,"./_library":173,"./_object-gpo":183,"./_redefine":190,"./_set-to-string-tag":193,"./_wks":206}],170:[function(e,t,n){t.exports=function(e,t){return{value:t,done:!!e}}},{}],171:[function(e,t,n){t.exports={}},{}],172:[function(e,t,n){var r=e("./_object-keys"),i=e("./_to-iobject");t.exports=function(e,t){for(var n,a=i(e),s=r(a),o=s.length,u=0;o>u;)if(a[n=s[u++]]===t)return n}},{"./_object-keys":185,"./_to-iobject":199}],173:[function(e,t,n){t.exports=!0},{}],174:[function(e,t,n){var r=e("./_uid")("meta"),i=e("./_is-object"),a=e("./_has"),s=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},l=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),c=function(e){s(e,r,{value:{i:"O"+ ++o,w:{}}})},p=function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!u(e))return"F";if(!t)return"E";c(e)}return e[r].i},f=function(e,t){if(!a(e,r)){if(!u(e))return!0;if(!t)return!1;c(e)}return e[r].w},h=function(e){return l&&d.NEED&&u(e)&&!a(e,r)&&c(e),e},d=t.exports={KEY:r,NEED:!1,fastKey:p,getWeak:f,onFreeze:h}},{"./_fails":156,"./_has":159,"./_is-object":166,"./_object-dp":177,"./_uid":203}],175:[function(e,t,n){"use strict";var r=e("./_object-keys"),i=e("./_object-gops"),a=e("./_object-pie"),s=e("./_to-object"),o=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r})?function(e,t){for(var n=s(e),u=arguments.length,l=1,c=i.f,p=a.f;u>l;)for(var f,h=o(arguments[l++]),d=c?r(h).concat(c(h)):r(h),y=d.length,m=0;y>m;)p.call(h,f=d[m++])&&(n[f]=h[f]);return n}:u},{"./_fails":156,"./_iobject":163,"./_object-gops":182,"./_object-keys":185,"./_object-pie":186,"./_to-object":201}],176:[function(e,t,n){var r=e("./_an-object"),i=e("./_object-dps"),a=e("./_enum-bug-keys"),s=e("./_shared-key")("IE_PROTO"),o=function(){},u="prototype",l=function(){var t,n=e("./_dom-create")("iframe"),r=a.length,i="<",s=">";for(n.style.display="none",e("./_html").appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write(i+"script"+s+"document.F=Object"+i+"/script"+s),t.close(),l=t.F;r--;)delete l[u][a[r]];return l()};t.exports=Object.create||function(e,t){var n;return null!==e?(o[u]=r(e),n=new o,o[u]=null,n[s]=e):n=l(),void 0===t?n:i(n,t)}},{"./_an-object":136,"./_dom-create":152,"./_enum-bug-keys":153,"./_html":161,"./_object-dps":178,"./_shared-key":194}],177:[function(e,t,n){var r=e("./_an-object"),i=e("./_ie8-dom-define"),a=e("./_to-primitive"),s=Object.defineProperty;n.f=e("./_descriptors")?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),i)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},{"./_an-object":136,"./_descriptors":151,"./_ie8-dom-define":162,"./_to-primitive":202}],178:[function(e,t,n){var r=e("./_object-dp"),i=e("./_an-object"),a=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){i(e);for(var n,s=a(t),o=s.length,u=0;o>u;)r.f(e,n=s[u++],t[n]);return e}},{"./_an-object":136,"./_descriptors":151,"./_object-dp":177,"./_object-keys":185}],179:[function(e,t,n){var r=e("./_object-pie"),i=e("./_property-desc"),a=e("./_to-iobject"),s=e("./_to-primitive"),o=e("./_has"),u=e("./_ie8-dom-define"),l=Object.getOwnPropertyDescriptor;n.f=e("./_descriptors")?l:function(e,t){if(e=a(e),t=s(t,!0),u)try{return l(e,t)}catch(e){}if(o(e,t))return i(!r.f.call(e,t),e[t])}},{"./_descriptors":151,"./_has":159,"./_ie8-dom-define":162,"./_object-pie":186,"./_property-desc":188,"./_to-iobject":199,"./_to-primitive":202}],180:[function(e,t,n){var r=e("./_to-iobject"),i=e("./_object-gopn").f,a={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],o=function(e){try{return i(e)}catch(e){return s.slice()}};t.exports.f=function(e){return s&&"[object Window]"==a.call(e)?o(e):i(r(e))}},{"./_object-gopn":181,"./_to-iobject":199}],181:[function(e,t,n){var r=e("./_object-keys-internal"),i=e("./_enum-bug-keys").concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},{"./_enum-bug-keys":153,"./_object-keys-internal":184}],182:[function(e,t,n){n.f=Object.getOwnPropertySymbols},{}],183:[function(e,t,n){var r=e("./_has"),i=e("./_to-object"),a=e("./_shared-key")("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},{"./_has":159,"./_shared-key":194,"./_to-object":201}],184:[function(e,t,n){var r=e("./_has"),i=e("./_to-iobject"),a=e("./_array-includes")(!1),s=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var n,o=i(e),u=0,l=[];for(n in o)n!=s&&r(o,n)&&l.push(n);for(;t.length>u;)r(o,n=t[u++])&&(~a(l,n)||l.push(n));return l}},{"./_array-includes":138,"./_has":159,"./_shared-key":194,"./_to-iobject":199}],185:[function(e,t,n){var r=e("./_object-keys-internal"),i=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return r(e,i)}},{"./_enum-bug-keys":153,"./_object-keys-internal":184}],186:[function(e,t,n){n.f={}.propertyIsEnumerable},{}],187:[function(e,t,n){var r=e("./_export"),i=e("./_core"),a=e("./_fails");t.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",s)}},{"./_core":148,"./_export":155,"./_fails":156}],188:[function(e,t,n){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],189:[function(e,t,n){var r=e("./_hide");t.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:r(e,i,t[i]);return e}},{"./_hide":160}],190:[function(e,t,n){t.exports=e("./_hide")},{"./_hide":160}],191:[function(e,t,n){var r=e("./_is-object"),i=e("./_an-object"),a=function(e,t){if(i(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,r){try{r=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),r(t,[]),n=!(t instanceof Array)}catch(e){n=!0}return function(e,t){return a(e,t),n?e.__proto__=t:r(e,t),e}}({},!1):void 0),check:a}},{"./_an-object":136,"./_ctx":149,"./_is-object":166,"./_object-gopd":179}],192:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_core"),a=e("./_object-dp"),s=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t="function"==typeof i[e]?i[e]:r[e];s&&t&&!t[o]&&a.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_core":148,"./_descriptors":151,"./_global":158,"./_object-dp":177,"./_wks":206}],193:[function(e,t,n){var r=e("./_object-dp").f,i=e("./_has"),a=e("./_wks")("toStringTag");t.exports=function(e,t,n){e&&!i(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},{"./_has":159,"./_object-dp":177,"./_wks":206}],194:[function(e,t,n){var r=e("./_shared")("keys"),i=e("./_uid");t.exports=function(e){return r[e]||(r[e]=i(e))}},{"./_shared":195,"./_uid":203}],195:[function(e,t,n){var r=e("./_global"),i="__core-js_shared__",a=r[i]||(r[i]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./_global":158}],196:[function(e,t,n){var r=e("./_to-integer"),i=e("./_defined");t.exports=function(e){return function(t,n){var a,s,o=String(i(t)),u=r(n),l=o.length;return u<0||u>=l?e?"":void 0:(a=o.charCodeAt(u),a<55296||a>56319||u+1===l||(s=o.charCodeAt(u+1))<56320||s>57343?e?o.charAt(u):a:e?o.slice(u,u+2):(a-55296<<10)+(s-56320)+65536)}}},{"./_defined":150,"./_to-integer":198}],197:[function(e,t,n){var r=e("./_to-integer"),i=Math.max,a=Math.min;t.exports=function(e,t){return e=r(e),e<0?i(e+t,0):a(e,t)}},{"./_to-integer":198}],198:[function(e,t,n){var r=Math.ceil,i=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?i:r)(e)}},{}],199:[function(e,t,n){var r=e("./_iobject"),i=e("./_defined");t.exports=function(e){return r(i(e))}},{"./_defined":150,"./_iobject":163}],200:[function(e,t,n){var r=e("./_to-integer"),i=Math.min;t.exports=function(e){return e>0?i(r(e),9007199254740991):0}},{"./_to-integer":198}],201:[function(e,t,n){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":150}],202:[function(e,t,n){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":166}],203:[function(e,t,n){var r=0,i=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+i).toString(36))}},{}],204:[function(e,t,n){var r=e("./_global"),i=e("./_core"),a=e("./_library"),s=e("./_wks-ext"),o=e("./_object-dp").f;t.exports=function(e){var t=i.Symbol||(i.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:s.f(e)})}},{"./_core":148,"./_global":158,"./_library":173,"./_object-dp":177,"./_wks-ext":205}],205:[function(e,t,n){n.f=e("./_wks")},{"./_wks":206}],206:[function(e,t,n){var r=e("./_shared")("wks"),i=e("./_uid"),a=e("./_global").Symbol,s="function"==typeof a,o=t.exports=function(e){return r[e]||(r[e]=s&&a[e]||(s?a:i)("Symbol."+e))};o.store=r},{"./_global":158,"./_shared":195,"./_uid":203}],207:[function(e,t,n){var r=e("./_classof"),i=e("./_wks")("iterator"),a=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[i]||e["@@iterator"]||a[r(e)]}},{"./_classof":142,"./_core":148,"./_iterators":171,"./_wks":206}],208:[function(e,t,n){var r=e("./_an-object"),i=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},{"./_an-object":136,"./_core":148,"./core.get-iterator-method":207}],209:[function(e,t,n){"use strict";var r=e("./_add-to-unscopables"),i=e("./_iter-step"),a=e("./_iterators"),s=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=s(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):"keys"==t?i(0,n):"values"==t?i(0,e[n]):i(0,[n,e[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},{"./_add-to-unscopables":134,"./_iter-define":169,"./_iter-step":170,"./_iterators":171,"./_to-iobject":199}],210:[function(e,t,n){"use strict";var r=e("./_collection-strong");t.exports=e("./_collection")("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(this,e);return t&&t.v},set:function(e,t){return r.def(this,0===e?0:e,t)}},r,!0)},{"./_collection":147,"./_collection-strong":144}],211:[function(e,t,n){var r=e("./_export");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{"./_export":155}],212:[function(e,t,n){var r=e("./_export");r(r.S+r.F,"Object",{assign:e("./_object-assign")})},{"./_export":155,"./_object-assign":175}],213:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{create:e("./_object-create")})},{"./_export":155,
-"./_object-create":176}],214:[function(e,t,n){var r=e("./_to-object"),i=e("./_object-keys");e("./_object-sap")("keys",function(){return function(e){return i(r(e))}})},{"./_object-keys":185,"./_object-sap":187,"./_to-object":201}],215:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":155,"./_set-proto":191}],216:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],217:[function(e,t,n){"use strict";var r=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":169,"./_string-at":196}],218:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_has"),a=e("./_descriptors"),s=e("./_export"),o=e("./_redefine"),u=e("./_meta").KEY,l=e("./_fails"),c=e("./_shared"),p=e("./_set-to-string-tag"),f=e("./_uid"),h=e("./_wks"),d=e("./_wks-ext"),y=e("./_wks-define"),m=e("./_keyof"),b=e("./_enum-keys"),g=e("./_is-array"),v=e("./_an-object"),x=e("./_to-iobject"),_=e("./_to-primitive"),E=e("./_property-desc"),A=e("./_object-create"),D=e("./_object-gopn-ext"),C=e("./_object-gopd"),S=e("./_object-dp"),w=e("./_object-keys"),k=C.f,F=S.f,T=D.f,P=r.Symbol,j=r.JSON,B=j&&j.stringify,O="prototype",I=h("_hidden"),N=h("toPrimitive"),L={}.propertyIsEnumerable,M=c("symbol-registry"),R=c("symbols"),U=c("op-symbols"),V=Object[O],G="function"==typeof P,q=r.QObject,K=!q||!q[O]||!q[O].findChild,X=a&&l(function(){return 7!=A(F({},"a",{get:function(){return F(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=k(V,t);r&&delete V[t],F(e,t,n),r&&e!==V&&F(V,t,r)}:F,J=function(e){var t=R[e]=A(P[O]);return t._k=e,t},W=G&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},z=function(e,t,n){return e===V&&z(U,t,n),v(e),t=_(t,!0),v(n),i(R,t)?(n.enumerable?(i(e,I)&&e[I][t]&&(e[I][t]=!1),n=A(n,{enumerable:E(0,!1)})):(i(e,I)||F(e,I,E(1,{})),e[I][t]=!0),X(e,t,n)):F(e,t,n)},Y=function(e,t){v(e);for(var n,r=b(t=x(t)),i=0,a=r.length;a>i;)z(e,n=r[i++],t[n]);return e},H=function(e,t){return void 0===t?A(e):Y(A(e),t)},$=function(e){var t=L.call(this,e=_(e,!0));return!(this===V&&i(R,e)&&!i(U,e))&&(!(t||!i(this,e)||!i(R,e)||i(this,I)&&this[I][e])||t)},Q=function(e,t){if(e=x(e),t=_(t,!0),e!==V||!i(R,t)||i(U,t)){var n=k(e,t);return!n||!i(R,t)||i(e,I)&&e[I][t]||(n.enumerable=!0),n}},Z=function(e){for(var t,n=T(x(e)),r=[],a=0;n.length>a;)i(R,t=n[a++])||t==I||t==u||r.push(t);return r},ee=function(e){for(var t,n=e===V,r=T(n?U:x(e)),a=[],s=0;r.length>s;)!i(R,t=r[s++])||n&&!i(V,t)||a.push(R[t]);return a};G||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(n){this===V&&t.call(U,n),i(this,I)&&i(this[I],e)&&(this[I][e]=!1),X(this,e,E(1,n))};return a&&K&&X(V,e,{configurable:!0,set:t}),J(e)},o(P[O],"toString",function(){return this._k}),C.f=Q,S.f=z,e("./_object-gopn").f=D.f=Z,e("./_object-pie").f=$,e("./_object-gops").f=ee,a&&!e("./_library")&&o(V,"propertyIsEnumerable",$,!0),d.f=function(e){return J(h(e))}),s(s.G+s.W+s.F*!G,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)h(te[ne++]);for(var te=w(h.store),ne=0;te.length>ne;)y(te[ne++]);s(s.S+s.F*!G,"Symbol",{for:function(e){return i(M,e+="")?M[e]:M[e]=P(e)},keyFor:function(e){if(W(e))return m(M,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){K=!0},useSimple:function(){K=!1}}),s(s.S+s.F*!G,"Object",{create:H,defineProperty:z,defineProperties:Y,getOwnPropertyDescriptor:Q,getOwnPropertyNames:Z,getOwnPropertySymbols:ee}),j&&s(s.S+s.F*(!G||l(function(){var e=P();return"[null]"!=B([e])||"{}"!=B({a:e})||"{}"!=B(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!W(e)){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);return t=r[1],"function"==typeof t&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!W(t))return t}),r[1]=t,B.apply(j,r)}}}),P[O][N]||e("./_hide")(P[O],N,P[O].valueOf),p(P,"Symbol"),p(Math,"Math",!0),p(r.JSON,"JSON",!0)},{"./_an-object":136,"./_descriptors":151,"./_enum-keys":154,"./_export":155,"./_fails":156,"./_global":158,"./_has":159,"./_hide":160,"./_is-array":165,"./_keyof":172,"./_library":173,"./_meta":174,"./_object-create":176,"./_object-dp":177,"./_object-gopd":179,"./_object-gopn":181,"./_object-gopn-ext":180,"./_object-gops":182,"./_object-keys":185,"./_object-pie":186,"./_property-desc":188,"./_redefine":190,"./_set-to-string-tag":193,"./_shared":195,"./_to-iobject":199,"./_to-primitive":202,"./_uid":203,"./_wks":206,"./_wks-define":204,"./_wks-ext":205}],219:[function(e,t,n){"use strict";var r,i=e("./_array-methods")(0),a=e("./_redefine"),s=e("./_meta"),o=e("./_object-assign"),u=e("./_collection-weak"),l=e("./_is-object"),c=s.getWeak,p=Object.isExtensible,f=u.ufstore,h={},d=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(e){if(l(e)){var t=c(e);return t===!0?f(this).get(e):t?t[this._i]:void 0}},set:function(e,t){return u.def(this,e,t)}},m=t.exports=e("./_collection")("WeakMap",d,y,u,!0,!0);7!=(new m).set((Object.freeze||Object)(h),7).get(h)&&(r=u.getConstructor(d),o(r.prototype,y),s.NEED=!0,i(["delete","has","get","set"],function(e){var t=m.prototype,n=t[e];a(t,e,function(t,i){if(l(t)&&!p(t)){this._f||(this._f=new r);var a=this._f[e](t,i);return"set"==e?this:a}return n.call(this,t,i)})}))},{"./_array-methods":139,"./_collection":147,"./_collection-weak":146,"./_is-object":166,"./_meta":174,"./_object-assign":175,"./_redefine":190}],220:[function(e,t,n){"use strict";var r=e("./_collection-weak");e("./_collection")("WeakSet",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(this,e,!0)}},r,!1,!0)},{"./_collection":147,"./_collection-weak":146}],221:[function(e,t,n){var r=e("./_export");r(r.P+r.R,"Map",{toJSON:e("./_collection-to-json")("Map")})},{"./_collection-to-json":145,"./_export":155}],222:[function(e,t,n){e("./_wks-define")("asyncIterator")},{"./_wks-define":204}],223:[function(e,t,n){e("./_wks-define")("observable")},{"./_wks-define":204}],224:[function(e,t,n){e("./es6.array.iterator");for(var r=e("./_global"),i=e("./_hide"),a=e("./_iterators"),s=e("./_wks")("toStringTag"),o=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var l=o[u],c=r[l],p=c&&c.prototype;p&&!p[s]&&i(p,s,l),a[l]=a.Array}},{"./_global":158,"./_hide":160,"./_iterators":171,"./_wks":206,"./es6.array.iterator":209}],225:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){e=(0,l.default)(e);var n=e,r=n.program;return t.length&&(0,y.default)(e,E,null,t),r.body.length>1?r.body:r.body[0]}n.__esModule=!0;var s=e("babel-runtime/core-js/symbol"),o=i(s);n.default=function(e,t){var n=void 0;try{throw new Error}catch(e){e.stack&&(n=e.stack.split("\n").slice(1).join("\n"))}t=(0,p.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,preserveComments:!1},t);var r=function(){var i=void 0;try{i=b.parse(e,t),i=y.default.removeProperties(i,{preserveComments:t.preserveComments}),y.default.cheap(i,function(e){e[x]=!0})}catch(e){throw e.stack=e.stack+"from\n"+n,e}return r=function(){return i},i};return function(){for(var e=arguments.length,t=Array(e),n=0;n=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var u=s;if(e[u])return!0}return!1},e.prototype.create=function(e,t,n,r){return p.default.get({parentPath:this.parentPath,parent:e,container:t,key:n,listKey:r})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,n){if(0===e.length)return!1;for(var r=[],i=0;i=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var u=s;if(u.resync(),0!==u.contexts.length&&u.contexts[u.contexts.length-1]===this||u.pushContext(this),null!==u.key&&(d&&e.length>=1e4&&(this.trap=!0),!(t.indexOf(u.node)>=0))){if(t.push(u.node),u.visit()){n=!0;break}if(this.priorityQueue.length&&(n=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,n))break}}for(var l=e,c=Array.isArray(l),p=0,l=c?l:(0,o.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var h=f;h.popContext()}return this.queue=null,n},e.prototype.visit=function(e,t){var n=e[t];return!!n&&(Array.isArray(n)?this.visitMultiple(n,e,t):this.visitSingle(e,t))},e}();n.default=y,t.exports=n.default}).call(this,e("_process"))},{"./path":236,_process:13,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],228:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=function e(t,n){(0,a.default)(this,e),this.file=t,this.options=n};n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],229:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t,n,r,i){if(e){if(t||(t={}),!t.noScope&&!n&&"Program"!==e.type&&"File"!==e.type)throw new Error(b.get("traverseNeedsParent",e.type));y.explode(t),a.node(e,t,n,r,i)}}function s(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}n.__esModule=!0,n.visitors=n.Hub=n.Scope=n.NodePath=void 0;var o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("./path");Object.defineProperty(n,"NodePath",{enumerable:!0,get:function(){return i(l).default}});var c=e("./scope");Object.defineProperty(n,"Scope",{enumerable:!0,get:function(){return i(c).default}});var p=e("./hub");Object.defineProperty(n,"Hub",{enumerable:!0,get:function(){return i(p).default}}),n.default=a;var f=e("./context"),h=i(f),d=e("./visitors"),y=r(d),m=e("babel-messages"),b=r(m),g=e("lodash/includes"),v=i(g),x=e("babel-types"),_=r(x),E=e("./cache"),A=r(E);n.visitors=y,a.visitors=y,a.verify=y.verify,a.explode=y.explode,a.NodePath=e("./path"),a.Scope=e("./scope"),a.Hub=e("./hub"),a.cheap=function(e,t){return _.traverseFast(e,t)},a.node=function(e,t,n,r,i,a){var s=_.VISITOR_KEYS[e.type];if(s)for(var o=new h.default(n,t,r,i),l=s,c=Array.isArray(l),p=0,l=c?l:(0,u.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var d=f;if((!a||!a[d])&&o.visit(e,d))return}},a.clearNode=function(e,t){_.removeProperties(e,t),A.path.delete(e)},a.removeProperties=function(e,t){return _.traverseFast(e,a.clearNode,t),e},a.hasType=function(e,t,n,r){if((0,v.default)(r,e.type))return!1;if(e.type===n)return!0;var i={has:!1,type:n};return a(e,{blacklist:r,enter:s},t,i),i.has},a.clearCache=function(){A.clear()},a.clearCache.clearPath=A.clearPath,a.clearCache.clearScope=A.clearScope,a.copyCache=function(e,t){A.path.has(e)&&A.path.set(t,A.path.get(e))}},{"./cache":226,"./context":227,"./hub":228,"./path":236,"./scope":248,"./visitors":250,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-types":265,"lodash/includes":473}],230:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null}function s(e){var t=this;do if(e(t))return t;while(t=t.parentPath);return null}function o(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})}function u(){var e=this;do if(Array.isArray(e.container))return e;while(e=e.parentPath)}function l(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,n){for(var r=void 0,i=v.VISITOR_KEYS[e.type],a=n,s=Array.isArray(a),o=0,a=s?a:(0,b.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u,c=l[t+1];if(r)if(c.listKey&&r.listKey===c.listKey&&c.keyf&&(r=c)}else r=c}return r})}function c(e,t){var n=this;if(!e.length)return this;if(1===e.length)return e[0];var r=1/0,i=void 0,a=void 0,s=e.map(function(e){var t=[];do t.unshift(e);while((e=e.parentPath)&&e!==n);return t.length=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;if(d[u]!==l)break e}i=u,a=l}if(a)return t?t(a,i,s):a;throw new Error("Couldn't find intersection")}function p(){var e=this,t=[];do t.push(e);while(e=e.parentPath);return t}function f(e){return e.isDescendant(this)}function h(e){return!!this.findParent(function(t){return t===e})}function d(){for(var e=this;e;){for(var t=arguments,n=Array.isArray(t),r=0,t=n?t:(0,b.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(e.node.type===a)return!0}e=e.parentPath}return!1}function y(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var n=t.node.shadow;if(n&&(!e||n[e]!==!1))return t}else if(t.isArrowFunctionExpression())return t;return null}}n.__esModule=!0;var m=e("babel-runtime/core-js/get-iterator"),b=i(m);n.findParent=a,n.find=s,n.getFunctionParent=o,n.getStatementParent=u,n.getEarliestCommonAncestorFrom=l,n.getDeepestCommonAncestorFrom=c,n.getAncestry=p,n.isAncestor=f,n.isDescendant=h,n.inType=d,n.inShadow=y;var g=e("babel-types"),v=r(g),x=e("./index");i(x)},{"./index":236,"babel-runtime/core-js/get-iterator":100,"babel-types":265}],231:[function(e,t,n){"use strict";function r(){if("string"!=typeof this.key){var e=this.node;if(e){var t=e.trailingComments,n=e.leadingComments;if(t||n){var r=this.getSibling(this.key-1),i=this.getSibling(this.key+1);r.node||(r=i),i.node||(i=r),r.addComments("trailing",n),i.addComments("leading",t)}}}}function i(e,t,n){this.addComments(e,[{type:n?"CommentLine":"CommentBlock",value:t}])}function a(e,t){if(t){var n=this.node;if(n){var r=e+"Comments";n[r]?n[r]=n[r].concat(t):n[r]=t}}}n.__esModule=!0,n.shareCommentsWithSiblings=r,n.addComment=i,n.addComments=a},{}],232:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])}function a(e){if(!e)return!1;for(var t=e,n=Array.isArray(t),r=0,t=n?t:(0,C.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(a){var s=this.node;if(!s)return!0;var o=a.call(this.state,this,this.state);if(o)throw new Error("Unexpected return value from visitor method "+a);if(this.node!==s)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1}function s(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1}function o(){return!!this.node&&(!this.isBlacklisted()&&((!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),w.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))))}function u(){this.shouldSkip=!0}function l(e){this.skipKeys[e]=!0}function c(){this.shouldStop=!0,this.shouldSkip=!0}function p(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}}function f(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this}function h(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())}function d(){this.parentPath&&(this.parent=this.parentPath.node)}function y(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:this;if(!e.removed)for(var t=this.contexts,n=t,r=Array.isArray(n),i=0,n=r?n:(0,C.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;s.maybeQueue(e)}}function A(){for(var e=this,t=this.contexts;!t.length;)e=e.parentPath,t=e.contexts;return t}n.__esModule=!0;var D=e("babel-runtime/core-js/get-iterator"),C=r(D);n.call=i,n._call=a,n.isBlacklisted=s,n.visit=o,n.skip=u,n.skipKey=l,n.stop=c,n.setScope=p,n.setContext=f,n.resync=h,n._resyncParent=d,n._resyncKey=y,n._resyncList=m,n._resyncRemoved=b,n.popContext=g,n.pushContext=v,n.setup=x,n.setKey=_,n.requeue=E,n._getQueueContexts=A;var S=e("../index"),w=r(S)},{"../index":229,"babel-runtime/core-js/get-iterator":100}],233:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||u.isIdentifier(t)&&(t=u.stringLiteral(t.name)),t}function a(){return u.ensureBlock(this.node)}function s(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}}n.__esModule=!0,n.toComputedKey=i,n.ensureBlock=a,n.arrowFunctionToShadowed=s;var o=e("babel-types"),u=r(o)},{"babel-types":265}],234:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){var e=this.evaluate();if(e.confident)return!!e.value}function a(){function e(e){i&&(a=e,i=!1)}function n(t){var n=t.node;if(s.has(n)){var a=s.get(n);return a.resolved?a.value:void e(t)}var o={resolved:!1};s.set(n,o);var u=r(t);return i&&(o.resolved=!0,o.value=u),u}function r(r){if(i){var a=r.node;if(r.isSequenceExpression()){var s=r.get("expressions");return n(s[s.length-1])}if(r.isStringLiteral()||r.isNumericLiteral()||r.isBooleanLiteral())return a.value;if(r.isNullLiteral())return null;if(r.isTemplateLiteral()){for(var u="",c=0,p=r.get("expressions"),d=a.quasis,y=Array.isArray(d),m=0,d=y?d:(0,l.default)(d);;){var b;if(y){if(m>=d.length)break;b=d[m++]}else{if(m=d.next(),m.done)break;b=m.value}var g=b;if(!i)break;u+=g.value.cooked;var v=p[c++];v&&(u+=String(n(v)))}if(!i)return;return u}if(r.isConditionalExpression()){var x=n(r.get("test"));if(!i)return;return n(x?r.get("consequent"):r.get("alternate"))}if(r.isExpressionWrapper())return n(r.get("expression"));if(r.isMemberExpression()&&!r.parentPath.isCallExpression({callee:a})){var _=r.get("property"),E=r.get("object");if(E.isLiteral()&&_.isIdentifier()){var A=E.node.value,D="undefined"==typeof A?"undefined":(0,o.default)(A);if("number"===D||"string"===D)return A[_.node.name]}}if(r.isReferencedIdentifier()){var C=r.scope.getBinding(a.name);if(C&&C.constantViolations.length>0)return e(C.path);if(C&&r.node.start=P.length)break;O=P[B++]}else{if(B=P.next(),B.done)break;O=B.value}var I=O;if(I=I.evaluate(),!I.confident)return e(I);F.push(I.value)}return F}if(r.isObjectExpression()){for(var N={},L=r.get("properties"),M=L,R=Array.isArray(M),U=0,M=R?M:(0,l.default)(M);;){var V;if(R){if(U>=M.length)break;V=M[U++]}else{if(U=M.next(),U.done)break;V=U.value}var G=V;if(G.isObjectMethod()||G.isSpreadProperty())return e(G);var q=G.get("key"),K=q;if(G.node.computed){if(K=K.evaluate(),!K.confident)return e(q);K=K.value}else K=K.isIdentifier()?K.node.name:K.node.value;var X=G.get("value"),J=X.evaluate();if(!J.confident)return e(X);J=J.value,N[K]=J}return N}if(r.isLogicalExpression()){var W=i,z=n(r.get("left")),Y=i;i=W;var H=n(r.get("right")),$=i;switch(i=Y&&$,a.operator){case"||":if(z&&Y)return i=!0,z;if(!i)return;return z||H;case"&&":if((!z&&Y||!H&&$)&&(i=!0),!i)return;return z&&H}}if(r.isBinaryExpression()){var Q=n(r.get("left"));if(!i)return;var Z=n(r.get("right"));if(!i)return;switch(a.operator){case"-":return Q-Z;case"+":return Q+Z;case"/":return Q/Z;case"*":return Q*Z;case"%":return Q%Z;case"**":return Math.pow(Q,Z);case"<":return Q":return Q>Z;case"<=":return Q<=Z;case">=":return Q>=Z;case"==":return Q==Z;case"!=":return Q!=Z;case"===":return Q===Z;case"!==":return Q!==Z;case"|":return Q|Z;case"&":return Q&Z;case"^":return Q^Z;case"<<":return Q<>":return Q>>Z;case">>>":return Q>>>Z}}if(r.isCallExpression()){var ee=r.get("callee"),te=void 0,ne=void 0;if(ee.isIdentifier()&&!r.scope.getBinding(ee.node.name,!0)&&f.indexOf(ee.node.name)>=0&&(ne=t[a.callee.name]),ee.isMemberExpression()){var re=ee.get("object"),ie=ee.get("property");if(re.isIdentifier()&&ie.isIdentifier()&&f.indexOf(re.node.name)>=0&&h.indexOf(ie.node.name)<0&&(te=t[re.node.name],ne=te[ie.node.name]),re.isLiteral()&&ie.isIdentifier()){var ae=(0,o.default)(re.node.value);"string"!==ae&&"number"!==ae||(te=re.node.value,ne=te[ie.node.name])}}if(ne){var se=r.get("arguments").map(n);if(!i)return;return ne.apply(te,se)}}e(r)}}var i=!0,a=void 0,s=new p.default,u=n(this);return i||(u=void 0),{confident:i,deopt:a,value:u}}n.__esModule=!0;var s=e("babel-runtime/helpers/typeof"),o=r(s),u=e("babel-runtime/core-js/get-iterator"),l=r(u),c=e("babel-runtime/core-js/map"),p=r(c);n.evaluateTruthy=i,n.evaluate=a;var f=["String","Number","Math"],h=["random"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/map":102,"babel-runtime/helpers/typeof":118}],235:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e}function s(){return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0}function o(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e}function u(e){return _.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})}function l(e,t){t===!0&&(t=this.context);var n=e.split(".");return 1===n.length?this._getKey(e,t):this._getPattern(n,t)}function c(e,t){var n=this,r=this.node,i=r[e];return Array.isArray(i)?i.map(function(a,s){return _.default.get({listKey:e,parentPath:n,parent:r,container:i,key:s}).setContext(t)}):_.default.get({parentPath:this,parent:r,container:r,key:e}).setContext(t)}function p(e,t){for(var n=this,r=e,i=Array.isArray(r),a=0,r=i?r:(0,v.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;n="."===o?n.parentPath:Array.isArray(n)?n[o]:n.get(o,t)}return n}function f(e){return A.getBindingIdentifiers(this.node,e)}function h(e){return A.getOuterBindingIdentifiers(this.node,e)}function d(){for(var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this,r=[].concat(n),i=(0,b.default)(null);r.length;){var a=r.shift();if(a&&a.node){var s=A.getBindingIdentifiers.keys[a.node.type];if(a.isIdentifier())if(e){var o=i[a.node.name]=i[a.node.name]||[];o.push(a)}else i[a.node.name]=a;else if(a.isExportDeclaration()){var u=a.get("declaration");u.isDeclaration()&&r.push(u)}else{if(t){if(a.isFunctionDeclaration()){r.push(a.get("id"));continue}if(a.isFunctionExpression())continue}if(s)for(var l=0;l1&&void 0!==arguments[1]?arguments[1]:SyntaxError;return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,m.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){E.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var n=t.key;t.inList&&(n=t.listKey+"["+n+"]"),e.unshift(n)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){D.enabled&&D(this.getPathLocation()+" "+this.type+": "+e())},e}();n.default=C,(0,g.default)(C.prototype,e("./ancestry")),(0,g.default)(C.prototype,e("./inference")),(0,g.default)(C.prototype,e("./replacement")),(0,g.default)(C.prototype,e("./evaluation")),(0,g.default)(C.prototype,e("./conversion")),(0,g.default)(C.prototype,e("./introspection")),(0,g.default)(C.prototype,e("./context")),(0,g.default)(C.prototype,e("./removal")),(0,g.default)(C.prototype,e("./modification")),(0,g.default)(C.prototype,e("./family")),
-(0,g.default)(C.prototype,e("./comments"));for(var S=function(){if(k){if(F>=w.length)return"break";T=w[F++]}else{if(F=w.next(),F.done)return"break";T=F.value}var e=T,t="is"+e;C.prototype[t]=function(e){return E[t](this.node,e)},C.prototype["assert"+e]=function(n){if(!this[t](n))throw new TypeError("Expected node path of type "+e)}},w=E.TYPES,k=Array.isArray(w),F=0,w=k?w:(0,s.default)(w);;){var T,P=S();if("break"===P)break}var j=function(e){if("_"===e[0])return"continue";E.TYPES.indexOf(e)<0&&E.TYPES.push(e);var t=c[e];C.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var B in c){j(B)}t.exports=n.default},{"../cache":226,"../index":229,"../scope":248,"./ancestry":230,"./comments":231,"./context":232,"./conversion":233,"./evaluation":234,"./family":235,"./inference":237,"./introspection":240,"./lib/virtual-types":243,"./modification":244,"./removal":245,"./replacement":246,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265,debug:278,invariant:253,"lodash/assign":453}],237:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||b.anyTypeAnnotation();return b.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e}function s(){var e=this.node;{if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=y[e.type];return t?t.call(this,e):(t=y[this.parentPath.type],t&&t.validParent?this.parentPath.getTypeAnnotation():void 0)}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var n=this.parentPath.parentPath,r=n.parentPath;return"left"===n.key&&r.isForInStatement()?b.stringTypeAnnotation():"left"===n.key&&r.isForOfStatement()?b.anyTypeAnnotation():b.voidTypeAnnotation()}}}function o(e,t){return u(e,this.getTypeAnnotation(),t)}function u(e,t,n){if("string"===e)return b.isStringTypeAnnotation(t);if("number"===e)return b.isNumberTypeAnnotation(t);if("boolean"===e)return b.isBooleanTypeAnnotation(t);if("any"===e)return b.isAnyTypeAnnotation(t);if("mixed"===e)return b.isMixedTypeAnnotation(t);if("empty"===e)return b.isEmptyTypeAnnotation(t);if("void"===e)return b.isVoidTypeAnnotation(t);if(n)return!1;throw new Error("Unknown base type "+e)}function l(e){var t=this.getTypeAnnotation();if(b.isAnyTypeAnnotation(t))return!0;if(b.isUnionTypeAnnotation(t)){for(var n=t.types,r=Array.isArray(n),i=0,n=r?n:(0,h.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;if(b.isAnyTypeAnnotation(s)||u(e,s,!0))return!0}return!1}return u(e,t,!0)}function c(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!b.isAnyTypeAnnotation(t)&&b.isFlowBaseAnnotation(t))return e.type===t.type}function p(e){var t=this.getTypeAnnotation();return b.isGenericTypeAnnotation(t)&&b.isIdentifier(t.id,{name:e})}n.__esModule=!0;var f=e("babel-runtime/core-js/get-iterator"),h=i(f);n.getTypeAnnotation=a,n._getTypeAnnotation=s,n.isBaseType=o,n.couldBeBaseType=l,n.baseTypeStrictlyMatches=c,n.isGenericType=p;var d=e("./inferers"),y=r(d),m=e("babel-types"),b=r(m)},{"./inferers":239,"babel-runtime/core-js/get-iterator":100,"babel-types":265}],238:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=e.scope.getBinding(t),r=[];e.typeAnnotation=h.unionTypeAnnotation(r);var i=[],a=s(n,e,i),o=l(e,t);if(o&&!function(){var e=s(n,o.ifStatement);a=a.filter(function(t){return e.indexOf(t)<0}),r.push(o.typeAnnotation)}(),a.length){a=a.concat(i);for(var u=a,c=Array.isArray(u),f=0,u=c?u:(0,p.default)(u);;){var d;if(c){if(f>=u.length)break;d=u[f++]}else{if(f=u.next(),f.done)break;d=f.value}var y=d;r.push(y.getTypeAnnotation())}}if(r.length)return h.createUnionTypeAnnotation(r)}function s(e,t,n){var r=e.constantViolations.slice();return r.unshift(e.path),r.filter(function(e){e=e.resolve();var r=e._guessExecutionStatusRelativeTo(t);return n&&"function"===r&&n.push(e),"before"===r})}function o(e,t){var n=t.node.operator,r=t.get("right").resolve(),i=t.get("left").resolve(),a=void 0;if(i.isIdentifier({name:e})?a=r:r.isIdentifier({name:e})&&(a=i),a)return"==="===n?a.getTypeAnnotation():h.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(n)>=0?h.numberTypeAnnotation():void 0;if("==="===n){var s=void 0,o=void 0;if(i.isUnaryExpression({operator:"typeof"})?(s=i,o=r):r.isUnaryExpression({operator:"typeof"})&&(s=r,o=i),(o||s)&&(o=o.resolve(),o.isLiteral())){var u=o.node.value;if("string"==typeof u&&s.get("argument").isIdentifier({name:e}))return h.createTypeAnnotationBasedOnTypeof(o.node.value)}}}function u(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}function l(e,t){var n=u(e);if(n){var r=n.get("test"),i=[r],a=[];do{var s=i.shift().resolve();if(s.isLogicalExpression()&&(i.push(s.get("left")),i.push(s.get("right"))),s.isBinaryExpression()){var c=o(t,s);c&&a.push(c)}}while(i.length);return a.length?{typeAnnotation:h.createUnionTypeAnnotation(a),ifStatement:n}:l(n,t)}}n.__esModule=!0;var c=e("babel-runtime/core-js/get-iterator"),p=i(c);n.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:a(this,e.name):"undefined"===e.name?h.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?h.numberTypeAnnotation():void("arguments"===e.name)}};var f=e("babel-types"),h=r(f);t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],239:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this.get("id");return e.isIdentifier()?this.get("init").getTypeAnnotation():void 0}function s(e){return e.typeAnnotation}function o(e){if(this.get("callee").isIdentifier())return T.genericTypeAnnotation(e.callee)}function u(){return T.stringTypeAnnotation()}function l(e){var t=e.operator;return"void"===t?T.voidTypeAnnotation():T.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?T.numberTypeAnnotation():T.STRING_UNARY_OPERATORS.indexOf(t)>=0?T.stringTypeAnnotation():T.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?T.booleanTypeAnnotation():void 0}function c(e){var t=e.operator;if(T.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return T.numberTypeAnnotation();if(T.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return T.booleanTypeAnnotation();if("+"===t){var n=this.get("right"),r=this.get("left");return r.isBaseType("number")&&n.isBaseType("number")?T.numberTypeAnnotation():r.isBaseType("string")||n.isBaseType("string")?T.stringTypeAnnotation():T.unionTypeAnnotation([T.stringTypeAnnotation(),T.numberTypeAnnotation()])}}function p(){return T.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])}function f(){return T.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])}function h(){return this.get("expressions").pop().getTypeAnnotation()}function d(){return this.get("right").getTypeAnnotation()}function y(e){var t=e.operator;if("++"===t||"--"===t)return T.numberTypeAnnotation()}function m(){return T.stringTypeAnnotation()}function b(){return T.numberTypeAnnotation()}function g(){return T.booleanTypeAnnotation()}function v(){return T.nullLiteralTypeAnnotation()}function x(){return T.genericTypeAnnotation(T.identifier("RegExp"))}function _(){return T.genericTypeAnnotation(T.identifier("Object"))}function E(){return T.genericTypeAnnotation(T.identifier("Array"))}function A(){return E()}function D(){return T.genericTypeAnnotation(T.identifier("Function"))}function C(){return w(this.get("callee"))}function S(){return w(this.get("tag"))}function w(e){if(e=e.resolve(),e.isFunction()){if(e.is("async"))return e.is("generator")?T.genericTypeAnnotation(T.identifier("AsyncIterator")):T.genericTypeAnnotation(T.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}n.__esModule=!0,n.ClassDeclaration=n.ClassExpression=n.FunctionDeclaration=n.ArrowFunctionExpression=n.FunctionExpression=n.Identifier=void 0;var k=e("./inferer-reference");Object.defineProperty(n,"Identifier",{enumerable:!0,get:function(){return i(k).default}}),n.VariableDeclarator=a,n.TypeCastExpression=s,n.NewExpression=o,n.TemplateLiteral=u,n.UnaryExpression=l,n.BinaryExpression=c,n.LogicalExpression=p,n.ConditionalExpression=f,n.SequenceExpression=h,n.AssignmentExpression=d,n.UpdateExpression=y,n.StringLiteral=m,n.NumericLiteral=b,n.BooleanLiteral=g,n.NullLiteral=v,n.RegExpLiteral=x,n.ObjectExpression=_,n.ArrayExpression=E,n.RestElement=A,n.CallExpression=C,n.TaggedTemplateExpression=S;var F=e("babel-types"),T=r(F);s.validParent=!0,A.validParent=!0,n.FunctionExpression=D,n.ArrowFunctionExpression=D,n.FunctionDeclaration=D,n.ClassExpression=D,n.ClassDeclaration=D},{"./inferer-reference":238,"babel-types":265}],240:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){function n(e){var t=r[a];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var r=e.split("."),i=[this.node],a=0;i.length;){var s=i.shift();if(t&&a===r.length)return!0;if(F.isIdentifier(s)){if(!n(s.name))return!1}else if(F.isLiteral(s)){if(!n(s.value))return!1}else{if(F.isMemberExpression(s)){if(s.computed&&!F.isLiteral(s.property))return!1;i.unshift(s.property),i.unshift(s.object);continue}if(!F.isThisExpression(s))return!1;if(!n("this"))return!1}if(++a>r.length)return!1}return a===r.length}function s(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function o(){return this.scope.isStatic(this.node)}function u(e){return!this.has(e)}function l(e,t){return this.node[e]===t}function c(e){return F.isType(this.type,e)}function p(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function f(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?F.isBlockStatement(e):!!this.isBlockStatement()&&F.isExpression(e))}function h(e){var t=this,n=!0;do{var r=t.container;if(t.isFunction()&&!n)return!!e;if(n=!1,Array.isArray(r)&&t.key!==r.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function d(){return!this.parentPath.isLabeledStatement()&&!F.isBlockStatement(this.container)&&(0,w.default)(F.STATEMENT_OR_BLOCK_KEYS,this.key)}function y(e,t){if(!this.isReferencedIdentifier())return!1;var n=this.scope.getBinding(this.node.name);if(!n||"module"!==n.kind)return!1;var r=n.path,i=r.parentPath;return!!i.isImportDeclaration()&&(i.node.source.value===e&&(!t||(!(!r.isImportDefaultSpecifier()||"default"!==t)||(!(!r.isImportNamespaceSpecifier()||"*"!==t)||!(!r.isImportSpecifier()||r.node.imported.name!==t)))))}function m(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function b(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function g(e){var t=e.scope.getFunctionParent(),n=this.scope.getFunctionParent();if(t.node!==n.node){var r=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(r)return r;e=t.path}var i=e.getAncestry();if(i.indexOf(this)>=0)return"after";var a=this.getAncestry(),s=void 0,o=void 0,u=void 0;for(u=0;u=0){s=l;break}}if(!s)return"before";var c=i[o-1],p=a[u-1];if(!c||!p)return"before";if(c.listKey&&c.container===p.container)return c.key>p.key?"before":"after";var f=F.VISITOR_KEYS[c.type].indexOf(c.key),h=F.VISITOR_KEYS[p.type].indexOf(p.key);return f>h?"before":"after"}function v(e){var t=e.path;if(t.isFunctionDeclaration()){var n=t.scope.getBinding(t.node.id.name);if(!n.references)return"before";for(var r=n.referencePaths,i=r,a=Array.isArray(i),s=0,i=a?i:(0,C.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,c=r,p=Array.isArray(c),f=0,c=p?c:(0,C.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h,y=!!d.find(function(e){return e.node===t.node});if(!y){var m=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==m)return}else l=m}}return l}}function x(e,t){return this._resolve(e,t)||this}function _(e,t){var n=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var r=this.scope.getBinding(this.node.name);if(!r)return;if(!r.constant)return;if("module"===r.kind)return;if(r.path!==this){var i=function(){var i=r.path.resolve(e,t);return n.find(function(e){return e.node===i.node})?{v:void 0}:{v:i}}();if("object"===("undefined"==typeof i?"undefined":(0,A.default)(i)))return i.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var a=this.toComputedKey();if(!F.isLiteral(a))return;var s=a.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,c=Array.isArray(l),p=0,l=c?l:(0,C.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:s});if(y=y||d.isLiteral({value:s}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+s)){var m=o.get("elements"),b=m[s];if(b)return b.resolve(e,t)}}}}n.__esModule=!0,n.is=void 0;var E=e("babel-runtime/helpers/typeof"),A=i(E),D=e("babel-runtime/core-js/get-iterator"),C=i(D);n.matchesPattern=a,n.has=s,n.isStatic=o,n.isnt=u,n.equals=l,n.isNodeType=c,n.canHaveVariableDeclarationOrExpression=p,n.canSwapBetweenExpressionAndStatement=f,n.isCompletionRecord=h,n.isStatementOrBlock=d,n.referencesImport=y,n.getSource=m,n.willIMaybeExecuteBefore=b,n._guessExecutionStatusRelativeTo=g,n._guessExecutionStatusRelativeToDifferentFunctions=v,n.resolve=x,n._resolve=_;var S=e("lodash/includes"),w=i(S),k=e("babel-types"),F=r(k);n.is=s},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/typeof":118,"babel-types":265,"lodash/includes":473}],241:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/classCallCheck"),s=i(a),o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("babel-types"),c=r(l),p={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!l.react.isCompatTag(e.node.name)){var n=e.scope.getBinding(e.node.name);if(n&&n===t.scope.getBinding(e.node.name))if(n.constant)t.bindings[e.node.name]=n;else for(var r=n.constantViolations,i=Array.isArray(r),a=0,r=i?r:(0,u.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},f=function(){function e(t,n){(0,s.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=n,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var n=this.bindings[t];if(!e.bindingIdentifierEquals(t,n.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this._getAttachmentPath();if(e){var t=e.scope;if(t.path===e&&(t=e.scope.parent),t.path.isProgram()||t.path.isFunction())for(var n in this.bindings)if(t.hasOwnBinding(n)){var r=this.bindings[n];if("param"!==r.kind&&this.getAttachmentParentForPath(r.path).key>e.key)return}return e}},e.prototype._getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeAttachmentParent()}return t.path.isProgram()?this.getNextScopeAttachmentParent():void 0}},e.prototype.getNextScopeAttachmentParent=function(){var e=this.scopes.pop();if(e)return this.getAttachmentParentForPath(e.path)},e.prototype.getAttachmentParentForPath=function(e){do if(!e.parentPath||Array.isArray(e.container)&&e.isStatement()||e.isVariableDeclarator()&&e.parentPath.node.declarations.length>1)return e;while(e=e.parentPath)},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var n=this.bindings[t];if("param"===n.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(p,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var n=t.scope.generateUidIdentifier("ref"),r=c.variableDeclarator(n,this.path.node);t.insertBefore([t.isVariableDeclarator()?r:c.variableDeclaration("var",[r])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(n=c.JSXExpressionContainer(n)),this.path.replaceWith(n)}}},e}();n.default=f,t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],242:[function(e,t,n){"use strict";n.__esModule=!0;n.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var n=!1;if(n=n||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),n=n||"declaration"===e.key&&t.isExportDeclaration(),n=n||"body"===e.key&&t.isLabeledStatement(),n=n||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,n=n||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0},function(e,t){if(t.isIfStatement()&&("consequent"===e.key||"alternate"===e.key)||t.isLoop()&&"body"===e.key)return e.replaceWith({type:"BlockStatement",body:[]}),!0}]},{}],243:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}n.__esModule=!0,n.Flow=n.Pure=n.Generated=n.User=n.Var=n.BlockScoped=n.Referenced=n.Scope=n.Expression=n.Statement=n.BindingIdentifier=n.ReferencedMemberExpression=n.ReferencedIdentifier=void 0;var i=e("babel-types"),a=r(i);n.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var n=e.node,r=e.parent;if(!a.isIdentifier(n,t)&&!a.isJSXMemberExpression(r,t)){if(!a.isJSXIdentifier(n,t))return!1;if(i.react.isCompatTag(n.name))return!1}return a.isReferenced(n,r)}},n.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,n=e.parent;return a.isMemberExpression(t)&&a.isReferenced(t,n)}},n.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,n=e.parent;return a.isIdentifier(t)&&a.isBinding(t,n)}},n.Statement={types:["Statement"],checkPath:function(e){var t=e.node,n=e.parent;if(a.isStatement(t)){if(a.isVariableDeclaration(t)){if(a.isForXStatement(n,{left:t}))return!1;if(a.isForStatement(n,{init:t}))return!1}return!0}return!1}},n.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():a.isExpression(e.node)}},n.Scope={types:["Scopable"],checkPath:function(e){return a.isScope(e.node,e.parent)}},n.Referenced={checkPath:function(e){return a.isReferenced(e.node,e.parent)}},n.BlockScoped={checkPath:function(e){return a.isBlockScoped(e.node)}},n.Var={types:["VariableDeclaration"],checkPath:function(e){return a.isVar(e.node)}},n.User={checkPath:function(e){return e.node&&!!e.node.loc}},n.Generated={checkPath:function(e){return!e.isUser()}},n.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},n.Flow={types:["Flow","ImportDeclaration","ExportDeclaration"],checkPath:function(e){var t=e.node;return!!a.isFlow(t)||(a.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:!!a.isExportDeclaration(t)&&"type"===t.exportKind)}}},{"babel-types":265}],244:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(S.blockStatement(e))}return[this]}function s(e,t){this.updateSiblingKeys(e,t.length);for(var n=[],r=0;r=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;f.setScope(),f.debug(function(){return"Inserted."});for(var h=o,d=Array.isArray(h),y=0,h=d?h:(0,v.default)(h);;){var m;if(d){if(y>=h.length)break;m=h[y++]}else{if(y=h.next(),y.done)break;m=y.value}var b=m;b.maybeQueue(f,!0)}}return n}function o(e){return this._containerInsert(this.key,e)}function u(e){return this._containerInsert(this.key+1,e)}function l(e){var t=e[e.length-1],n=S.isIdentifier(t)||S.isExpressionStatement(t)&&S.isIdentifier(t.expression);n&&!this.isCompletionRecord()&&e.pop()}function c(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(S.expressionStatement(S.assignmentExpression("=",t,this.node))),e.push(S.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(S.blockStatement(e))}return[this]}function p(e,t){if(this.parent)for(var n=x.path.get(this.parent),r=0;r=e&&(i.key+=t)}}function f(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:this.scope,t=new E.default(this,e);return t.run()}n.__esModule=!0;var m=e("babel-runtime/helpers/typeof"),b=i(m),g=e("babel-runtime/core-js/get-iterator"),v=i(g);n.insertBefore=a,n._containerInsert=s,n._containerInsertBefore=o,n._containerInsertAfter=u,n._maybePopFromStatements=l,n.insertAfter=c,n.updateSiblingKeys=p,n._verifyNodeList=f,n.unshiftContainer=h,n.pushContainer=d,n.hoist=y;var x=e("../cache"),_=e("./lib/hoister"),E=i(_),A=e("./index"),D=i(A),C=e("babel-types"),S=r(C)},{"../cache":226,"./index":236,"./lib/hoister":241,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/typeof":118,"babel-types":265}],245:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){return this._assertUnremoved(),this.resync(),this._callRemovalHooks()?void this._markRemoved():(this.shareCommentsWithSiblings(),this._remove(),void this._markRemoved())}function a(){for(var e=p.hooks,t=Array.isArray(e),n=0,e=t?e:(0,c.default)(e);;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if(n=e.next(),n.done)break;r=n.value}var i=r;if(i(this,this.parentPath))return!0}}function s(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)}function o(){this.shouldSkip=!0,this.removed=!0,this.node=null}function u(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")}n.__esModule=!0;var l=e("babel-runtime/core-js/get-iterator"),c=r(l);n.remove=i,n._callRemovalHooks=a,n._remove=s,n._markRemoved=o,n._assertUnremoved=u;var p=e("./lib/removal-hooks")},{"./lib/removal-hooks":242,"babel-runtime/core-js/get-iterator":100}],246:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){this.resync(),e=this._verifyNodeList(e),_.inheritLeadingComments(e[0],this.node),_.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()}function s(e){this.resync();try{e="("+e+")",e=(0,v.parse)(e)}catch(n){var t=n.loc;throw t&&(n.message+=" - make sure this is an expression.",n.message+="\n"+(0,d.default)(e,t.line,t.column+1)),n}return e=e.program.body[0].expression,m.default.removeProperties(e),this.replaceWith(e)}function o(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof g.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!_.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&_.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||(e=_.expressionStatement(e))),this.isNodeType("Expression")&&_.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(_.inheritsComments(e,t),_.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}}function u(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?_.validate(this.parent,this.key,[e]):_.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e}function l(e){this.resync();var t=_.toSequenceExpression(e,this.scope);if(_.isSequenceExpression(t)){var n=t.expressions;n.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(n),1===n.length?this.replaceWith(n[0]):this.replaceWith(t)}else{if(!t){var r=_.functionExpression(null,[],_.blockStatement(e));r.shadow=!0,this.replaceWith(_.callExpression(r,[])),this.traverse(E);for(var i=this.get("callee").getCompletionRecords(),a=i,s=Array.isArray(a),o=0,a=s?a:(0,f.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(l.isExpressionStatement()){var c=l.findParent(function(e){return e.isLoop()});if(c){var p=this.get("callee"),h=p.scope.generateDeclaredUidIdentifier("ret");p.get("body").pushContainer("body",_.returnStatement(h)),l.get("expression").replaceWith(_.assignmentExpression("=",h,l.node.expression))}else l.replaceWith(_.returnStatement(l.node.expression))}}return this.node}this.replaceWith(t)}}function c(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)}n.__esModule=!0;var p=e("babel-runtime/core-js/get-iterator"),f=i(p);n.replaceWithMultiple=a,n.replaceWithSourceString=s,n.replaceWith=o,n._replaceWith=u,n.replaceExpressionWithStatements=l,n.replaceInline=c;var h=e("babel-code-frame"),d=i(h),y=e("../index"),m=i(y),b=e("./index"),g=i(b),v=e("babylon"),x=e("babel-types"),_=r(x),E={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var n in t)e.scope.push({id:t[n]});for(var r=[],i=e.node.declarations,a=Array.isArray(i),s=0,i=a?i:(0,f.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;u.init&&r.push(_.expressionStatement(_.assignmentExpression("=",u.id,u.init)))}e.replaceWithMultiple(r)}}}},{"../index":229,"./index":236,"babel-code-frame":60,"babel-runtime/core-js/get-iterator":100,"babel-types":265,babylon:274}],247:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=function(){function e(t){var n=t.existing,r=t.identifier,i=t.scope,s=t.path,o=t.kind;(0,a.default)(this,e),this.identifier=r,this.scope=i,this.path=s,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),n&&(this.constantViolations=[].concat(n.path,n.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referencePaths.indexOf(e)===-1&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],248:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;
-var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t,n){for(var r=I.scope.get(e.node)||[],i=r,a=Array.isArray(i),s=0,i=a?i:(0,m.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;if(u.parent===t&&u.path===e)return u}r.push(n),I.scope.has(e.node)||I.scope.set(e.node,r)}function s(e,t){if(O.isModuleDeclaration(e))if(e.source)s(e.source,t);else if(e.specifiers&&e.specifiers.length)for(var n=e.specifiers,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var o=a;s(o,t)}else e.declaration&&s(e.declaration,t);else if(O.isModuleSpecifier(e))s(e.local,t);else if(O.isMemberExpression(e))s(e.object,t),s(e.property,t);else if(O.isIdentifier(e))t.push(e.name);else if(O.isLiteral(e))t.push(e.value);else if(O.isCallExpression(e))s(e.callee,t);else if(O.isObjectExpression(e)||O.isObjectPattern(e))for(var u=e.properties,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;s(f.key||f.argument,t)}}n.__esModule=!0;var o=e("babel-runtime/core-js/object/keys"),u=i(o),l=e("babel-runtime/core-js/object/create"),c=i(l),p=e("babel-runtime/core-js/map"),f=i(p),h=e("babel-runtime/helpers/classCallCheck"),d=i(h),y=e("babel-runtime/core-js/get-iterator"),m=i(y),b=e("lodash/includes"),g=i(b),v=e("lodash/repeat"),x=i(v),_=e("./lib/renamer"),E=i(_),A=e("../index"),D=i(A),C=e("lodash/defaults"),S=i(C),w=e("babel-messages"),k=r(w),F=e("./binding"),T=i(F),P=e("globals"),j=i(P),B=e("babel-types"),O=r(B),I=e("../cache"),N=0,L={For:function(e){for(var t=O.FOR_INIT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=e.get(a);s.isVar()&&e.scope.getFunctionParent().registerBinding("var",s)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var n=e.get("left");(n.isPattern()||n.isIdentifier())&&t.constantViolations.push(n)},ExportDeclaration:{exit:function(e){var t=e.node,n=e.scope,r=t.declaration;if(O.isClassDeclaration(r)||O.isFunctionDeclaration(r)){var i=r.id;if(!i)return;var a=n.getBinding(i.name);a&&a.reference(e)}else if(O.isVariableDeclaration(r))for(var s=r.declarations,o=Array.isArray(s),u=0,s=o?s:(0,m.default)(s);;){var l;if(o){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l,p=O.getBindingIdentifiers(c);for(var f in p){var h=n.getBinding(f);h&&h.reference(e)}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var n=t.name;e.scope.bindings[n]=e.scope.getBinding(n)}},Block:function(e){for(var t=e.get("body"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;s.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(s)}}},M=0,R=function(){function e(t,n){if((0,d.default)(this,e),n&&n.block===t.node)return n;var r=a(t,n,this);return r?r:(this.uid=M++,this.parent=n,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,this.path=t,void(this.labels=new f.default))}return e.prototype.traverse=function(e,t,n){(0,D.default)(e,t,this,n,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp",t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";return O.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";e=O.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,n=0;do t=this._generateUid(e,n),n++;while(this.hasLabel(t)||this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var r=this.getProgramParent();return r.references[t]=!0,r.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var n=e;return t>1&&(n+=t),"_"+n},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var n=e;O.isAssignmentExpression(e)?n=e.left:O.isVariableDeclarator(e)?n=e.id:(O.isObjectProperty(n)||O.isObjectMethod(n))&&(n=n.key);var r=[];s(n,r);var i=r.join("$");return i=i.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(i.slice(0,20))},e.prototype.isStatic=function(e){if(O.isThisExpression(e)||O.isSuper(e))return!0;if(O.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var n=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:n}),n},e.prototype.checkBlockScopedCollisions=function(e,t,n,r){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var i=!1;if(i||(i="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),i||(i="param"===e.kind&&("let"===t||"const"===t)),i)throw this.hub.file.buildCodeFrameError(r,k.get("scopeDuplicateDeclaration",n),TypeError)}},e.prototype.rename=function(e,t,n){var r=this.getBinding(e);if(r)return t=t||this.generateUidIdentifier(e).name,new E.default(r,e,t).rename(n)},e.prototype._renameFromMap=function(e,t,n,r){e[t]&&(e[n]=r,e[t]=null)},e.prototype.dump=function(){var e=(0,x.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var n in t.bindings){var r=t.bindings[n];console.log(" -",n,{constant:r.constant,references:r.references,violations:r.constantViolations.length,kind:r.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var n=this.hub.file;if(O.isIdentifier(e)){var r=this.getBinding(e.name);if(r&&r.constant&&r.path.isGenericType("Array"))return e}if(O.isArrayExpression(e))return e;if(O.isIdentifier(e,{name:"arguments"}))return O.callExpression(O.memberExpression(O.memberExpression(O.memberExpression(O.identifier("Array"),O.identifier("prototype")),O.identifier("slice")),O.identifier("call")),[e]);var i="toArray",a=[e];return t===!0?i="toConsumableArray":t&&(a.push(O.numericLiteral(t)),i="slicedToArray"),O.callExpression(n.addHelper(i),a)},e.prototype.hasLabel=function(e){return!!this.getLabel(e)},e.prototype.getLabel=function(e){return this.labels.get(e)},e.prototype.registerLabel=function(e){this.labels.set(e.node.label.name,e)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerLabel(e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;this.registerBinding(e.node.kind,s)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?O.unaryExpression("void",O.numericLiteral(0),!0):O.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var n in t){var r=this.getBinding(n);r&&r.reassign(e)}},e.prototype.registerBinding=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var r=t.get("declarations"),i=r,a=Array.isArray(i),s=0,i=a?i:(0,m.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;this.registerBinding(e,u)}else{var l=this.getProgramParent(),c=t.getBindingIdentifiers(!0);for(var p in c)for(var f=c[p],h=Array.isArray(f),d=0,f=h?f:(0,m.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var b=y,g=this.getOwnBinding(p);if(g){if(g.identifier===b)continue;this.checkBlockScopedCollisions(g,e,p,b)}g&&g.path.isFlow()&&(g=null),l.references[p]=!0,this.bindings[p]=new T.default({identifier:b,existing:g,scope:this,path:n,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(O.isIdentifier(e)){var n=this.getBinding(e.name);return!!n&&(!t||n.constant)}if(O.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(O.isClassBody(e)){for(var r=e.body,i=Array.isArray(r),a=0,r=i?r:(0,m.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(!this.isPure(o,t))return!1}return!0}if(O.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(O.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;if(!this.isPure(f,t))return!1}return!0}if(O.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,m.default)(h);;){var b;if(d){if(y>=h.length)break;b=h[y++]}else{if(y=h.next(),y.done)break;b=y.value}var g=b;if(!this.isPure(g,t))return!1}return!0}return O.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):O.isClassProperty(e)||O.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):O.isUnaryExpression(e)?this.isPure(e.argument,t):O.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var n=t.data[e];if(null!=n)return n}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{var n=t.data[e];null!=n&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){N++,this._crawl(),N--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,c.default)(null),this.bindings=(0,c.default)(null),this.globals=(0,c.default)(null),this.uids=(0,c.default)(null),this.data=(0,c.default)(null),e.isLoop())for(var t=O.FOR_INIT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=e.get(a);s.isBlockScoped()&&this.registerBinding(s.node.kind,s)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[O.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[O.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,m.default)(u);;){var f;if(l){if(p>=u.length)break;f=u[p++]}else{if(p=u.next(),p.done)break;f=p.value}var h=f;this.registerBinding("param",h)}e.isCatchClause()&&this.registerBinding("let",e);var d=this.getProgramParent();if(!d.crawling){var y={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(L,y),this.crawling=!1;for(var b=y.assignments,g=Array.isArray(b),v=0,b=g?b:(0,m.default)(b);;){var x;if(g){if(v>=b.length)break;x=b[v++]}else{if(v=b.next(),v.done)break;x=v.value}var _=x,E=_.getBindingIdentifiers(),A=void 0;for(var D in E)_.scope.getBinding(D)||(A=A||_.scope.getProgramParent(),A.addGlobal(E[D]));_.scope.registerConstantViolation(_)}for(var C=y.references,S=Array.isArray(C),w=0,C=S?C:(0,m.default)(C);;){var k;if(S){if(w>=C.length)break;k=C[w++]}else{if(w=C.next(),w.done)break;k=w.value}var F=k,T=F.scope.getBinding(F.node.name);T?T.reference(F):F.scope.getProgramParent().addGlobal(F.node)}for(var P=y.constantViolations,j=Array.isArray(P),B=0,P=j?P:(0,m.default)(P);;){var I;if(j){if(B>=P.length)break;I=P[B++]}else{if(B=P.next(),B.done)break;I=B.value}var N=I;N.scope.registerConstantViolation(N)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(O.ensureBlock(t.node),t=t.get("body"));var n=e.unique,r=e.kind||"var",i=null==e._blockHoist?2:e._blockHoist,a="declaration:"+r+":"+i,s=!n&&t.getData(a);if(!s){var o=O.variableDeclaration(r,[]);o._generated=!0,o._blockHoist=i;var u=t.unshiftContainer("body",[o]);s=u[0],n||t.setData(a,s)}var l=O.variableDeclarator(e.id,e.init);s.node.declarations.push(l),this.registerBinding(r,s.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,c.default)(null),t=this;do(0,S.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,c.default)(null),t=arguments,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=this;do{for(var o in s.bindings){var u=s.bindings[o];u.kind===a&&(e[o]=u)}s=s.parent}while(s)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===N&&e&&e.path.isFlow()&&console.warn("\n        You or one of the Babel plugins you are using are using Flow declarations as bindings.\n        Support for this will be removed in version 6.8. To find out the caller, grep for this\n        message and change it to a `console.trace()`.\n      "),e},e.prototype.getBinding=function(e){var t=this;do{var n=t.getOwnBinding(e);if(n)return this.warnOnFlowBinding(n)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,n){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,n)||(!!this.hasUid(t)||(!(n||!(0,g.default)(e.globals,t))||!(n||!(0,g.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var n=this.getBinding(e);n&&(n.scope.removeOwnBinding(e),n.scope=t,t.bindings[e]=n)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var n=this;do n.uids[e]&&(n.uids[e]=!1);while(n=n.parent)},e}();R.globals=(0,u.default)(j.default.builtin),R.contextVariables=["arguments","undefined","Infinity","NaN"],n.default=R,t.exports=n.default},{"../cache":226,"../index":229,"./binding":247,"./lib/renamer":249,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/map":102,"babel-runtime/core-js/object/create":105,"babel-runtime/core-js/object/keys":107,"babel-runtime/helpers/classCallCheck":114,"babel-types":265,globals:252,"lodash/defaults":460,"lodash/includes":473,"lodash/repeat":498}],249:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/classCallCheck"),s=i(a),o=e("../binding"),u=(i(o),e("babel-types")),l=r(u),c={ReferencedIdentifier:function(e,t){var n=e.node;n.name===t.oldName&&(n.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var n=e.getOuterBindingIdentifiers();for(var r in n)r===t.oldName&&(n[r].name=t.newName)}},p=function(){function e(t,n,r){(0,s.default)(this,e),this.newName=r,this.oldName=n,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var n=t.isExportDefaultDeclaration();n&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var r=e.getOuterBindingIdentifiers(),i=[];for(var a in r){var s=a===this.oldName?this.newName:a,o=n?"default":a;i.push(l.exportSpecifier(l.identifier(s),l.identifier(o)))}if(i.length){var u=l.exportNamedDeclaration(null,i);e.isFunctionDeclaration()&&(u._blockHoist=3),t.insertAfter(u),t.replaceWith(e.node)}}},e.prototype.maybeConvertFromClassFunctionDeclaration=function(e){},e.prototype.maybeConvertFromClassFunctionExpression=function(e){},e.prototype.rename=function(e){var t=this.binding,n=this.oldName,r=this.newName,i=t.scope,a=t.path,s=a.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});s&&this.maybeConvertFromExportDeclaration(s),i.traverse(e||i.block,c,this),e||(i.removeOwnBinding(n),i.bindings[r]=t,this.binding.identifier.name=r),"hoisted"===t.type,s&&(this.maybeConvertFromClassFunctionDeclaration(s),this.maybeConvertFromClassFunctionExpression(s))},e}();n.default=p,t.exports=n.default},{"../binding":247,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],250:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!h(t)){var n=t.split("|");if(1!==n.length){var r=e[t];delete e[t];for(var i=n,a=Array.isArray(i),o=0,i=a?i:(0,x.default)(i);;){var u;if(a){if(o>=i.length)break;u=i[o++]}else{if(o=i.next(),o.done)break;u=o.value}var l=u;e[l]=r}}}s(e),delete e.__esModule,c(e),p(e);for(var y=(0,g.default)(e),m=Array.isArray(y),b=0,y=m?y:(0,x.default)(y);;){var v;if(m){if(b>=y.length)break;v=y[b++]}else{if(b=y.next(),b.done)break;v=b.value}var _=v;if(!h(_)){var A=E[_];if(A){var D=e[_];for(var C in D)D[C]=f(A,D[C]);if(delete e[_],A.types)for(var w=A.types,F=Array.isArray(w),T=0,w=F?w:(0,x.default)(w);;){var P;if(F){if(T>=w.length)break;P=w[T++]}else{if(T=w.next(),T.done)break;P=T.value}var j=P;e[j]?d(e[j],D):e[j]=D}else d(e,D)}}}for(var B in e)if(!h(B)){var O=e[B],I=S.FLIPPED_ALIAS_KEYS[B],N=S.DEPRECATED_KEYS[B];if(N&&(console.trace("Visitor defined for "+B+" but it has been renamed to "+N),I=[N]),I){delete e[B];for(var L=I,M=Array.isArray(L),R=0,L=M?L:(0,x.default)(L);;){var U;if(M){if(R>=L.length)break;U=L[R++]}else{if(R=L.next(),R.done)break;U=R.value}var V=U,G=e[V];G?d(G,O):e[V]=(0,k.default)(O)}}}for(var q in e)h(q)||p(e[q]);return e}function s(e){if(!e._verified){if("function"==typeof e)throw new Error(D.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||o(t,e[t]),!h(t)){if(S.TYPES.indexOf(t)<0)throw new Error(D.get("traverseVerifyNodeType",t));var n=e[t];if("object"===("undefined"==typeof n?"undefined":(0,m.default)(n)))for(var r in n){if("enter"!==r&&"exit"!==r)throw new Error(D.get("traverseVerifyVisitorProperty",t,r));o(t+"."+r,n[r])}}e._verified=!0}}function o(e,t){for(var n=[].concat(t),r=n,i=Array.isArray(r),a=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+("undefined"==typeof o?"undefined":(0,m.default)(o)))}}function u(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2],r={},i=0;i","<",">=","<="]),o=n.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],u=n.COMPARISON_BINARY_OPERATORS=[].concat(o,["in","instanceof"]),l=n.BOOLEAN_BINARY_OPERATORS=[].concat(u,s),c=n.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],p=(n.BINARY_OPERATORS=["+"].concat(c,l),n.BOOLEAN_UNARY_OPERATORS=["delete","!"]),f=n.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],h=n.STRING_UNARY_OPERATORS=["typeof"];n.UNARY_OPERATORS=["void"].concat(p,f,h),n.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},n.BLOCK_SCOPED_SYMBOL=(0,a.default)("var used to be block scoped"),n.NOT_LOCAL_BINDING=(0,a.default)("should not be considered a local binding")},{"babel-runtime/core-js/symbol/for":110}],255:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.key||e.property;return e.computed||F.isIdentifier(t)&&(t=F.stringLiteral(t.name)),t}function s(e,t){function n(e){for(var a=!1,s=[],o=e,u=Array.isArray(o),l=0,o=u?o:(0,v.default)(o);;){var c;if(u){if(l>=o.length)break;c=o[l++]}else{if(l=o.next(),l.done)break;c=l.value}var p=c;if(F.isExpression(p))s.push(p);else if(F.isExpressionStatement(p))s.push(p.expression);else{if(F.isVariableDeclaration(p)){if("var"!==p.kind)return i=!0;for(var f=p.declarations,h=Array.isArray(f),d=0,f=h?f:(0,v.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var m=y,b=F.getBindingIdentifiers(m);for(var g in b)r.push({kind:p.kind,id:b[g]});m.init&&s.push(F.assignmentExpression("=",m.id,m.init))}a=!0;continue}if(F.isIfStatement(p)){var x=p.consequent?n([p.consequent]):t.buildUndefinedNode(),_=p.alternate?n([p.alternate]):t.buildUndefinedNode();if(!x||!_)return i=!0;s.push(F.conditionalExpression(p.test,x,_))}else{if(!F.isBlockStatement(p)){if(F.isEmptyStatement(p)){a=!0;continue}return i=!0}s.push(n(p.body))}}a=!1}return(a||0===s.length)&&s.push(t.buildUndefinedNode()),1===s.length?s[0]:F.sequenceExpression(s)}if(e&&e.length){var r=[],i=!1,a=n(e);if(!i){for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:e.key,n=void 0;return"method"===e.kind?o.increment()+"":(n=F.isIdentifier(t)?t.name:F.isStringLiteral(t)?(0,b.default)(t.value):(0,b.default)(F.removePropertiesDeep(F.cloneDeep(t))),e.computed&&(n="["+n+"]"),e.static&&(n="static:"+n),n)}function u(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),F.isValidIdentifier(e)||(e="_"+e),e||"_"}function l(e){return e=u(e),"eval"!==e&&"arguments"!==e||(e="_"+e),e}function c(e,t){if(F.isStatement(e))return e;var n=!1,r=void 0;if(F.isClass(e))n=!0,r="ClassDeclaration";else if(F.isFunction(e))n=!0,r="FunctionDeclaration";else if(F.isAssignmentExpression(e))return F.expressionStatement(e);if(n&&!e.id&&(r=!1),!r){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=r,e}function p(e){if(F.isExpressionStatement(e)&&(e=e.expression),F.isExpression(e))return e;if(F.isClass(e)?e.type="ClassExpression":F.isFunction(e)&&(e.type="FunctionExpression"),!F.isExpression(e))throw new Error("cannot turn "+e.type+" to an expression");return e}function f(e,t){return F.isBlockStatement(e)?e:(F.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(F.isStatement(e)||(e=F.isFunction(t)?F.returnStatement(e):F.expressionStatement(e)),e=[e]),F.blockStatement(e))}function h(e){if(void 0===e)return F.identifier("undefined");if(e===!0||e===!1)return F.booleanLiteral(e);if(null===e)return F.nullLiteral();if((0,w.default)(e))return F.stringLiteral(e);if((0,A.default)(e))return F.numericLiteral(e);if((0,C.default)(e)){var t=e.source,n=e.toString().match(/\/([a-z]+|)$/)[1];return F.regExpLiteral(t,n)}if(Array.isArray(e))return F.arrayExpression(e.map(F.valueToNode));if((0,_.default)(e)){var r=[];for(var i in e){var a=void 0;a=F.isValidIdentifier(i)?F.identifier(i):F.stringLiteral(i),r.push(F.objectProperty(a,F.valueToNode(e[i])))}return F.objectExpression(r)}throw new Error("don't know how to turn this value into a node")}n.__esModule=!0;var d=e("babel-runtime/core-js/number/max-safe-integer"),y=i(d),m=e("babel-runtime/core-js/json/stringify"),b=i(m),g=e("babel-runtime/core-js/get-iterator"),v=i(g);n.toComputedKey=a,n.toSequenceExpression=s,n.toKeyAlias=o,n.toIdentifier=u,n.toBindingIdentifierName=l,n.toStatement=c,n.toExpression=p,n.toBlock=f,n.valueToNode=h;var x=e("lodash/isPlainObject"),_=i(x),E=e("lodash/isNumber"),A=i(E),D=e("lodash/isRegExp"),C=i(D),S=e("lodash/isString"),w=i(S),k=e("./index"),F=r(k);o.uid=0,o.increment=function(){return o.uid>=y.default?o.uid=0:o.uid++}},{"./index":265,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/number/max-safe-integer":103,"lodash/isNumber":483,"lodash/isPlainObject":486,"lodash/isRegExp":487,"lodash/isString":488}],256:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var a=e("../index"),s=i(a),o=e("../constants"),u=e("./index"),l=r(u);(0,l.default)("ArrayExpression",{fields:{elements:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,l.default)("AssignmentExpression",{fields:{operator:{validate:(0,u.assertValueType)("string")},left:{validate:(0,u.assertNodeType)("LVal")},right:{validate:(0,u.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,l.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:u.assertOneOf.apply(void 0,o.BINARY_OPERATORS)},left:{validate:(0,u.assertNodeType)("Expression")},right:{validate:(0,u.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,l.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,u.assertNodeType)("DirectiveLiteral")}}}),(0,l.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("string")}}}),(0,l.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Directive"))),default:[]},body:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,l.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,u.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,l.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,u.assertNodeType)("Expression")},arguments:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,l.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,u.assertNodeType)("Identifier")},body:{validate:(0,u.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,l.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},consequent:{validate:(0,u.assertNodeType)("Expression")},alternate:{validate:(0,u.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,l.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,u.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,l.default)("DebuggerStatement",{aliases:["Statement"]}),(0,l.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,l.default)("EmptyStatement",{aliases:["Statement"]}),(0,l.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,u.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,l.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,u.assertNodeType)("Program")}}}),(0,l.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,u.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,u.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,u.assertNodeType)("Expression"),optional:!0},update:{validate:(0,u.assertNodeType)("Expression"),optional:!0},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],fields:{id:{validate:(0,u.assertNodeType)("Identifier")},params:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("LVal")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,l.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,u.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("LVal")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}}}),(0,l.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,n){!s.isValidIdentifier(n)}},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))}}}),(0,l.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},consequent:{validate:(0,u.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,u.assertNodeType)("Identifier")},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,u.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,u.assertValueType)("string")},flags:{validate:(0,u.assertValueType)("string"),default:""}}}),(0,l.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:u.assertOneOf.apply(void 0,o.LOGICAL_OPERATORS)},left:{validate:(0,u.assertNodeType)("Expression")},right:{validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,u.assertNodeType)("Expression")},property:{validate:function(e,t,n){var r=e.computed?"Expression":"Identifier";(0,u.assertNodeType)(r)(e,t,n)}},computed:{default:!1}}}),(0,l.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,u.assertNodeType)("Expression")},arguments:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression","SpreadElement")))}}}),(0,l.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Directive"))),default:[]},body:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,l.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,l.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,u.chain)((0,u.assertValueType)("string"),(0,u.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,u.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];u.assertNodeType.apply(void 0,r)(e,t,n)}},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,l.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,u.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];u.assertNodeType.apply(void 0,r)(e,t,n)}},value:{validate:(0,u.assertNodeType)("Expression")},shorthand:{validate:(0,u.assertValueType)("boolean"),default:!1},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,l.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,u.assertNodeType)("LVal")},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))}}}),(0,l.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,u.assertNodeType)("Expression"),optional:!0}}}),(0,l.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,l.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,u.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}}}),(0,l.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,u.assertNodeType)("Expression")},cases:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("SwitchCase")))}}}),(0,l.default)("ThisExpression",{aliases:["Expression"]}),(0,l.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,u.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,u.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,u.assertNodeType)("BlockStatement")}}}),(0,l.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,u.assertNodeType)("Expression")},operator:{validate:u.assertOneOf.apply(void 0,o.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,l.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,u.assertNodeType)("Expression")},operator:{validate:u.assertOneOf.apply(void 0,o.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,l.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,u.chain)((0,u.assertValueType)("string"),(0,u.assertOneOf)("var","let","const"))},declarations:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("VariableDeclarator")))}}}),(0,l.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,u.assertNodeType)("LVal")},init:{optional:!0,validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("BlockStatement","Statement")}}}),(0,l.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("BlockStatement","Statement")}}})},{"../constants":254,"../index":265,"./index":260}],257:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,i.assertNodeType)("Identifier")},right:{validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Expression")))},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType","typeParameters"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("LVal")))},body:{validate:(0,i.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,a.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,i.assertNodeType)("Identifier")},body:{validate:(0,i.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,i.assertNodeType)("Identifier")
-},body:{validate:(0,i.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,i.assertNodeType)("StringLiteral")}}}),(0,a.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,i.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,a.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,i.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ExportSpecifier")))},source:{validate:(0,i.assertNodeType)("StringLiteral"),optional:!0}}}),(0,a.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")},exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,i.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,i.assertNodeType)("Expression")},body:{validate:(0,i.assertNodeType)("Statement")}}}),(0,a.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,i.assertNodeType)("StringLiteral")}}}),(0,a.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")},imported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,i.assertValueType)("string")},property:{validate:(0,i.assertValueType)("string")}}}),(0,a.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,i.chain)((0,i.assertValueType)("string"),(0,i.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,i.assertValueType)("boolean")},static:{default:!1,validate:(0,i.assertValueType)("boolean")},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];i.assertNodeType.apply(void 0,r)(e,t,n)}},params:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("LVal")))},body:{validate:(0,i.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,i.assertValueType)("boolean")},async:{default:!1,validate:(0,i.assertValueType)("boolean")}}}),(0,a.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("RestProperty","Property")))},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("Super",{aliases:["Expression"]}),(0,a.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,i.assertNodeType)("Expression")},quasi:{validate:(0,i.assertNodeType)("TemplateLiteral")}}}),(0,a.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("TemplateElement")))},expressions:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Expression")))}}}),(0,a.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,i.assertValueType)("boolean"),default:!1},argument:{optional:!0,validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],258:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("ForAwaitStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,i.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,i.assertNodeType)("Expression")},body:{validate:(0,i.assertNodeType)("Statement")}}}),(0,a.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,a.default)("Import",{aliases:["Expression"]}),(0,a.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,i.assertNodeType)("BlockStatement")}}}),(0,a.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("LVal")}}}),(0,a.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],259:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,a.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],builder:["key","value","typeAnnotation","decorators","computed"],aliases:["Property"],fields:{computed:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModuleExports",{visitor:["typeAnnotation"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,a.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,a.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("EmptyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,a.default)("TypeParameter",{visitor:["bound"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,a.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},{"./index":260}],260:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":"undefined"==typeof e?"undefined":(0,g.default)(e)}function s(e){function t(t,n,r){if(Array.isArray(r))for(var i=0;i=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(x.is(l,r)){i=!0;break}}if(!i)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,m.default)(n)+" but instead got "+(0,m.default)(r&&r.type))}for(var t=arguments.length,n=Array(t),r=0;r=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;if(a(r)===c||x.is(c,r)){i=!0;break}}if(!i)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,m.default)(n)+" but instead got "+(0,m.default)(r&&r.type))}for(var t=arguments.length,n=Array(t),r=0;r=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}var a=i;a.apply(void 0,arguments)}}for(var t=arguments.length,n=Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=t.inherits&&S[t.inherits]||{};t.fields=t.fields||n.fields||{},t.visitor=t.visitor||n.visitor||[],t.aliases=t.aliases||n.aliases||[],t.builder=t.builder||n.builder||t.visitor||[],t.deprecatedAlias&&(C[t.deprecatedAlias]=e);for(var r=t.visitor.concat(t.builder),i=Array.isArray(r),s=0,r=i?r:(0,d.default)(r);;){var o;if(i){if(s>=r.length)break;o=r[s++]}else{if(s=r.next(),s.done)break;o=s.value}var u=o;t.fields[u]=t.fields[u]||{}}for(var l in t.fields){var p=t.fields[l];t.builder.indexOf(l)===-1&&(p.optional=!0),void 0===p.default?p.default=null:p.validate||(p.validate=c(a(p.default)))}_[e]=t.visitor,D[e]=t.builder,A[e]=t.fields,E[e]=t.aliases,S[e]=t}n.__esModule=!0,n.DEPRECATED_KEYS=n.BUILDER_KEYS=n.NODE_FIELDS=n.ALIAS_KEYS=n.VISITOR_KEYS=void 0;var h=e("babel-runtime/core-js/get-iterator"),d=i(h),y=e("babel-runtime/core-js/json/stringify"),m=i(y),b=e("babel-runtime/helpers/typeof"),g=i(b);n.assertEach=s,n.assertOneOf=o,n.assertNodeType=u,n.assertNodeOrValueType=l,n.assertValueType=c,n.chain=p,n.default=f;var v=e("../index"),x=r(v),_=n.VISITOR_KEYS={},E=n.ALIAS_KEYS={},A=n.NODE_FIELDS={},D=n.BUILDER_KEYS={},C=n.DEPRECATED_KEYS={},S={}},{"../index":265,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/helpers/typeof":118}],261:[function(e,t,n){"use strict";e("./index"),e("./core"),e("./es2015"),e("./flow"),e("./jsx"),e("./misc"),e("./experimental")},{"./core":256,"./es2015":257,"./experimental":258,"./flow":259,"./index":260,"./jsx":262,"./misc":263}],262:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("JSXAttribute",{visitor:["name","value"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXNamespacedName")},value:{optional:!0,validate:(0,i.assertNodeType)("JSXElement","StringLiteral","JSXExpressionContainer")}}}),(0,a.default)("JSXClosingElement",{visitor:["name"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXMemberExpression")}}}),(0,a.default)("JSXElement",{builder:["openingElement","closingElement","children","selfClosing"],visitor:["openingElement","children","closingElement"],aliases:["JSX","Immutable","Expression"],fields:{openingElement:{validate:(0,i.assertNodeType)("JSXOpeningElement")},closingElement:{optional:!0,validate:(0,i.assertNodeType)("JSXClosingElement")},children:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("JSXText","JSXExpressionContainer","JSXSpreadChild","JSXElement")))}}}),(0,a.default)("JSXEmptyExpression",{aliases:["JSX","Expression"]}),(0,a.default)("JSXExpressionContainer",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXSpreadChild",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXIdentifier",{builder:["name"],aliases:["JSX","Expression"],fields:{name:{validate:(0,i.assertValueType)("string")}}}),(0,a.default)("JSXMemberExpression",{visitor:["object","property"],aliases:["JSX","Expression"],fields:{object:{validate:(0,i.assertNodeType)("JSXMemberExpression","JSXIdentifier")},property:{validate:(0,i.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXNamespacedName",{visitor:["namespace","name"],aliases:["JSX"],fields:{namespace:{validate:(0,i.assertNodeType)("JSXIdentifier")},name:{validate:(0,i.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXOpeningElement",{builder:["name","attributes","selfClosing"],visitor:["name","attributes"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXMemberExpression")},selfClosing:{default:!1,validate:(0,i.assertValueType)("boolean")},attributes:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("JSXAttribute","JSXSpreadAttribute")))}}}),(0,a.default)("JSXSpreadAttribute",{visitor:["argument"],aliases:["JSX"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXText",{aliases:["JSX","Immutable"],builder:["value"],fields:{value:{validate:(0,i.assertValueType)("string")}}})},{"./index":260}],263:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("Noop",{visitor:[]}),(0,a.default)("ParenthesizedExpression",{visitor:["expression"],aliases:["Expression","ExpressionWrapper"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],264:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){var t=a(e);return 1===t.length?t[0]:u.unionTypeAnnotation(t)}function a(e){for(var t={},n={},r=[],i=[],s=0;s=0)){if(u.isAnyTypeAnnotation(o))return[o];if(u.isFlowBaseAnnotation(o))n[o.type]=o;else if(u.isUnionTypeAnnotation(o))r.indexOf(o.types)<0&&(e=e.concat(o.types),r.push(o.types));else if(u.isGenericTypeAnnotation(o)){var l=o.id.name;if(t[l]){var c=t[l];c.typeParameters?o.typeParameters&&(c.typeParameters.params=a(c.typeParameters.params.concat(o.typeParameters.params))):c=o.typeParameters}else t[l]=o}else i.push(o)}}for(var p in n)i.push(n[p]);for(var f in t)i.push(t[f]);return i}function s(e){if("string"===e)return u.stringTypeAnnotation();if("number"===e)return u.numberTypeAnnotation();if("undefined"===e)return u.voidTypeAnnotation();if("boolean"===e)return u.booleanTypeAnnotation();if("function"===e)return u.genericTypeAnnotation(u.identifier("Function"));if("object"===e)return u.genericTypeAnnotation(u.identifier("Object"));if("symbol"===e)return u.genericTypeAnnotation(u.identifier("Symbol"));throw new Error("Invalid typeof value")}n.__esModule=!0,n.createUnionTypeAnnotation=i,n.removeTypeDuplicates=a,n.createTypeAnnotationBasedOnTypeof=s;var o=e("./index"),u=r(o)},{"./index":265}],265:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=te["is"+e];t||(t=te["is"+e]=function(t,n){return te.is(e,t,n)}),te["assert"+e]=function(n,r){if(r=r||{},!t(n,r))throw new Error("Expected type "+(0,N.default)(e)+" with option "+(0,N.default)(r))}}function s(e,t,n){if(!t)return!1;var r=o(t.type,e);return!!r&&("undefined"==typeof n||te.shallowEqual(t,n))}function o(e,t){if(e===t)return!0;if(te.ALIAS_KEYS[t])return!1;var n=te.FLIPPED_ALIAS_KEYS[t];if(n){if(n[0]===e)return!0;for(var r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(e===o)return!0}}return!1}function u(e,t,n){if(e){var r=te.NODE_FIELDS[e.type];if(r){var i=r[t];i&&i.validate&&(i.optional&&null==n||i.validate(e,t,n))}}}function l(e,t){for(var n=(0,O.default)(t),r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(e[o]!==t[o])return!1}return!0}function c(e,t,n){return e.object=te.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!n,e}function p(e,t){return e.object=te.memberExpression(t,e.object),e}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"body";return e[t]=te.toBlock(e[t],e)}function h(e){if(!e)return e;var t={};for(var n in e)"_"!==n[0]&&(t[n]=e[n]);return t}function d(e){var t=h(e);return delete t.loc,t}function y(e){if(!e)return e;var t={};for(var n in e)if("_"!==n[0]){var r=e[n];r&&(r.type?r=te.cloneDeep(r):Array.isArray(r)&&(r=r.map(te.cloneDeep))),t[n]=r}return t}function m(e,t){var n=e.split(".");return function(e){if(!te.isMemberExpression(e))return!1;for(var r=[e],i=0;r.length;){var a=r.shift();if(t&&i===n.length)return!0;if(te.isIdentifier(a)){if(n[i]!==a.name)return!1}else{if(!te.isStringLiteral(a)){if(te.isMemberExpression(a)){if(a.computed&&!te.isStringLiteral(a.property))return!1;r.push(a.object),r.push(a.property);continue}return!1}if(n[i]!==a.value)return!1}if(++i>n.length)return!1}return!0}}function b(e){for(var t=te.COMMENT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,j.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;delete e[a]}return e}function g(e,t){return v(e,t),x(e,t),_(e,t),e}function v(e,t){E("trailingComments",e,t)}function x(e,t){E("leadingComments",e,t)}function _(e,t){E("innerComments",e,t)}function E(e,t,n){t&&n&&(t[e]=(0,$.default)((0,X.default)([].concat(t[e],n[e]))))}function A(e,t){if(!e||!t)return e;for(var n=te.INHERIT_KEYS.optional,r=Array.isArray(n),i=0,n=r?n:(0,j.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;null==e[s]&&(e[s]=t[s])}for(var o in t)"_"===o[0]&&(e[o]=t[o]);for(var u=te.INHERIT_KEYS.force,l=Array.isArray(u),c=0,u=l?u:(0,j.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;e[f]=t[f]}return te.inheritsComments(e,t),e}function D(e){if(!C(e))throw new TypeError("Not a valid node "+(e&&e.type))}function C(e){return!(!e||!Q.VISITOR_KEYS[e.type])}function S(e,t,n){if(e){var r=te.VISITOR_KEYS[e.type];if(r){n=n||{},t(e,n);for(var i=r,a=Array.isArray(i),s=0,i=a?i:(0,j.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o,l=e[u];if(Array.isArray(l))for(var c=l,p=Array.isArray(c),f=0,c=p?c:(0,j.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;S(d,t,n)}else S(l,t,n)}}}}function w(e,t){t=t||{};for(var n=t.preserveComments?ae:se,r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;null!=e[o]&&(e[o]=void 0)}for(var u in e)"_"===u[0]&&null!=e[u]&&(e[u]=void 0);for(var l=(0,T.default)(e),c=l,p=Array.isArray(c),f=0,c=p?c:(0,j.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;e[d]=null}}function k(e,t){return S(e,w,t),e}n.__esModule=!0,n.createTypeAnnotationBasedOnTypeof=n.removeTypeDuplicates=n.createUnionTypeAnnotation=n.valueToNode=n.toBlock=n.toExpression=n.toStatement=n.toBindingIdentifierName=n.toIdentifier=n.toKeyAlias=n.toSequenceExpression=n.toComputedKey=n.isNodesEquivalent=n.isImmutable=n.isScope=n.isSpecifierDefault=n.isVar=n.isBlockScoped=n.isLet=n.isValidIdentifier=n.isReferenced=n.isBinding=n.getOuterBindingIdentifiers=n.getBindingIdentifiers=n.TYPES=n.react=n.DEPRECATED_KEYS=n.BUILDER_KEYS=n.NODE_FIELDS=n.ALIAS_KEYS=n.VISITOR_KEYS=n.NOT_LOCAL_BINDING=n.BLOCK_SCOPED_SYMBOL=n.INHERIT_KEYS=n.UNARY_OPERATORS=n.STRING_UNARY_OPERATORS=n.NUMBER_UNARY_OPERATORS=n.BOOLEAN_UNARY_OPERATORS=n.BINARY_OPERATORS=n.NUMBER_BINARY_OPERATORS=n.BOOLEAN_BINARY_OPERATORS=n.COMPARISON_BINARY_OPERATORS=n.EQUALITY_BINARY_OPERATORS=n.BOOLEAN_NUMBER_BINARY_OPERATORS=n.UPDATE_OPERATORS=n.LOGICAL_OPERATORS=n.COMMENT_KEYS=n.FOR_INIT_KEYS=n.FLATTENABLE_KEYS=n.STATEMENT_OR_BLOCK_KEYS=void 0;var F=e("babel-runtime/core-js/object/get-own-property-symbols"),T=i(F),P=e("babel-runtime/core-js/get-iterator"),j=i(P),B=e("babel-runtime/core-js/object/keys"),O=i(B),I=e("babel-runtime/core-js/json/stringify"),N=i(I),L=e("./constants");Object.defineProperty(n,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return L.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(n,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return L.FLATTENABLE_KEYS}}),Object.defineProperty(n,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return L.FOR_INIT_KEYS}}),Object.defineProperty(n,"COMMENT_KEYS",{enumerable:!0,get:function(){return L.COMMENT_KEYS}}),Object.defineProperty(n,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return L.LOGICAL_OPERATORS}}),Object.defineProperty(n,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return L.UPDATE_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(n,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(n,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(n,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(n,"BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BINARY_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(n,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(n,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.STRING_UNARY_OPERATORS}}),Object.defineProperty(n,"UNARY_OPERATORS",{enumerable:!0,get:function(){return L.UNARY_OPERATORS}}),Object.defineProperty(n,"INHERIT_KEYS",{enumerable:!0,get:function(){return L.INHERIT_KEYS}}),Object.defineProperty(n,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return L.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(n,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return L.NOT_LOCAL_BINDING}}),n.is=s,n.isType=o,n.validate=u,n.shallowEqual=l,n.appendToMemberExpression=c,n.prependToMemberExpression=p,n.ensureBlock=f,n.clone=h,n.cloneWithoutLoc=d,n.cloneDeep=y,n.buildMatchMemberExpression=m,n.removeComments=b,n.inheritsComments=g,n.inheritTrailingComments=v,n.inheritLeadingComments=x,n.inheritInnerComments=_,n.inherits=A,n.assertNode=D,n.isNode=C,n.traverseFast=S,n.removeProperties=w,n.removePropertiesDeep=k;var M=e("./retrievers");Object.defineProperty(n,"getBindingIdentifiers",{enumerable:!0,get:function(){return M.getBindingIdentifiers}}),Object.defineProperty(n,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return M.getOuterBindingIdentifiers}});var R=e("./validators");Object.defineProperty(n,"isBinding",{enumerable:!0,get:function(){return R.isBinding}}),Object.defineProperty(n,"isReferenced",{enumerable:!0,get:function(){return R.isReferenced}}),Object.defineProperty(n,"isValidIdentifier",{enumerable:!0,get:function(){return R.isValidIdentifier}}),Object.defineProperty(n,"isLet",{enumerable:!0,get:function(){return R.isLet}}),Object.defineProperty(n,"isBlockScoped",{enumerable:!0,get:function(){return R.isBlockScoped}}),Object.defineProperty(n,"isVar",{enumerable:!0,get:function(){return R.isVar}}),Object.defineProperty(n,"isSpecifierDefault",{enumerable:!0,get:function(){return R.isSpecifierDefault}}),Object.defineProperty(n,"isScope",{enumerable:!0,get:function(){return R.isScope}}),Object.defineProperty(n,"isImmutable",{enumerable:!0,get:function(){return R.isImmutable}}),Object.defineProperty(n,"isNodesEquivalent",{enumerable:!0,get:function(){return R.isNodesEquivalent}});var U=e("./converters");Object.defineProperty(n,"toComputedKey",{enumerable:!0,get:function(){return U.toComputedKey}}),Object.defineProperty(n,"toSequenceExpression",{enumerable:!0,get:function(){return U.toSequenceExpression}}),Object.defineProperty(n,"toKeyAlias",{enumerable:!0,get:function(){return U.toKeyAlias}}),Object.defineProperty(n,"toIdentifier",{enumerable:!0,get:function(){return U.toIdentifier}}),Object.defineProperty(n,"toBindingIdentifierName",{enumerable:!0,get:function(){return U.toBindingIdentifierName}}),Object.defineProperty(n,"toStatement",{enumerable:!0,get:function(){return U.toStatement}}),Object.defineProperty(n,"toExpression",{enumerable:!0,get:function(){return U.toExpression}}),Object.defineProperty(n,"toBlock",{enumerable:!0,get:function(){return U.toBlock}}),Object.defineProperty(n,"valueToNode",{enumerable:!0,get:function(){return U.valueToNode}});var V=e("./flow");Object.defineProperty(n,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return V.createUnionTypeAnnotation}}),Object.defineProperty(n,"removeTypeDuplicates",{enumerable:!0,get:function(){return V.removeTypeDuplicates}}),Object.defineProperty(n,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return V.createTypeAnnotationBasedOnTypeof}});var G=e("to-fast-properties"),q=i(G),K=e("lodash/compact"),X=i(K),J=e("lodash/clone"),W=i(J),z=e("lodash/each"),Y=i(z),H=e("lodash/uniq"),$=i(H);e("./definitions/init");var Q=e("./definitions"),Z=e("./react"),ee=r(Z),te=n;n.VISITOR_KEYS=Q.VISITOR_KEYS,n.ALIAS_KEYS=Q.ALIAS_KEYS,n.NODE_FIELDS=Q.NODE_FIELDS,n.BUILDER_KEYS=Q.BUILDER_KEYS,n.DEPRECATED_KEYS=Q.DEPRECATED_KEYS,n.react=ee;for(var ne in te.VISITOR_KEYS)a(ne);te.FLIPPED_ALIAS_KEYS={},(0,Y.default)(te.ALIAS_KEYS,function(e,t){(0,Y.default)(e,function(e){var n=te.FLIPPED_ALIAS_KEYS[e]=te.FLIPPED_ALIAS_KEYS[e]||[];n.push(t)})}),(0,Y.default)(te.FLIPPED_ALIAS_KEYS,function(e,t){te[t.toUpperCase()+"_TYPES"]=e,a(t)});n.TYPES=(0,O.default)(te.VISITOR_KEYS).concat((0,O.default)(te.FLIPPED_ALIAS_KEYS)).concat((0,O.default)(te.DEPRECATED_KEYS));(0,Y.default)(te.BUILDER_KEYS,function(e,t){function n(){if(arguments.length>e.length)throw new Error("t."+t+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+e.length);var n={};n.type=t;for(var r=0,i=e,a=Array.isArray(i),s=0,i=a?i:(0,j.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var l=o,c=te.NODE_FIELDS[t][l],p=arguments[r++];void 0===p&&(p=(0,W.default)(c.default)),n[l]=p}for(var f in n)u(n,f,n[f]);return n}te[t]=n,te[t[0].toLowerCase()+t.slice(1)]=n});var re=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+n),t.apply(this,arguments)}}var n=te.DEPRECATED_KEYS[e];te[e]=te[e[0].toLowerCase()+e.slice(1)]=t(te[n]),te["is"+e]=t(te["is"+n]),te["assert"+e]=t(te["assert"+n])};for(var ie in te.DEPRECATED_KEYS)re(ie);(0,q.default)(te),
-(0,q.default)(te.VISITOR_KEYS);var ae=["tokens","start","end","loc","raw","rawValue"],se=te.COMMENT_KEYS.concat(["comments"]).concat(ae)},{"./constants":254,"./converters":255,"./definitions":260,"./definitions/init":261,"./flow":264,"./react":266,"./retrievers":267,"./validators":268,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/object/get-own-property-symbols":106,"babel-runtime/core-js/object/keys":107,"lodash/clone":455,"lodash/compact":458,"lodash/each":461,"lodash/uniq":509,"to-fast-properties":273}],266:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return!!e&&/^[a-z]|\-/.test(e)}function a(e,t){for(var n=e.value.split(/\r\n|\n|\r/),r=0,i=0;i=0)return!0}else if(a===e)return!0}return!1}function s(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var n=t.params,r=Array.isArray(n),i=0,n=r?n:(0,x.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;if(s===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.key===e?t.computed:t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":return t.right===e;case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0}function o(e){return"string"==typeof e&&!A.default.keyword.isReservedWordES6(e,!0)&&A.default.keyword.isIdentifierNameES6(e)}function u(e){return C.isVariableDeclaration(e)&&("var"!==e.kind||e[S.BLOCK_SCOPED_SYMBOL])}function l(e){return C.isFunctionDeclaration(e)||C.isClassDeclaration(e)||C.isLet(e)}function c(e){return C.isVariableDeclaration(e,{kind:"var"})&&!e[S.BLOCK_SCOPED_SYMBOL]}function p(e){return C.isImportDefaultSpecifier(e)||C.isIdentifier(e.imported||e.exported,{name:"default"})}function f(e,t){return(!C.isBlockStatement(e)||!C.isFunction(t,{body:e}))&&C.isScopable(e)}function h(e){return!!C.isType(e.type,"Immutable")||!!C.isIdentifier(e)&&"undefined"===e.name}function d(e,t){if("object"!==("undefined"==typeof e?"undefined":(0,g.default)(e))||"object"!==("undefined"==typeof e?"undefined":(0,g.default)(e))||null==e||null==t)return e===t;if(e.type!==t.type)return!1;for(var n=(0,m.default)(C.NODE_FIELDS[e.type]||e.type),r=n,i=Array.isArray(r),a=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if((0,g.default)(e[o])!==(0,g.default)(t[o]))return!1;if(Array.isArray(e[o])){if(!Array.isArray(t[o]))return!1;if(e[o].length!==t[o].length)return!1;for(var u=0;u=0}}function i(e,t){for(var n=65536,r=0;re)return!1;if(n+=t[r+1],n>=e)return!0}}function a(e){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&T.test(String.fromCharCode(e)):i(e,j)))}function s(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&P.test(String.fromCharCode(e)):i(e,j)||i(e,B))))}function o(e){var t={};for(var n in O)t[n]=e&&n in e?e[n]:O[n];return t}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){return new I(e,{beforeExpr:!0,binop:t})}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.keyword=e,R[e]=M["_"+e]=new I(e,t)}function p(e){return 10===e||13===e||8232===e||8233===e}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=1,r=0;;){V.lastIndex=r;var i=V.exec(e);if(!(i&&i.index>10)+55296,(e-65536&1023)+56320)}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function x(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E(e,t,n,r){return e.type=t,e.end=n,e.loc.end=r,this.processComment(e),e}function A(e){return e[e.length-1]}function D(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?D(e.object)+"."+D(e.property):void 0}function C(e,t){return new $(t,e).parse()}Object.defineProperty(n,"__esModule",{value:!0});var S={6:r("enum await"),strict:r("implements interface let package private protected public static yield"),strictBind:r("eval arguments")},w=r("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),k="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",F="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",T=new RegExp("["+k+"]"),P=new RegExp("["+k+F+"]");k=F=null;var j=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],B=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],O={sourceType:"script",sourceFilename:void 0,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null},I=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,e),this.label=t,this.keyword=n.keyword,this.beforeExpr=!!n.beforeExpr,this.startsExpr=!!n.startsExpr,this.rightAssociative=!!n.rightAssociative,this.isLoop=!!n.isLoop,this.isAssign=!!n.isAssign,this.prefix=!!n.prefix,this.postfix=!!n.postfix,this.binop=n.binop||null,this.updateContext=null},N={beforeExpr:!0},L={startsExpr:!0},M={num:new I("num",L),regexp:new I("regexp",L),string:new I("string",L),name:new I("name",L),eof:new I("eof"),bracketL:new I("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new I("]"),braceL:new I("{",{beforeExpr:!0,startsExpr:!0}),braceBarL:new I("{|",{beforeExpr:!0,startsExpr:!0}),braceR:new I("}"),braceBarR:new I("|}"),parenL:new I("(",{beforeExpr:!0,startsExpr:!0}),parenR:new I(")"),comma:new I(",",N),semi:new I(";",N),colon:new I(":",N),doubleColon:new I("::",N),dot:new I("."),question:new I("?",N),arrow:new I("=>",N),template:new I("template"),ellipsis:new I("...",N),backQuote:new I("`",L),dollarBraceL:new I("${",{beforeExpr:!0,startsExpr:!0}),at:new I("@"),eq:new I("=",{beforeExpr:!0,isAssign:!0}),assign:new I("_=",{beforeExpr:!0,isAssign:!0}),incDec:new I("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new I("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:l("||",1),logicalAND:l("&&",2),bitwiseOR:l("|",3),bitwiseXOR:l("^",4),bitwiseAND:l("&",5),equality:l("==/!=",6),relational:l("",7),bitShift:l("<>",8),plusMin:new I("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:l("%",10),star:l("*",10),slash:l("/",10),exponent:new I("**",{beforeExpr:!0,binop:11,rightAssociative:!0})},R={};c("break"),c("case",N),c("catch"),c("continue"),c("debugger"),c("default",N),c("do",{isLoop:!0,beforeExpr:!0}),c("else",N),c("finally"),c("for",{isLoop:!0}),c("function",L),c("if"),c("return",N),c("switch"),c("throw",N),c("try"),c("var"),c("let"),c("const"),c("while",{isLoop:!0}),c("with"),c("new",{beforeExpr:!0,startsExpr:!0}),c("this",L),c("super",L),c("class"),c("extends",N),c("export"),c("import"),c("yield",{beforeExpr:!0,startsExpr:!0}),c("null",L),c("true",L),c("false",L),c("in",{beforeExpr:!0,binop:7}),c("instanceof",{beforeExpr:!0,binop:7}),c("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),c("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),c("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0});var U=/\r\n?|\n|\u2028|\u2029/,V=new RegExp(U.source,"g"),G=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,q=function e(t,n,r,i){f(this,e),this.token=t,this.isExpr=!!n,this.preserveSpace=!!r,this.override=i},K={braceStatement:new q("{",!1),braceExpression:new q("{",!0),templateQuasi:new q("${",!0),parenStatement:new q("(",!1),parenExpression:new q("(",!0),template:new q("`",!0,!0,function(e){return e.readTmplToken()}),functionExpression:new q("function",!0)};M.parenR.updateContext=M.braceR.updateContext=function(){if(1===this.state.context.length)return void(this.state.exprAllowed=!0);var e=this.state.context.pop();e===K.braceStatement&&this.curContext()===K.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):e===K.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!e.isExpr},M.name.updateContext=function(e){this.state.exprAllowed=!1,e!==M._let&&e!==M._const&&e!==M._var||U.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},M.braceL.updateContext=function(e){this.state.context.push(this.braceIsBlock(e)?K.braceStatement:K.braceExpression),this.state.exprAllowed=!0},M.dollarBraceL.updateContext=function(){this.state.context.push(K.templateQuasi),this.state.exprAllowed=!0},M.parenL.updateContext=function(e){var t=e===M._if||e===M._for||e===M._with||e===M._while;this.state.context.push(t?K.parenStatement:K.parenExpression),this.state.exprAllowed=!0},M.incDec.updateContext=function(){},M._function.updateContext=function(){this.curContext()!==K.braceStatement&&this.state.context.push(K.functionExpression),this.state.exprAllowed=!1},M.backQuote.updateContext=function(){this.curContext()===K.template?this.state.context.pop():this.state.context.push(K.template),this.state.exprAllowed=!1};var X=function e(t,n){h(this,e),this.line=t,this.column=n},J=function e(t,n){h(this,e),this.start=t,this.end=n},W=function(){function e(){y(this,e)}return e.prototype.init=function(e,t){return this.strict=e.strictMode!==!1&&"module"===e.sourceType,this.input=t,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=this.inType=this.noAnonFunctionType=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=1,this.type=M.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[K.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this.exportedIdentifiers=[],this},e.prototype.curPosition=function(){return new X(this.curLine,this.pos-this.lineStart)},e.prototype.clone=function(t){var n=new e;for(var r in this){var i=this[r];t&&"context"!==r||!Array.isArray(i)||(i=i.slice()),n[r]=i}return n},e}(),z=function e(t){m(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new J(t.startLoc,t.endLoc)},Y=function(){function e(t,n){m(this,e),this.state=new W,this.state.init(t,n)}return e.prototype.next=function(){this.isLookahead||this.state.tokens.push(new z(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()},e.prototype.eat=function(e){return!!this.match(e)&&(this.next(),!0)},e.prototype.match=function(e){return this.state.type===e},e.prototype.isKeyword=function(e){return w(e)},e.prototype.lookahead=function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t},e.prototype.setStrict=function(e){if(this.state.strict=e,this.match(M.num)||this.match(M.string)){for(this.state.pos=this.state.start;this.state.pos=this.input.length?this.finishToken(M.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())},e.prototype.readToken=function(e){return a(e)||92===e?this.readWord():this.getTokenFromCode(e)},e.prototype.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.state.pos);if(e<=55295||e>=57344)return e;var t=this.input.charCodeAt(this.state.pos+1);return(e<<10)+t-56613888},e.prototype.pushComment=function(e,t,n,r,i,a){var s={type:e?"CommentBlock":"CommentLine",value:t,start:n,end:r,loc:new J(i,a)};this.isLookahead||(this.state.tokens.push(s),this.state.comments.push(s),this.addComment(s))},e.prototype.skipBlockComment=function(){var e=this.state.curPosition(),t=this.state.pos,n=this.input.indexOf("*/",this.state.pos+=2);n===-1&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=n+2,V.lastIndex=t;for(var r=void 0;(r=V.exec(this.input))&&r.index8&&e<14||e>=5760&&G.test(String.fromCharCode(e))))break e;++this.state.pos}}},e.prototype.finishToken=function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var n=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(n)},e.prototype.readToken_dot=function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(M.ellipsis)):(++this.state.pos,this.finishToken(M.dot))},e.prototype.readToken_slash=function(){if(this.state.exprAllowed)return++this.state.pos,this.readRegexp();var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(M.assign,2):this.finishOp(M.slash,1)},e.prototype.readToken_mult_modulo=function(e){var t=42===e?M.star:M.modulo,n=1,r=this.input.charCodeAt(this.state.pos+1);return 42===r&&(n++,r=this.input.charCodeAt(this.state.pos+2),t=M.exponent),61===r&&(n++,t=M.assign),this.finishOp(t,n)},e.prototype.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?M.logicalOR:M.logicalAND,2):61===t?this.finishOp(M.assign,2):124===e&&125===t&&this.hasPlugin("flow")?this.finishOp(M.braceBarR,2):this.finishOp(124===e?M.bitwiseOR:M.bitwiseAND,1)},e.prototype.readToken_caret=function(){var e=this.input.charCodeAt(this.state.pos+1);return 61===e?this.finishOp(M.assign,2):this.finishOp(M.bitwiseXOR,1)},e.prototype.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&U.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(M.incDec,2):61===t?this.finishOp(M.assign,2):this.finishOp(M.plusMin,1)},e.prototype.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.state.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+n)?this.finishOp(M.assign,n+1):this.finishOp(M.bitShift,n)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(n=2),this.finishOp(M.relational,n))},e.prototype.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(M.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(M.arrow)):this.finishOp(61===e?M.eq:M.prefix,1)},e.prototype.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(M.parenL);case 41:return++this.state.pos,this.finishToken(M.parenR);case 59:return++this.state.pos,this.finishToken(M.semi);case 44:return++this.state.pos,this.finishToken(M.comma);case 91:return++this.state.pos,this.finishToken(M.bracketL);case 93:return++this.state.pos,this.finishToken(M.bracketR);case 123:return this.hasPlugin("flow")&&124===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.braceBarL,2):(++this.state.pos,this.finishToken(M.braceL));case 125:return++this.state.pos,this.finishToken(M.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.doubleColon,2):(++this.state.pos,this.finishToken(M.colon));case 63:return++this.state.pos,this.finishToken(M.question);case 64:return++this.state.pos,this.finishToken(M.at);case 96:return++this.state.pos,this.finishToken(M.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(M.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+b(e)+"'")},e.prototype.finishOp=function(e,t){var n=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,n)},e.prototype.readRegexp=function(){for(var e=void 0,t=void 0,n=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(n,"Unterminated regular expression");var r=this.input.charAt(this.state.pos);if(U.test(r)&&this.raise(n,"Unterminated regular expression"),e)e=!1;else{if("["===r)t=!0;else if("]"===r&&t)t=!1;else if("/"===r&&!t)break;e="\\"===r}++this.state.pos}var i=this.input.slice(n,this.state.pos);++this.state.pos;var a=this.readWord1();if(a){var s=/^[gmsiyu]*$/;s.test(a)||this.raise(n,"Invalid regular expression flag")}return this.finishToken(M.regexp,{pattern:i,flags:a})},e.prototype.readInt=function(e,t){for(var n=this.state.pos,r=0,i=0,a=null==t?1/0:t;i=97?s-97+10:s>=65?s-65+10:s>=48&&s<=57?s-48:1/0,o>=e)break;++this.state.pos,r=r*e+o}return this.state.pos===n||null!=t&&this.state.pos-n!==t?null:r},e.prototype.readRadixNumber=function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(M.num,t)},e.prototype.readNumber=function(e){var t=this.state.pos,n=!1,r=48===this.input.charCodeAt(this.state.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number");var i=this.input.charCodeAt(this.state.pos);46===i&&(++this.state.pos,this.readInt(10),n=!0,i=this.input.charCodeAt(this.state.pos)),69!==i&&101!==i||(i=this.input.charCodeAt(++this.state.pos),43!==i&&45!==i||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),n=!0),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var s=this.input.slice(t,this.state.pos),o=void 0;return n?o=parseFloat(s):r&&1!==s.length?/[89]/.test(s)||this.state.strict?this.raise(t,"Invalid number"):o=parseInt(s,8):o=parseInt(s,10),this.finishToken(M.num,o)},e.prototype.readCodePoint=function(){var e=this.input.charCodeAt(this.state.pos),t=void 0;if(123===e){var n=++this.state.pos;t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,t>1114111&&this.raise(n,"Code point out of bounds")}else t=this.readHexChar(4);return t},e.prototype.readString=function(e){for(var t="",n=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var r=this.input.charCodeAt(this.state.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.state.pos),t+=this.readEscapedChar(!1),n=this.state.pos):(p(r)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(n,this.state.pos++),this.finishToken(M.string,t)},e.prototype.readTmplToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var n=this.input.charCodeAt(this.state.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(M.template)?36===n?(this.state.pos+=2,this.finishToken(M.dollarBraceL)):(++this.state.pos,this.finishToken(M.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(M.template,e));if(92===n)e+=this.input.slice(t,this.state.pos),e+=this.readEscapedChar(!0),t=this.state.pos;else if(p(n)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,n){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}},e.prototype.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return b(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(t>=48&&t<=55){var n=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),r>0&&(this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=this.state.pos-2),(this.state.strict||e)&&this.raise(this.state.pos-2,"Octal literal in strict mode")),this.state.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},e.prototype.readHexChar=function(e){var t=this.state.pos,n=this.readInt(16,e);return null===n&&this.raise(t,"Bad character escape sequence"),n},e.prototype.readWord1=function(){this.state.containsEsc=!1;for(var e="",t=!0,n=this.state.pos;this.state.pos=0)return this.loadAllPlugins(),{"*":!0};var t={};e.indexOf("flow")>=0&&(e=e.filter(function(e){return"flow"!==e}),e.push("flow"));for(var n=e,r=Array.isArray(n),i=0,n=r?n:n[Symbol.iterator]();;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;if(!t[s]){t[s]=!0;var o=H[s];o&&o(this)}}return t},t.prototype.parse=function(){var e=this.startNode(),t=this.startNode();return this.nextToken(),this.parseTopLevel(e,t)},t}(Y),Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z=$.prototype;Z.addExtra=function(e,t,n){if(e){var r=e.extra=e.extra||{};r[t]=n}},Z.isRelational=function(e){return this.match(M.relational)&&this.state.value===e},Z.expectRelational=function(e){this.isRelational(e)?this.next():this.unexpected(null,M.relational)},Z.isContextual=function(e){return this.match(M.name)&&this.state.value===e},Z.eatContextual=function(e){return this.state.value===e&&this.eat(M.name)},Z.expectContextual=function(e,t){this.eatContextual(e)||this.unexpected(null,t)},Z.canInsertSemicolon=function(){return this.match(M.eof)||this.match(M.braceR)||U.test(this.input.slice(this.state.lastTokEnd,this.state.start))},Z.isLineTerminator=function(){return this.eat(M.semi)||this.canInsertSemicolon()},Z.semicolon=function(){this.isLineTerminator()||this.unexpected(null,M.semi)},Z.expect=function(e,t){return this.eat(e)||this.unexpected(t,e)},Z.unexpected=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unexpected token";t&&"object"===("undefined"==typeof t?"undefined":Q(t))&&t.label&&(t="Unexpected token, expected "+t.label),this.raise(null!=e?e:this.state.start,t)};var ee=$.prototype;ee.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,M.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var te={kind:"loop"},ne={kind:"switch"};ee.stmtToDirective=function(e){var t=e.expression,n=this.startNodeAt(t.start,t.loc.start),r=this.startNodeAt(e.start,e.loc.start),i=this.input.slice(t.start,t.end),a=n.value=i.slice(1,-1);return this.addExtra(n,"raw",i),this.addExtra(n,"rawValue",a),r.value=this.finishNodeAt(n,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(r,"Directive",e.end,e.loc.end)},ee.parseStatement=function(e,t){this.match(M.at)&&this.parseDecorators(!0);var n=this.state.type,r=this.startNode();switch(n){case M._break:case M._continue:return this.parseBreakContinueStatement(r,n.keyword);case M._debugger:return this.parseDebuggerStatement(r);case M._do:return this.parseDoStatement(r);case M._for:return this.parseForStatement(r);case M._function:return e||this.unexpected(),this.parseFunctionStatement(r);case M._class:return e||this.unexpected(),this.takeDecorators(r),this.parseClass(r,!0);case M._if:return this.parseIfStatement(r);case M._return:return this.parseReturnStatement(r);case M._switch:return this.parseSwitchStatement(r);case M._throw:return this.parseThrowStatement(r);case M._try:return this.parseTryStatement(r);case M._let:case M._const:e||this.unexpected();case M._var:return this.parseVarStatement(r,n);case M._while:return this.parseWhileStatement(r);case M._with:return this.parseWithStatement(r);case M.braceL:return this.parseBlock();case M.semi:return this.parseEmptyStatement(r);case M._export:case M._import:if(this.hasPlugin("dynamicImport")&&this.lookahead().type===M.parenL)break;return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: module'")),n===M._import?this.parseImport(r):this.parseExport(r);case M.name:if("async"===this.state.value){var i=this.state.clone();if(this.next(),this.match(M._function)&&!this.canInsertSemicolon())return this.expect(M._function),this.parseFunction(r,!0,!1,!0);this.state=i}}var a=this.state.value,s=this.parseExpression();return n===M.name&&"Identifier"===s.type&&this.eat(M.colon)?this.parseLabeledStatement(r,a,s):this.parseExpressionStatement(r,s)},ee.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},ee.parseDecorators=function(e){for(;this.match(M.at);)this.state.decorators.push(this.parseDecorator());e&&this.match(M._export)||this.match(M._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},ee.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},ee.parseBreakContinueStatement=function(e,t){var n="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(M.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var r=void 0;for(r=0;r=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;o.name===t&&this.raise(n.start,"Label '"+t+"' is already declared")}for(var u=this.state.type.isLoop?"loop":this.match(M._switch)?"switch":null,l=this.state.labels.length-1;l>=0;l--){var c=this.state.labels[l];if(c.statementStart!==e.start)break;c.statementStart=this.state.start,c.kind=u}return this.state.labels.push({name:t,kind:u,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},ee.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},ee.parseBlock=function(e){var t=this.startNode();return this.expect(M.braceL),this.parseBlockBody(t,e,!1,M.braceR),this.finishNode(t,"BlockStatement")},ee.parseBlockBody=function(e,t,n,r){e.body=[],e.directives=[];for(var i=!1,a=void 0,s=void 0;!this.eat(r);){i||!this.state.containsOctal||s||(s=this.state.octalPosition);var o=this.parseStatement(!0,n);if(!t||i||"ExpressionStatement"!==o.type||"StringLiteral"!==o.expression.type||o.expression.extra.parenthesized)i=!0,e.body.push(o);else{var u=this.stmtToDirective(o);e.directives.push(u),void 0===a&&"use strict"===u.value.value&&(a=this.state.strict,this.setStrict(!0),s&&this.raise(s,"Octal literal in strict mode"))}}a===!1&&this.setStrict(!1)},ee.parseFor=function(e,t){return e.init=t,this.expect(M.semi),e.test=this.match(M.semi)?null:this.parseExpression(),this.expect(M.semi),e.update=this.match(M.parenR)?null:this.parseExpression(),this.expect(M.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},ee.parseForIn=function(e,t,n){var r=void 0;return n?(this.eatContextual("of"),r="ForAwaitStatement"):(r=this.match(M._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(M.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,r)},ee.parseVar=function(e,t,n){for(e.declarations=[],e.kind=n.keyword;;){var r=this.startNode();if(this.parseVarHead(r),this.eat(M.eq)?r.init=this.parseMaybeAssign(t):n!==M._const||this.match(M._in)||this.isContextual("of")?"Identifier"===r.id.type||t&&(this.match(M._in)||this.isContextual("of"))?r.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(r,"VariableDeclarator")),!this.eat(M.comma))break}return e},ee.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0,void 0,"variable declaration")},ee.parseFunction=function(e,t,n,r,i){var a=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,r),this.match(M.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||i||this.match(M.name)||this.match(M._yield)||this.unexpected(),(this.match(M.name)||this.match(M._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.state.inMethod=a,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},ee.parseFunctionParams=function(e){this.expect(M.parenL),e.params=this.parseBindingList(M.parenR)},ee.parseClass=function(e,t,n){return this.next(),this.parseClassId(e,t,n),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},ee.isClassProperty=function(){return this.match(M.eq)||this.isLineTerminator()},ee.isClassMutatorStarter=function(){return!1},ee.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var n=!1,r=!1,i=[],a=this.startNode();for(a.body=[],this.expect(M.braceL);!this.eat(M.braceR);)if(!this.eat(M.semi))if(this.match(M.at))i.push(this.parseDecorator());else{var s=this.startNode();i.length&&(s.decorators=i,i=[]);var o=!1,u=this.match(M.name)&&"static"===this.state.value,l=this.eat(M.star),c=!1,p=!1;if(this.parsePropertyName(s),s.static=u&&!this.match(M.parenL),s.static&&(l=this.eat(M.star),this.parsePropertyName(s)),!l){if(this.isClassProperty()){a.body.push(this.parseClassProperty(s));continue}"Identifier"===s.key.type&&!s.computed&&this.hasPlugin("classConstructorCall")&&"call"===s.key.name&&this.match(M.name)&&"constructor"===this.state.value&&(o=!0,this.parsePropertyName(s))}var f=!this.match(M.parenL)&&!s.computed&&"Identifier"===s.key.type&&"async"===s.key.name;if(f&&(this.hasPlugin("asyncGenerators")&&this.eat(M.star)&&(l=!0),p=!0,this.parsePropertyName(s)),s.kind="method",!s.computed){var h=s.key;p||l||this.isClassMutatorStarter()||"Identifier"!==h.type||this.match(M.parenL)||"get"!==h.name&&"set"!==h.name||(c=!0,s.kind=h.name,h=this.parsePropertyName(s));var d=!o&&!s.static&&("Identifier"===h.type&&"constructor"===h.name||"StringLiteral"===h.type&&"constructor"===h.value);d&&(r&&this.raise(h.start,"Duplicate constructor in the same class"),c&&this.raise(h.start,"Constructor can't have get/set modifier"),l&&this.raise(h.start,"Constructor can't be a generator"),p&&this.raise(h.start,"Constructor can't be an async function"),s.kind="constructor",r=!0);var y=s.static&&("Identifier"===h.type&&"prototype"===h.name||"StringLiteral"===h.type&&"prototype"===h.value);y&&this.raise(h.start,"Classes may not have static property named prototype")}if(o&&(n&&this.raise(s.start,"Duplicate constructor call in the same class"),s.kind="constructorCall",n=!0),"constructor"!==s.kind&&"constructorCall"!==s.kind||!s.decorators||this.raise(s.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(a,s,l,p),c){var m="get"===s.kind?0:1;if(s.params.length!==m){var b=s.start;"get"===s.kind?this.raise(b,"getter should have no params"):this.raise(b,"setter should have exactly one param")}}}i.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(a,"ClassBody"),this.state.strict=t},ee.parseClassProperty=function(e){return this.match(M.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.finishNode(e,"ClassProperty")},ee.parseClassMethod=function(e,t,n,r){this.parseMethod(t,n,r),e.body.push(this.finishNode(t,"ClassMethod"))},ee.parseClassId=function(e,t,n){this.match(M.name)?e.id=this.parseIdentifier():n||!t?e.id=null:this.unexpected()},ee.parseClassSuper=function(e){e.superClass=this.eat(M._extends)?this.parseExprSubscripts():null},ee.parseExport=function(e){if(this.next(),this.match(M.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var n=this.startNode();if(n.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(n,"ExportDefaultSpecifier")],this.match(M.comma)&&this.lookahead().type===M.star){this.expect(M.comma);var r=this.startNode();this.expect(M.star),this.expectContextual("as"),r.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(r,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(M._default)){var i=this.startNode(),a=!1;return this.eat(M._function)?i=this.parseFunction(i,!0,!1,!1,!0):this.match(M._class)?i=this.parseClass(i,!0,!0):(a=!0,i=this.parseMaybeAssign()),e.declaration=i,a&&this.semicolon(),this.checkExport(e,!0,!0),this.finishNode(e,"ExportDefaultDeclaration")}this.state.type.keyword||this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e,!0),this.finishNode(e,"ExportNamedDeclaration")},ee.parseExportDeclaration=function(){return this.parseStatement(!0)},ee.isExportDefaultSpecifier=function(){if(this.match(M.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(M._default))return!1;var e=this.lookahead();return e.type===M.comma||e.type===M.name&&"from"===e.value},ee.parseExportSpecifiersMaybe=function(e){this.eat(M.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},ee.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(M.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},ee.shouldParseExportDeclaration=function(){return this.isContextual("async")},ee.checkExport=function(e,t,n){if(t)if(n)this.checkDuplicateExports(e,"default");else if(e.specifiers&&e.specifiers.length)for(var r=e.specifiers,i=Array.isArray(r),a=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;this.checkDuplicateExports(o,o.exported.name)}else if(e.declaration)if("FunctionDeclaration"===e.declaration.type||"ClassDeclaration"===e.declaration.type)this.checkDuplicateExports(e,e.declaration.id.name);else if("VariableDeclaration"===e.declaration.type)for(var u=e.declaration.declarations,l=Array.isArray(u),c=0,u=l?u:u[Symbol.iterator]();;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;this.checkDeclaration(f.id)}if(this.state.decorators.length){var h=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&h||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},ee.checkDeclaration=function(e){if("ObjectPattern"===e.type)for(var t=e.properties,n=Array.isArray(t),r=0,t=n?t:t[Symbol.iterator]();;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this.checkDeclaration(a)}else if("ArrayPattern"===e.type)for(var s=e.elements,o=Array.isArray(s),u=0,s=o?s:s[Symbol.iterator]();;){var l;if(o){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;c&&this.checkDeclaration(c)}else"ObjectProperty"===e.type?this.checkDeclaration(e.value):"RestElement"===e.type||"RestProperty"===e.type?this.checkDeclaration(e.argument):"Identifier"===e.type&&this.checkDuplicateExports(e,e.name)},ee.checkDuplicateExports=function(e,t){this.state.exportedIdentifiers.indexOf(t)>-1&&this.raiseDuplicateExportError(e,t),this.state.exportedIdentifiers.push(t)},ee.raiseDuplicateExportError=function(e,t){this.raise(e.start,"default"===t?"Only one default export allowed per module.":"`"+t+"` has already been exported. Exported identifiers must be unique.")},ee.parseExportSpecifiers=function(){var e=[],t=!0,n=void 0;for(this.expect(M.braceL);!this.eat(M.braceR);){if(t)t=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;var r=this.match(M._default);r&&!n&&(n=!0);var i=this.startNode();i.local=this.parseIdentifier(r),i.exported=this.eatContextual("as")?this.parseIdentifier(!0):i.local.__clone(),e.push(this.finishNode(i,"ExportSpecifier"))}return n&&!this.isContextual("from")&&this.unexpected(),e},ee.parseImport=function(e){return this.next(),this.match(M.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(M.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},ee.parseImportSpecifiers=function(e){var t=!0;if(this.match(M.name)){var n=this.state.start,r=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),n,r)),!this.eat(M.comma))return}if(this.match(M.star)){var i=this.startNode();return this.next(),this.expectContextual("as"),i.local=this.parseIdentifier(),this.checkLVal(i.local,!0,void 0,"import namespace specifier"),void e.specifiers.push(this.finishNode(i,"ImportNamespaceSpecifier"))}for(this.expect(M.braceL);!this.eat(M.braceR);){if(t)t=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;var a=this.startNode();a.imported=this.parseIdentifier(!0),a.local=this.eatContextual("as")?this.parseIdentifier():a.imported.__clone(),this.checkLVal(a.local,!0,void 0,"import specifier"),e.specifiers.push(this.finishNode(a,"ImportSpecifier"))}},ee.parseImportSpecifierDefault=function(e,t,n){var r=this.startNodeAt(t,n);return r.local=e,this.checkLVal(r.local,!0,void 0,"default import specifier"),this.finishNode(r,"ImportDefaultSpecifier")};var ie=$.prototype;ie.toAssignable=function(e,t,n){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var r=e.properties,i=Array.isArray(r),a=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,t,"object destructuring pattern")}break;case"ObjectProperty":this.toAssignable(e.value,t,n);break;case"SpreadProperty":e.type="RestProperty";break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t,n);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:var u="Invalid left-hand side"+(n?" in "+n:"expression");this.raise(e.start,u)}return e},ie.toAssignableList=function(e,t,n){var r=e.length;if(r){var i=e[r-1];if(i&&"RestElement"===i.type)--r;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var a=i.argument;this.toAssignable(a,t,n),"Identifier"!==a.type&&"MemberExpression"!==a.type&&"ArrayPattern"!==a.type&&this.unexpected(a.start),--r}}for(var s=0;s=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;"ObjectProperty"===l.type&&(l=l.value),this.checkLVal(l,t,n,"object destructuring pattern")}break;case"ArrayPattern":for(var c=e.elements,p=Array.isArray(c),f=0,c=p?c:c[Symbol.iterator]();;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;d&&this.checkLVal(d,t,n,"array destructuring pattern")}break;case"AssignmentPattern":this.checkLVal(e.left,t,n,"assignment pattern");break;case"RestProperty":this.checkLVal(e.argument,t,n,"rest property");break;case"RestElement":this.checkLVal(e.argument,t,n,"rest element");break;default:var y=(t?"Binding invalid":"Invalid")+" left-hand side"+(r?" in "+r:"expression");this.raise(e.start,y)}};var ae=$.prototype;ae.checkPropClash=function(e,t){if(!e.computed){var n=e.key,r=void 0;switch(n.type){case"Identifier":r=n.name;break;case"StringLiteral":case"NumericLiteral":r=String(n.value);break;default:return}"__proto__"!==r||e.kind||(t.proto&&this.raise(n.start,"Redefinition of __proto__ property"),t.proto=!0)}},ae.parseExpression=function(e,t){var n=this.state.start,r=this.state.startLoc,i=this.parseMaybeAssign(e,t);if(this.match(M.comma)){var a=this.startNodeAt(n,r);for(a.expressions=[i];this.eat(M.comma);)a.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(a.expressions),this.finishNode(a,"SequenceExpression")}return i},ae.parseMaybeAssign=function(e,t,n,r){var i=this.state.start,a=this.state.startLoc;if(this.match(M._yield)&&this.state.inGenerator){var s=this.parseYield();return n&&(s=n.call(this,s,i,a)),s}var o=void 0;t?o=!1:(t={start:0},o=!0),(this.match(M.parenL)||this.match(M.name))&&(this.state.potentialArrowAt=this.state.start);var u=this.parseMaybeConditional(e,t,r);if(n&&(u=n.call(this,u,i,a)),this.state.type.isAssign){var l=this.startNodeAt(i,a);if(l.operator=this.state.value,l.left=this.match(M.eq)?this.toAssignable(u,void 0,"assignment expression"):u,t.start=0,this.checkLVal(u,void 0,void 0,"assignment expression"),u.extra&&u.extra.parenthesized){var c=void 0;"ObjectPattern"===u.type?c="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===u.type&&(c="`([a]) = 0` use `([a] = 0)`"),c&&this.raise(u.start,"You're trying to assign to a parenthesized expression, eg. instead of "+c)}return this.next(),l.right=this.parseMaybeAssign(e),this.finishNode(l,"AssignmentExpression")}return o&&t.start&&this.unexpected(t.start),u},ae.parseMaybeConditional=function(e,t,n){var r=this.state.start,i=this.state.startLoc,a=this.parseExprOps(e,t);return t&&t.start?a:this.parseConditional(a,e,r,i,n)},ae.parseConditional=function(e,t,n,r){if(this.eat(M.question)){var i=this.startNodeAt(n,r);return i.test=e,i.consequent=this.parseMaybeAssign(),this.expect(M.colon),i.alternate=this.parseMaybeAssign(t),this.finishNode(i,"ConditionalExpression")}return e},ae.parseExprOps=function(e,t){var n=this.state.start,r=this.state.startLoc,i=this.parseMaybeUnary(t);return t&&t.start?i:this.parseExprOp(i,n,r,-1,e)},ae.parseExprOp=function(e,t,n,r,i){var a=this.state.type.binop;if(!(null==a||i&&this.match(M._in))&&a>r){var s=this.startNodeAt(t,n);s.left=e,s.operator=this.state.value,"**"!==s.operator||"UnaryExpression"!==e.type||!e.extra||e.extra.parenthesizedArgument||e.extra.parenthesized||this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var u=this.state.start,l=this.state.startLoc;return s.right=this.parseExprOp(this.parseMaybeUnary(),u,l,o.rightAssociative?a-1:a,i),this.finishNode(s,o===M.logicalOR||o===M.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(s,t,n,r,i)}return e},ae.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),n=this.match(M.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var r=this.state.type;return t.argument=this.parseMaybeUnary(),this.addExtra(t,"parenthesizedArgument",!(r!==M.parenL||t.argument.extra&&t.argument.extra.parenthesized)),e&&e.start&&this.unexpected(e.start),n?this.checkLVal(t.argument,void 0,void 0,"prefix operation"):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,n?"UpdateExpression":"UnaryExpression")}var i=this.state.start,a=this.state.startLoc,s=this.parseExprSubscripts(e);if(e&&e.start)return s;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(i,a);o.operator=this.state.value,o.prefix=!1,o.argument=s,this.checkLVal(s,void 0,void 0,"postfix operation"),this.next(),s=this.finishNode(o,"UpdateExpression")}return s},ae.parseExprSubscripts=function(e){var t=this.state.start,n=this.state.startLoc,r=this.state.potentialArrowAt,i=this.parseExprAtom(e);
-return"ArrowFunctionExpression"===i.type&&i.start===r?i:e&&e.start?i:this.parseSubscripts(i,t,n)},ae.parseSubscripts=function(e,t,n,r){for(;;){if(!r&&this.eat(M.doubleColon)){var i=this.startNodeAt(t,n);return i.object=e,i.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(i,"BindExpression"),t,n,r)}if(this.eat(M.dot)){var a=this.startNodeAt(t,n);a.object=e,a.property=this.parseIdentifier(!0),a.computed=!1,e=this.finishNode(a,"MemberExpression")}else if(this.eat(M.bracketL)){var s=this.startNodeAt(t,n);s.object=e,s.property=this.parseExpression(),s.computed=!0,this.expect(M.bracketR),e=this.finishNode(s,"MemberExpression")}else if(!r&&this.match(M.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var u=this.startNodeAt(t,n);if(u.callee=e,u.arguments=this.parseCallExpressionArguments(M.parenR,o),"Import"===u.callee.type&&1!==u.arguments.length&&this.raise(u.start,"import() requires exactly one argument"),e=this.finishNode(u,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,n),u);this.toReferencedList(u.arguments)}else{if(!this.match(M.backQuote))return e;var l=this.startNodeAt(t,n);l.tag=e,l.quasi=this.parseTemplate(),e=this.finishNode(l,"TaggedTemplateExpression")}}},ae.parseCallExpressionArguments=function(e,t){for(var n=void 0,r=[],i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(M.comma),this.eat(e))break;this.match(M.parenL)&&!n&&(n=this.state.start),r.push(this.parseExprListItem(void 0,t?{start:0}:void 0))}return t&&n&&this.shouldParseAsyncArrow()&&this.unexpected(),r},ae.shouldParseAsyncArrow=function(){return this.match(M.arrow)},ae.parseAsyncArrowFromCallExpression=function(e,t){return this.expect(M.arrow),this.parseArrowExpression(e,t.arguments,!0)},ae.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},ae.parseExprAtom=function(e){var t=void 0,n=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case M._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.match(M.parenL)||this.match(M.bracketL)||this.match(M.dot)||this.unexpected(),this.match(M.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(t.start,"super() outside of class constructor"),this.finishNode(t,"Super");case M._import:return this.hasPlugin("dynamicImport")||this.unexpected(),t=this.startNode(),this.next(),this.match(M.parenL)||this.unexpected(null,M.parenL),this.finishNode(t,"Import");case M._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case M._yield:this.state.inGenerator&&this.unexpected();case M.name:t=this.startNode();var r="await"===this.state.value&&this.state.inAsync,i=this.shouldAllowYieldIdentifier(),a=this.parseIdentifier(r||i);if("await"===a.name){if(this.state.inAsync||this.inModule)return this.parseAwait(t)}else{if("async"===a.name&&this.match(M._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(t,!1,!1,!0);if(n&&"async"===a.name&&this.match(M.name)){var s=[this.parseIdentifier()];return this.expect(M.arrow),this.parseArrowExpression(t,s,!0)}}return n&&!this.canInsertSemicolon()&&this.eat(M.arrow)?this.parseArrowExpression(t,[a]):a;case M._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var u=this.state.inFunction,l=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=u,this.state.labels=l,this.finishNode(o,"DoExpression")}case M.regexp:var c=this.state.value;return t=this.parseLiteral(c.value,"RegExpLiteral"),t.pattern=c.pattern,t.flags=c.flags,t;case M.num:return this.parseLiteral(this.state.value,"NumericLiteral");case M.string:return this.parseLiteral(this.state.value,"StringLiteral");case M._null:return t=this.startNode(),this.next(),this.finishNode(t,"NullLiteral");case M._true:case M._false:return t=this.startNode(),t.value=this.match(M._true),this.next(),this.finishNode(t,"BooleanLiteral");case M.parenL:return this.parseParenAndDistinguishExpression(null,null,n);case M.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(M.bracketR,!0,e),this.toReferencedList(t.elements),this.finishNode(t,"ArrayExpression");case M.braceL:return this.parseObj(!1,e);case M._function:return this.parseFunctionExpression();case M.at:this.parseDecorators();case M._class:return t=this.startNode(),this.takeDecorators(t),this.parseClass(t,!1);case M._new:return this.parseNew();case M.backQuote:return this.parseTemplate();case M.doubleColon:t=this.startNode(),this.next(),t.object=null;var p=t.callee=this.parseNoCallExpr();if("MemberExpression"===p.type)return this.finishNode(t,"BindExpression");this.raise(p.start,"Binding should be performed on object property.");default:this.unexpected()}},ae.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(M.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},ae.parseMetaProperty=function(e,t,n){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==n&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+n),this.finishNode(e,"MetaProperty")},ae.parseLiteral=function(e,t){var n=this.startNode();return this.addExtra(n,"rawValue",e),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),n.value=e,this.next(),this.finishNode(n,t)},ae.parseParenExpression=function(){this.expect(M.parenL);var e=this.parseExpression();return this.expect(M.parenR),e},ae.parseParenAndDistinguishExpression=function(e,t,n){e=e||this.state.start,t=t||this.state.startLoc;var r=void 0;this.expect(M.parenL);for(var i=this.state.start,a=this.state.startLoc,s=[],o=!0,u={start:0},l=void 0,c=void 0,p={start:0};!this.match(M.parenR);){if(o)o=!1;else if(this.expect(M.comma,p.start||null),this.match(M.parenR)){c=this.state.start;break}if(this.match(M.ellipsis)){var f=this.state.start,h=this.state.startLoc;l=this.state.start,s.push(this.parseParenItem(this.parseRest(),h,f));break}s.push(this.parseMaybeAssign(!1,u,this.parseParenItem,p))}var d=this.state.start,y=this.state.startLoc;this.expect(M.parenR);var m=this.startNodeAt(e,t);if(n&&this.shouldParseArrow()&&(m=this.parseArrow(m))){for(var b=s,g=Array.isArray(b),v=0,b=g?b:b[Symbol.iterator]();;){var x;if(g){if(v>=b.length)break;x=b[v++]}else{if(v=b.next(),v.done)break;x=v.value}var _=x;_.extra&&_.extra.parenthesized&&this.unexpected(_.extra.parenStart)}return this.parseArrowExpression(m,s)}return s.length||this.unexpected(this.state.lastTokStart),c&&this.unexpected(c),l&&this.unexpected(l),u.start&&this.unexpected(u.start),p.start&&this.unexpected(p.start),s.length>1?(r=this.startNodeAt(i,a),r.expressions=s,this.toReferencedList(r.expressions),this.finishNodeAt(r,"SequenceExpression",d,y)):r=s[0],this.addExtra(r,"parenthesized",!0),this.addExtra(r,"parenStart",e),r},ae.shouldParseArrow=function(){return!this.canInsertSemicolon()},ae.parseArrow=function(e){if(this.eat(M.arrow))return e},ae.parseParenItem=function(e){return e},ae.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.eat(M.dot)?this.parseMetaProperty(e,t,"target"):(e.callee=this.parseNoCallExpr(),this.eat(M.parenL)?(e.arguments=this.parseExprList(M.parenR),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression"))},ae.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(M.backQuote),this.finishNode(e,"TemplateElement")},ae.parseTemplate=function(){var e=this.startNode();this.next(),e.expressions=[];var t=this.parseTemplateElement();for(e.quasis=[t];!t.tail;)this.expect(M.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(M.braceR),e.quasis.push(t=this.parseTemplateElement());return this.next(),this.finishNode(e,"TemplateLiteral")},ae.parseObj=function(e,t){var n=[],r=Object.create(null),i=!0,a=this.startNode();a.properties=[],this.next();for(var s=null;!this.eat(M.braceR);){if(i)i=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;for(;this.match(M.at);)n.push(this.parseDecorator());var o=this.startNode(),u=!1,l=!1,c=void 0,p=void 0;if(n.length&&(o.decorators=n,n=[]),this.hasPlugin("objectRestSpread")&&this.match(M.ellipsis)){if(o=this.parseSpread(),o.type=e?"RestProperty":"SpreadProperty",a.properties.push(o),!e)continue;var f=this.state.start;if(null===s){if(this.eat(M.braceR))break;if(this.match(M.comma)&&this.lookahead().type===M.braceR)continue;s=f;continue}this.unexpected(s,"Cannot have multiple rest elements when destructuring")}if(o.method=!1,o.shorthand=!1,(e||t)&&(c=this.state.start,p=this.state.startLoc),e||(u=this.eat(M.star)),!e&&this.isContextual("async")){u&&this.unexpected();var h=this.parseIdentifier();this.match(M.colon)||this.match(M.parenL)||this.match(M.braceR)||this.match(M.eq)||this.match(M.comma)?o.key=h:(l=!0,this.hasPlugin("asyncGenerators")&&(u=this.eat(M.star)),this.parsePropertyName(o))}else this.parsePropertyName(o);this.parseObjPropValue(o,c,p,u,l,e,t),this.checkPropClash(o,r),o.shorthand&&this.addExtra(o,"shorthand",!0),a.properties.push(o)}return null!==s&&this.unexpected(s,"The rest element has to be the last element when destructuring"),n.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(a,e?"ObjectPattern":"ObjectExpression")},ae.parseObjPropValue=function(e,t,n,r,i,a,s){if(i||r||this.match(M.parenL))return a&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,r,i),this.finishNode(e,"ObjectMethod");if(this.eat(M.colon))return e.value=a?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,s),this.finishNode(e,"ObjectProperty");if(!(a||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.match(M.comma)||this.match(M.braceR))){(r||i)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e,!1);var o="get"===e.kind?0:1;if(e.params.length!==o){var u=e.start;"get"===e.kind?this.raise(u,"getter should have no params"):this.raise(u,"setter should have exactly one param")}return this.finishNode(e,"ObjectMethod")}return e.computed||"Identifier"!==e.key.type?void this.unexpected():(a?(this.checkReservedWord(e.key.name,e.key.start,!0,!0),e.value=this.parseMaybeDefault(t,n,e.key.__clone())):this.match(M.eq)&&s?(s.start||(s.start=this.state.start),e.value=this.parseMaybeDefault(t,n,e.key.__clone())):e.value=e.key.__clone(),e.shorthand=!0,this.finishNode(e,"ObjectProperty"))},ae.parsePropertyName=function(e){return this.eat(M.bracketL)?(e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(M.bracketR),e.key):(e.computed=!1,e.key=this.match(M.num)||this.match(M.string)?this.parseExprAtom():this.parseIdentifier(!0))},ae.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,e.async=!!t},ae.parseMethod=function(e,t,n){var r=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,n),this.expect(M.parenL),e.params=this.parseBindingList(M.parenR),e.generator=t,this.parseFunctionBody(e),this.state.inMethod=r,e},ae.parseArrowExpression=function(e,t,n){return this.initFunction(e,n),e.params=this.toAssignableList(t,!0,"arrow function parameters"),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},ae.parseFunctionBody=function(e,t){var n=t&&!this.match(M.braceL),r=this.state.inAsync;if(this.state.inAsync=e.async,n)e.body=this.parseMaybeAssign(),e.expression=!0;else{var i=this.state.inFunction,a=this.state.inGenerator,s=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=i,this.state.inGenerator=a,this.state.labels=s}this.state.inAsync=r;var o=this.state.strict,u=!1;if(t&&(o=!0),!n&&e.body.directives.length)for(var l=e.body.directives,c=Array.isArray(l),p=0,l=c?l:l[Symbol.iterator]();;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var h=f;if("use strict"===h.value.value){u=!0,o=!0;break}}if(u&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),o){var d=Object.create(null),y=this.state.strict;u&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0,void 0,"function name");for(var m=e.params,b=Array.isArray(m),g=0,m=b?m:m[Symbol.iterator]();;){var v;if(b){if(g>=m.length)break;v=m[g++]}else{if(g=m.next(),g.done)break;v=g.value}var x=v;u&&"Identifier"!==x.type&&this.raise(x.start,"Non-simple parameter in strict mode"),this.checkLVal(x,!0,d,"function parameter list")}this.state.strict=y}},ae.parseExprList=function(e,t,n){for(var r=[],i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(M.comma),this.eat(e))break;r.push(this.parseExprListItem(t,n))}return r},ae.parseExprListItem=function(e,t){var n=void 0;return n=e&&this.match(M.comma)?null:this.match(M.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t,this.parseParenItem)},ae.parseIdentifier=function(e){var t=this.startNode();return this.match(M.name)?(e||this.checkReservedWord(this.state.value,this.state.start,!1,!1),t.name=this.state.value):e&&this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),t.loc.identifierName=t.name,this.next(),this.finishNode(t,"Identifier")},ae.checkReservedWord=function(e,t,n,r){(this.isReservedWord(e)||n&&this.isKeyword(e))&&this.raise(t,e+" is a reserved word"),this.state.strict&&(S.strict(e)||r&&S.strictBind(e))&&this.raise(t,e+" is a reserved word in strict mode")},ae.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.match(M.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},ae.parseYield=function(){var e=this.startNode();return this.next(),this.match(M.semi)||this.canInsertSemicolon()||!this.match(M.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(M.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")};var se=$.prototype,oe=["leadingComments","trailingComments","innerComments"],ue=function(){function e(t,n,r){_(this,e),this.type="",this.start=t,this.end=0,this.loc=new J(n),r&&(this.loc.filename=r)}return e.prototype.__clone=function(){var t=new e;for(var n in this)oe.indexOf(n)<0&&(t[n]=this[n]);return t},e}();se.startNode=function(){return new ue(this.state.start,this.state.startLoc,this.filename)},se.startNodeAt=function(e,t){return new ue(e,t,this.filename)},se.finishNode=function(e,t){return E.call(this,e,t,this.state.lastTokEnd,this.state.lastTokEndLoc)},se.finishNodeAt=function(e,t,n,r){return E.call(this,e,t,n,r)};var le=$.prototype;le.raise=function(e,t){var n=d(this.input,e);t+=" ("+n.line+":"+n.column+")";var r=new SyntaxError(t);throw r.pos=e,r.loc=n,r};var ce=$.prototype;ce.addComment=function(e){this.filename&&(e.loc.filename=this.filename),this.state.trailingComments.push(e),this.state.leadingComments.push(e)},ce.processComment=function(e){if(!("Program"===e.type&&e.body.length>0)){var t=this.state.commentStack,n=void 0,r=void 0,i=void 0,a=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(r=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var s=A(t);t.length>0&&s.trailingComments&&s.trailingComments[0].start>=e.end&&(r=s.trailingComments,s.trailingComments=null)}for(;t.length>0&&A(t).start>=e.start;)n=t.pop();if(n){if(n.leadingComments)if(n!==e&&A(n.leadingComments).end<=e.start)e.leadingComments=n.leadingComments,n.leadingComments=null;else for(i=n.leadingComments.length-2;i>=0;--i)if(n.leadingComments[i].end<=e.start){e.leadingComments=n.leadingComments.splice(0,i+1);break}}else if(this.state.leadingComments.length>0)if(A(this.state.leadingComments).end<=e.start){if(this.state.commentPreviousNode)for(a=0;a0&&(e.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(i=0;ie.start);i++);e.leadingComments=this.state.leadingComments.slice(0,i),0===e.leadingComments.length&&(e.leadingComments=null),r=this.state.leadingComments.slice(i),0===r.length&&(r=null)}this.state.commentPreviousNode=e,r&&(r.length&&r[0].start>=e.start&&A(r).end<=e.end?e.innerComments=r:e.trailingComments=r),t.push(e)}};var pe=$.prototype;pe.flowParseTypeInitialiser=function(e,t){var n=this.state.inType;this.state.inType=!0,this.expect(e||M.colon),t&&(this.match(M.bitwiseAND)||this.match(M.bitwiseOR))&&this.next();var r=this.flowParseType();return this.state.inType=n,r},pe.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},pe.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),n=this.startNode(),r=this.startNode();this.isRelational("<")?n.typeParameters=this.flowParseTypeParameterDeclaration():n.typeParameters=null,this.expect(M.parenL);var i=this.flowParseFunctionTypeParams();return n.params=i.params,n.rest=i.rest,this.expect(M.parenR),n.returnType=this.flowParseTypeInitialiser(),r.typeAnnotation=this.finishNode(n,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(r,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},pe.flowParseDeclare=function(e){return this.match(M._class)?this.flowParseDeclareClass(e):this.match(M._function)?this.flowParseDeclareFunction(e):this.match(M._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.lookahead().type===M.dot?this.flowParseDeclareModuleExports(e):this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},pe.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},pe.flowParseDeclareModule=function(e){this.next(),this.match(M.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),n=t.body=[];for(this.expect(M.braceL);!this.match(M.braceR);){var r=this.startNode();this.expectContextual("declare","Unexpected token. Only declares are allowed inside declare module"),n.push(this.flowParseDeclare(r))}return this.expect(M.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},pe.flowParseDeclareModuleExports=function(e){return this.expectContextual("module"),this.expect(M.dot),this.expectContextual("exports"),e.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(e,"DeclareModuleExports")},pe.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},pe.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},pe.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(M._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(M.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(M.comma))}e.body=this.flowParseObjectType(t)},pe.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},pe.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},pe.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(M.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},pe.flowParseTypeParameter=function(){var e=this.startNode(),t=this.flowParseVariance(),n=this.flowParseTypeAnnotatableIdentifier();return e.name=n.name,e.variance=t,e.bound=n.typeAnnotation,this.match(M.eq)&&(this.eat(M.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},pe.flowParseTypeParameterDeclaration=function(){var e=this.state.inType,t=this.startNode();t.params=[],this.state.inType=!0,this.isRelational("<")||this.match(M.jsxTagStart)?this.next():this.unexpected();do t.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(M.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterDeclaration")},pe.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(M.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},pe.flowParseObjectPropertyKey=function(){return this.match(M.num)||this.match(M.string)?this.parseExprAtom():this.parseIdentifier(!0)},pe.flowParseObjectTypeIndexer=function(e,t,n){return e.static=t,this.expect(M.bracketL),this.lookahead().type===M.colon?(e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser()):(e.id=null,e.key=this.flowParseType()),this.expect(M.bracketR),e.value=this.flowParseTypeInitialiser(),e.variance=n,this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},pe.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(M.parenL);this.match(M.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(M.parenR)||this.expect(M.comma);return this.eat(M.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(M.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},pe.flowParseObjectTypeMethod=function(e,t,n,r){var i=this.startNodeAt(e,t);return i.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),i.static=n,i.key=r,i.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(i,"ObjectTypeProperty")},pe.flowParseObjectTypeCallProperty=function(e,t){var n=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(n),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},pe.flowParseObjectType=function(e,t){var n=this.state.inType;this.state.inType=!0;var r=this.startNode(),i=void 0,a=void 0,s=!1;r.callProperties=[],r.properties=[],r.indexers=[];var o=void 0,u=void 0;for(t&&this.match(M.braceBarL)?(this.expect(M.braceBarL),o=M.braceBarR,u=!0):(this.expect(M.braceL),o=M.braceR,u=!1),r.exact=u;!this.match(o);){var l=!1,c=this.state.start,p=this.state.startLoc;i=this.startNode(),e&&this.isContextual("static")&&this.lookahead().type!==M.colon&&(this.next(),s=!0);var f=this.state.start,h=this.flowParseVariance();this.match(M.bracketL)?r.indexers.push(this.flowParseObjectTypeIndexer(i,s,h)):this.match(M.parenL)||this.isRelational("<")?(h&&this.unexpected(f),r.callProperties.push(this.flowParseObjectTypeCallProperty(i,e))):(a=this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(M.parenL)?(h&&this.unexpected(f),r.properties.push(this.flowParseObjectTypeMethod(c,p,s,a))):(this.eat(M.question)&&(l=!0),i.key=a,i.value=this.flowParseTypeInitialiser(),i.optional=l,i.static=s,i.variance=h,this.flowObjectTypeSemicolon(),r.properties.push(this.finishNode(i,"ObjectTypeProperty")))),s=!1}this.expect(o);var d=this.finishNode(r,"ObjectTypeAnnotation");return this.state.inType=n,d},pe.flowObjectTypeSemicolon=function(){this.eat(M.semi)||this.eat(M.comma)||this.match(M.braceR)||this.match(M.braceBarR)||this.unexpected()},pe.flowParseQualifiedTypeIdentifier=function(e,t,n){e=e||this.state.start,t=t||this.state.startLoc;for(var r=n||this.parseIdentifier();this.eat(M.dot);){var i=this.startNodeAt(e,t);i.qualification=r,i.id=this.parseIdentifier(),r=this.finishNode(i,"QualifiedTypeIdentifier")}return r},pe.flowParseGenericType=function(e,t,n){var r=this.startNodeAt(e,t);return r.typeParameters=null,r.id=this.flowParseQualifiedTypeIdentifier(e,t,n),this.isRelational("<")&&(r.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(r,"GenericTypeAnnotation")},pe.flowParseTypeofType=function(){var e=this.startNode();return this.expect(M._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},pe.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(M.bracketL);this.state.pos0&&void 0!==arguments[0]?arguments[0]:[],t={params:e,rest:null};this.match(M.name);)t.params.push(this.flowParseFunctionTypeParam()),this.match(M.parenR)||this.expect(M.comma);return this.eat(M.ellipsis)&&(t.rest=this.flowParseFunctionTypeParam()),t},pe.flowIdentToTypeAnnotation=function(e,t,n,r){switch(r.name){case"any":return this.finishNode(n,"AnyTypeAnnotation");case"void":return this.finishNode(n,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(n,"BooleanTypeAnnotation");case"mixed":return this.finishNode(n,"MixedTypeAnnotation");case"empty":return this.finishNode(n,"EmptyTypeAnnotation");case"number":return this.finishNode(n,"NumberTypeAnnotation");case"string":return this.finishNode(n,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,r)}},pe.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,n=this.startNode(),r=void 0,i=void 0,a=!1,s=this.state.noAnonFunctionType;switch(this.state.type){case M.name:return this.flowIdentToTypeAnnotation(e,t,n,this.parseIdentifier());case M.braceL:return this.flowParseObjectType(!1,!1);case M.braceBarL:return this.flowParseObjectType(!1,!0);case M.bracketL:return this.flowParseTupleType();case M.relational:if("<"===this.state.value)return n.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(M.parenL),r=this.flowParseFunctionTypeParams(),n.params=r.params,n.rest=r.rest,this.expect(M.parenR),this.expect(M.arrow),n.returnType=this.flowParseType(),this.finishNode(n,"FunctionTypeAnnotation");break;case M.parenL:if(this.next(),!this.match(M.parenR)&&!this.match(M.ellipsis))if(this.match(M.name)){var o=this.lookahead().type;a=o!==M.question&&o!==M.colon}else a=!0;if(a){if(this.state.noAnonFunctionType=!1,i=this.flowParseType(),this.state.noAnonFunctionType=s,this.state.noAnonFunctionType||!(this.match(M.comma)||this.match(M.parenR)&&this.lookahead().type===M.arrow))return this.expect(M.parenR),i;this.eat(M.comma)}return r=i?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(i)]):this.flowParseFunctionTypeParams(),n.params=r.params,n.rest=r.rest,this.expect(M.parenR),this.expect(M.arrow),n.returnType=this.flowParseType(),n.typeParameters=null,this.finishNode(n,"FunctionTypeAnnotation");case M.string:return n.value=this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"StringLiteralTypeAnnotation");case M._true:case M._false:return n.value=this.match(M._true),this.next(),this.finishNode(n,"BooleanLiteralTypeAnnotation");case M.plusMin:if("-"===this.state.value)return this.next(),this.match(M.num)||this.unexpected(),n.value=-this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"NumericLiteralTypeAnnotation");case M.num:return n.value=this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"NumericLiteralTypeAnnotation");case M._null:return n.value=this.match(M._null),this.next(),this.finishNode(n,"NullLiteralTypeAnnotation");case M._this:return n.value=this.match(M._this),this.next(),this.finishNode(n,"ThisTypeAnnotation");case M.star:return this.next(),this.finishNode(n,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},pe.flowParsePostfixType=function(){for(var e=this.state.start,t=this.state.startLoc,n=this.flowParsePrimaryType();!this.canInsertSemicolon()&&this.match(M.bracketL);){var r=this.startNodeAt(e,t);r.elementType=n,this.expect(M.bracketL),this.expect(M.bracketR),n=this.finishNode(r,"ArrayTypeAnnotation")}return n},pe.flowParsePrefixType=function(){var e=this.startNode();return this.eat(M.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},pe.flowParseAnonFunctionWithoutParens=function(){var e=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(M.arrow)){var t=this.startNodeAt(e.start,e.loc);return t.params=[this.reinterpretTypeAsFunctionTypeParam(e)],t.rest=null,t.returnType=this.flowParseType(),t.typeParameters=null,this.finishNode(t,"FunctionTypeAnnotation")}return e},pe.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParseAnonFunctionWithoutParens();for(e.types=[t];this.eat(M.bitwiseAND);)e.types.push(this.flowParseAnonFunctionWithoutParens());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},pe.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(M.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},pe.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},pe.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},pe.flowParseTypeAnnotatableIdentifier=function(){var e=this.parseIdentifier();return this.match(M.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(e,e.type)),e},pe.typeCastToParameter=function(e){return e.expression.typeAnnotation=e.typeAnnotation,this.finishNodeAt(e.expression,e.expression.type,e.typeAnnotation.end,e.typeAnnotation.loc.end)},pe.flowParseVariance=function(){var e=null;return this.match(M.plusMin)&&("+"===this.state.value?e="plus":"-"===this.state.value&&(e="minus"),
-this.next()),e};var fe=function(e){e.extend("parseFunctionBody",function(e){return function(t,n){return this.match(M.colon)&&!n&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,n)}}),e.extend("parseStatement",function(e){return function(t,n){if(this.state.strict&&this.match(M.name)&&"interface"===this.state.value){var r=this.startNode();return this.next(),this.flowParseInterface(r)}return e.call(this,t,n)}}),e.extend("parseExpressionStatement",function(e){return function(t,n){if("Identifier"===n.type)if("declare"===n.name){if(this.match(M._class)||this.match(M.name)||this.match(M._function)||this.match(M._var))return this.flowParseDeclare(t)}else if(this.match(M.name)){if("interface"===n.name)return this.flowParseInterface(t);if("type"===n.name)return this.flowParseTypeAlias(t)}return e.call(this,t,n)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseConditional",function(e){return function(t,n,r,i,a){if(a&&this.match(M.question)){var s=this.state.clone();try{return e.call(this,t,n,r,i)}catch(e){if(e instanceof SyntaxError)return this.state=s,a.start=e.pos||this.state.start,t;throw e}}return e.call(this,t,n,r,i)}}),e.extend("parseParenItem",function(e){return function(t,n,r){if(t=e.call(this,t,n,r),this.eat(M.question)&&(t.optional=!0),this.match(M.colon)){var i=this.startNodeAt(n,r);return i.expression=t,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")}return t}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var n=this.startNode();return this.next(),this.match(M.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(n)}if(this.isContextual("interface")){t.exportKind="type";var r=this.startNode();return this.next(),this.flowParseInterface(r)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("parsePropertyName",function(e){return function(t){var n=this.state.inType;this.state.inType=!0;var r=e.call(this,t);return this.state.inType=n,r}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(M.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(t,n,r){return"TypeCastExpression"===t.type?e.call(this,this.typeCastToParameter(t),n,r):e.call(this,t,n,r)}}),e.extend("toAssignableList",function(e){return function(t,n,r){for(var i=0;i",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},de=/^[\da-fA-F]+$/,ye=/^\d+$/;K.j_oTag=new q("...",!0,!0),M.jsxName=new I("jsxName"),M.jsxText=new I("jsxText",{beforeExpr:!0}),M.jsxTagStart=new I("jsxTagStart",{startsExpr:!0}),M.jsxTagEnd=new I("jsxTagEnd"),M.jsxTagStart.updateContext=function(){this.state.context.push(K.j_expr),this.state.context.push(K.j_oTag),this.state.exprAllowed=!1},M.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===K.j_oTag&&e===M.slash||t===K.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===K.j_expr):this.state.exprAllowed=!0};var me=$.prototype;me.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var n=this.input.charCodeAt(this.state.pos);switch(n){case 60:case 123:return this.state.pos===this.state.start?60===n&&this.state.exprAllowed?(++this.state.pos,this.finishToken(M.jsxTagStart)):this.getTokenFromCode(n):(e+=this.input.slice(t,this.state.pos),this.finishToken(M.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:p(n)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},me.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),n=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,n=e?"\n":"\r\n"):n=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,n},me.jsxReadString=function(e){for(var t="",n=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var r=this.input.charCodeAt(this.state.pos);if(r===e)break;38===r?(t+=this.input.slice(n,this.state.pos),t+=this.jsxReadEntity(),n=this.state.pos):p(r)?(t+=this.input.slice(n,this.state.pos),t+=this.jsxReadNewLine(!1),n=this.state.pos):++this.state.pos}return t+=this.input.slice(n,this.state.pos++),this.finishToken(M.string,t)},me.jsxReadEntity=function(){for(var e="",t=0,n=void 0,r=this.input[this.state.pos],i=++this.state.pos;this.state.pos")}return n.openingElement=i,n.closingElement=a,n.children=r,this.match(M.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(n,"JSXElement")},me.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)};var be=function(e){e.extend("parseExprAtom",function(e){return function(t){if(this.match(M.jsxText)){var n=this.parseLiteral(this.state.value,"JSXText");return n.extra=null,n}return this.match(M.jsxTagStart)?this.jsxParseElement():e.call(this,t)}}),e.extend("readToken",function(e){return function(t){var n=this.curContext();if(n===K.j_expr)return this.jsxReadToken();if(n===K.j_oTag||n===K.j_cTag){if(a(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(M.jsxTagEnd);if((34===t||39===t)&&n===K.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed?(++this.state.pos,this.finishToken(M.jsxTagStart)):e.call(this,t)}}),e.extend("updateContext",function(e){return function(t){if(this.match(M.braceL)){var n=this.curContext();n===K.j_oTag?this.state.context.push(K.braceExpression):n===K.j_expr?this.state.context.push(K.templateQuasi):e.call(this,t),this.state.exprAllowed=!0}else{if(!this.match(M.slash)||t!==M.jsxTagStart)return e.call(this,t);this.state.context.length-=2,this.state.context.push(K.j_cTag),this.state.exprAllowed=!1}}})};H.flow=fe,H.jsx=be,n.parse=C,n.tokTypes=M},{}],275:[function(e,t,n){(function(t){"use strict";function r(e){return new t(e,"base64").toString()}function i(e){return e.split(",").pop()}function a(e,t){var n=p.exec(e);p.lastIndex=0;var r=n[1]||n[2],i=l.resolve(t,r);try{return u.readFileSync(i,"utf8")}catch(e){throw new Error("An error occurred while trying to read the map file at "+i+"\n"+e)}}function s(e,t){t=t||{},t.isFileComment&&(e=a(e,t.commentFileDir)),t.hasComment&&(e=i(e)),t.isEncoded&&(e=r(e)),(t.isJSON||t.isEncoded)&&(e=JSON.parse(e)),this.sourcemap=e}function o(e){for(var t,r=e.split("\n"),i=r.length-1;i>0;i--)if(t=r[i],~t.indexOf("sourceMappingURL=data:"))return n.fromComment(t)}var u=e("fs"),l=e("path"),c=/^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+;)?base64,(.*)$/gm,p=/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/gm;s.prototype.toJSON=function(e){return JSON.stringify(this.sourcemap,null,e)},s.prototype.toBase64=function(){var e=this.toJSON();return new t(e).toString("base64")},s.prototype.toComment=function(e){var t=this.toBase64(),n="sourceMappingURL=data:application/json;base64,"+t;return e&&e.multiline?"/*# "+n+" */":"//# "+n},s.prototype.toObject=function(){return JSON.parse(this.toJSON())},s.prototype.addProperty=function(e,t){if(this.sourcemap.hasOwnProperty(e))throw new Error("property %s already exists on the sourcemap, use set property instead");return this.setProperty(e,t)},s.prototype.setProperty=function(e,t){return this.sourcemap[e]=t,this},s.prototype.getProperty=function(e){return this.sourcemap[e]},n.fromObject=function(e){return new s(e)},n.fromJSON=function(e){return new s(e,{isJSON:!0})},n.fromBase64=function(e){return new s(e,{isEncoded:!0})},n.fromComment=function(e){return e=e.replace(/^\/\*/g,"//").replace(/\*\/$/g,""),new s(e,{isEncoded:!0,hasComment:!0})},n.fromMapFileComment=function(e,t){return new s(e,{commentFileDir:t,isFileComment:!0,isJSON:!0})},n.fromSource=function(e,t){if(t){var r=o(e);return r?r:null}var i=e.match(c);return c.lastIndex=0,i?n.fromComment(i.pop()):null},n.fromMapFileSource=function(e,t){var r=e.match(p);return p.lastIndex=0,r?n.fromMapFileComment(r.pop(),t):null},n.removeComments=function(e){return c.lastIndex=0,e.replace(c,"")},n.removeMapFileComments=function(e){return p.lastIndex=0,e.replace(p,"")},n.generateMapFileComment=function(e,t){var n="sourceMappingURL="+e;return t&&t.multiline?"/*# "+n+" */":"//# "+n},Object.defineProperty(n,"commentRegex",{get:function(){return c.lastIndex=0,c}}),Object.defineProperty(n,"mapFileCommentRegex",{get:function(){return p.lastIndex=0,p}})}).call(this,e("buffer").Buffer)},{buffer:4,fs:1,path:12}],276:[function(e,t,n){t.exports=e("./src/node")},{"./src/node":280}],277:[function(e,t,n){function r(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]),r=(t[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*p;case"days":case"day":case"d":return n*c;case"hours":case"hour":case"hrs":case"hr":case"h":return n*l;case"minutes":case"minute":case"mins":case"min":case"m":return n*u;case"seconds":case"second":case"secs":case"sec":case"s":return n*o;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function i(e){return e>=c?Math.round(e/c)+"d":e>=l?Math.round(e/l)+"h":e>=u?Math.round(e/u)+"m":e>=o?Math.round(e/o)+"s":e+"ms"}function a(e){return s(e,c,"day")||s(e,l,"hour")||s(e,u,"minute")||s(e,o,"second")||e+" ms"}function s(e,t,n){if(!(e0)return r(e);if("number"===n&&isNaN(e)===!1)return t.long?a(e):i(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}],278:[function(e,t,n){(function(r){function i(){return"undefined"!=typeof window&&"undefined"!=typeof window.process&&"renderer"===window.process.type||("undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||"undefined"!=typeof window&&window.console&&(console.firebug||console.exception&&console.table)||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function a(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))}),e.splice(a,0,r)}}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function o(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(e){}}function u(){try{return n.storage.debug}catch(e){}if("undefined"!=typeof r&&"env"in r)return r.env.DEBUG}function l(){try{return window.localStorage}catch(e){}}n=t.exports=e("./debug"),n.log=s,n.formatArgs=a,n.save=o,n.load=u,n.useColors=i,n.storage="undefined"!=typeof chrome&&"undefined"!=typeof chrome.storage?chrome.storage.local:l(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},n.enable(u()),"undefined"!=typeof window&&(window.debug=n)}).call(this,e("_process"))},{"./debug":279,_process:13}],279:[function(e,t,n){function r(e){var t,r=0;for(t in e)r=(r<<5)-r+e.charCodeAt(t),r|=0;return n.colors[Math.abs(r)%n.colors.length]}function i(e){function t(){if(t.enabled){var e=t,r=+new Date,i=r-(l||r);e.diff=i,e.prev=l,e.curr=r,l=r;for(var a=new Array(arguments.length),s=0;s"z")&&(r<"A"||r>"Z")&&l("Bad identifier as unquoted key");c()&&("_"===r||"$"===r||r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9");)e+=r;return e},h=function(){var e,t="",n="",i=10;if("-"!==r&&"+"!==r||(t=r,c(r)),"I"===r)return e=v(),("number"!=typeof e||isNaN(e))&&l("Unexpected word for number"),"-"===t?-e:e;if("N"===r)return e=v(),isNaN(e)||l("expected word to be NaN"),e;switch("0"===r&&(n+=r,c(),"x"===r||"X"===r?(n+=r,c(),i=16):r>="0"&&r<="9"&&l("Octal literal")),i){case 10:for(;r>="0"&&r<="9";)n+=r,c();if("."===r)for(n+=".";c()&&r>="0"&&r<="9";)n+=r;if("e"===r||"E"===r)for(n+=r,c(),"-"!==r&&"+"!==r||(n+=r,c());r>="0"&&r<="9";)n+=r,c();break;case 16:for(;r>="0"&&r<="9"||r>="A"&&r<="F"||r>="a"&&r<="f";)n+=r,c()}return e="-"===t?-n:+n,isFinite(e)?e:void l("Bad number")},d=function(){var e,t,n,i,a="";if('"'===r||"'"===r)for(n=r;c();){if(r===n)return c(),a;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;t<4&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;a+=String.fromCharCode(i)}else if("\r"===r)"\n"===p()&&c();else{if("string"!=typeof s[r])break;a+=s[r]}else{if("\n"===r)break;a+=r}}l("Bad string")},y=function(){"/"!==r&&l("Not an inline comment");do if(c(),"\n"===r||"\r"===r)return void c();while(r)},m=function(){"*"!==r&&l("Not a block comment");do for(c();"*"===r;)if(c("*"),"/"===r)return void c("/");while(r);l("Unterminated block comment")},b=function(){"/"!==r&&l("Not a comment"),c("/"),"/"===r?y():"*"===r?m():l("Unrecognized comment")},g=function(){for(;r;)if("/"===r)b();else{if(!(o.indexOf(r)>=0))return;c()}},v=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null;case"I":return c("I"),c("n"),c("f"),c("i"),c("n"),c("i"),c("t"),c("y"),1/0;case"N":return c("N"),c("a"),c("N"),NaN}l("Unexpected "+u(r))},x=function(){var e=[];if("["===r)for(c("["),g();r;){if("]"===r)return c("]"),e;if(","===r?l("Missing array element"):e.push(a()),g(),","!==r)return c("]"),e;c(","),g()}l("Bad array")},_=function(){var e,t={};if("{"===r)for(c("{"),g();r;){if("}"===r)return c("}"),t;if(e='"'===r||"'"===r?d():f(),g(),c(":"),t[e]=a(),g(),","!==r)return c("}"),t;c(","),g()}l("Bad object")};return a=function(){switch(g(),r){case"{":return _();case"[":return x();case'"':case"'":return d();case"-":case"+":case".":return h();default:return r>="0"&&r<="9"?h():v()}},function(s,o){var u;return i=String(s),e=0,t=1,n=1,r=" ",u=a(),g(),r&&l("Syntax error"),"function"==typeof o?function e(t,n){var r,i,a=t[n];if(a&&"object"==typeof a)for(r in a)Object.prototype.hasOwnProperty.call(a,r)&&(i=e(a,r),void 0!==i?a[r]=i:delete a[r]);return o.call(t,n,a)}({"":u},""):u}}(),r.stringify=function(e,t,n){function i(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e||"$"===e}function a(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e||"$"===e}function s(e){if("string"!=typeof e)return!1;if(!a(e[0]))return!1;for(var t=1,n=e.length;t10&&(e=e.substring(0,10));for(var r=n?"":"\n",i=0;i=0?i:void 0:i};r.isWord=s;var d,y=[];n&&("string"==typeof n?d=n:"number"==typeof n&&n>=0&&(d=c(" ",n,!0)));var m=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,b={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},g={"":e};return void 0===e?h(g,"",!0):f(g,"",!0)}},{}],282:[function(e,t,n){var r=e("./_getNative"),i=e("./_root"),a=r(i,"DataView");t.exports=a},{"./_getNative":391,"./_root":436}],283:[function(e,t,n){function r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1}var i=e("./_baseIndexOf");t.exports=r},{"./_baseIndexOf":326}],300:[function(e,t,n){function r(e,t,n){for(var r=-1,i=null==e?0:e.length;++r=t?e:t)),e}t.exports=r},{}],314:[function(e,t,n){function r(e,t,n,w,k,F){var T,B=t&A,O=t&D,N=t&C;if(n&&(T=k?n(e,w,k,F):n(e)),void 0!==T)return T;if(!_(e))return e;var L=v(e);if(L){if(T=m(e),!B)return c(e,T)}else{var M=y(e),R=M==P||M==j;if(x(e))return l(e,B);if(M==I||M==S||R&&!k){if(T=O||R?{}:g(e),!B)return O?f(e,u(T,e)):p(e,o(T,e))}else{if(!Q[M])return k?e:{};T=b(e,M,r,B)}}F||(F=new i);var U=F.get(e);if(U)return U;F.set(e,T);var V=N?O?d:h:O?keysIn:E,G=L?void 0:V(e);return a(G||e,function(i,a){G&&(a=i,i=e[a]),s(T,a,r(i,t,n,a,e,F))}),T}var i=e("./_Stack"),a=e("./_arrayEach"),s=e("./_assignValue"),o=e("./_baseAssign"),u=e("./_baseAssignIn"),l=e("./_cloneBuffer"),c=e("./_copyArray"),p=e("./_copySymbols"),f=e("./_copySymbolsIn"),h=e("./_getAllKeys"),d=e("./_getAllKeysIn"),y=e("./_getTag"),m=e("./_initCloneArray"),b=e("./_initCloneByTag"),g=e("./_initCloneObject"),v=e("./isArray"),x=e("./isBuffer"),_=e("./isObject"),E=e("./keys"),A=1,D=2,C=4,S="[object Arguments]",w="[object Array]",k="[object Boolean]",F="[object Date]",T="[object Error]",P="[object Function]",j="[object GeneratorFunction]",B="[object Map]",O="[object Number]",I="[object Object]",N="[object RegExp]",L="[object Set]",M="[object String]",R="[object Symbol]",U="[object WeakMap]",V="[object ArrayBuffer]",G="[object DataView]",q="[object Float32Array]",K="[object Float64Array]",X="[object Int8Array]",J="[object Int16Array]",W="[object Int32Array]",z="[object Uint8Array]",Y="[object Uint8ClampedArray]",H="[object Uint16Array]",$="[object Uint32Array]",Q={};Q[S]=Q[w]=Q[V]=Q[G]=Q[k]=Q[F]=Q[q]=Q[K]=Q[X]=Q[J]=Q[W]=Q[B]=Q[O]=Q[I]=Q[N]=Q[L]=Q[M]=Q[R]=Q[z]=Q[Y]=Q[H]=Q[$]=!0,Q[T]=Q[P]=Q[U]=!1,t.exports=r},{"./_Stack":290,"./_arrayEach":297,"./_assignValue":308,"./_baseAssign":310,"./_baseAssignIn":311,"./_cloneBuffer":362,"./_copyArray":371,"./_copySymbols":373,"./_copySymbolsIn":374,"./_getAllKeys":387,"./_getAllKeysIn":388,"./_getTag":396,"./_initCloneArray":405,"./_initCloneByTag":406,"./_initCloneObject":407,"./isArray":475,"./isBuffer":479,"./isObject":484,"./keys":491}],315:[function(e,t,n){var r=e("./isObject"),i=Object.create,a=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();t.exports=a},{"./isObject":484}],316:[function(e,t,n){var r=e("./_baseForOwn"),i=e("./_createBaseEach"),a=i(r);t.exports=a},{"./_baseForOwn":320,"./_createBaseEach":377}],317:[function(e,t,n){function r(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a0&&n(c)?t>1?r(c,t-1,n,s,o):i(o,c):s||(o[o.length]=c)}return o}var i=e("./_arrayPush"),a=e("./_isFlattenable");t.exports=r},{"./_arrayPush":303,"./_isFlattenable":408}],319:[function(e,t,n){var r=e("./_createBaseFor"),i=r();t.exports=i},{"./_createBaseFor":378}],320:[function(e,t,n){function r(e,t){return e&&i(e,t,a)}var i=e("./_baseFor"),a=e("./keys");t.exports=r},{"./_baseFor":319,"./keys":491}],321:[function(e,t,n){function r(e,t){t=i(t,e);for(var n=0,r=t.length;null!=e&&ni)return n;do t%2&&(n+=e),t=a(t/2),t&&(e+=e);while(t);return n}var i=9007199254740991,a=Math.floor;t.exports=r},{}],347:[function(e,t,n){function r(e,t){return s(a(e,t,i),e+"")}var i=e("./identity"),a=e("./_overRest"),s=e("./_setToString");t.exports=r},{"./_overRest":435,"./_setToString":440,"./identity":472}],348:[function(e,t,n){var r=e("./constant"),i=e("./_defineProperty"),a=e("./identity"),s=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:a;t.exports=s},{"./_defineProperty":382,"./constant":459,"./identity":472}],349:[function(e,t,n){function r(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r=c){var m=t?null:u(e);if(m)return l(m);h=!1,p=o,y=new i}else y=t?[]:d;e:for(;++r=r?e:i(e,t,n)}var i=e("./_baseSlice");t.exports=r},{"./_baseSlice":349}],360:[function(e,t,n){function r(e,t){for(var n=e.length;n--&&i(t,e[n],0)>-1;);return n}var i=e("./_baseIndexOf");t.exports=r},{"./_baseIndexOf":326}],361:[function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new i(t).set(new i(e)),t}var i=e("./_Uint8Array");t.exports=r},{"./_Uint8Array":292}],362:[function(e,t,n){function r(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}var i=e("./_root"),a="object"==typeof n&&n&&!n.nodeType&&n,s=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===a,u=o?i.Buffer:void 0,l=u?u.allocUnsafe:void 0;t.exports=r},{"./_root":436}],363:[function(e,t,n){function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var i=e("./_cloneArrayBuffer");t.exports=r},{"./_cloneArrayBuffer":361}],364:[function(e,t,n){function r(e,t,n){var r=t?n(s(e),o):s(e);return a(r,i,new e.constructor)}var i=e("./_addMapEntry"),a=e("./_arrayReduce"),s=e("./_mapToArray"),o=1;t.exports=r},{"./_addMapEntry":294,"./_arrayReduce":304,"./_mapToArray":426}],365:[function(e,t,n){function r(e){var t=new e.constructor(e.source,i.exec(e));return t.lastIndex=e.lastIndex,t}var i=/\w*$/;t.exports=r},{}],366:[function(e,t,n){function r(e,t,n){var r=t?n(s(e),o):s(e);return a(r,i,new e.constructor)}var i=e("./_addSetEntry"),a=e("./_arrayReduce"),s=e("./_setToArray"),o=1;t.exports=r},{"./_addSetEntry":295,"./_arrayReduce":304,"./_setToArray":439}],367:[function(e,t,n){function r(e){return s?Object(s.call(e)):{}}var i=e("./_Symbol"),a=i?i.prototype:void 0,s=a?a.valueOf:void 0;t.exports=r},{"./_Symbol":291}],368:[function(e,t,n){function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var i=e("./_cloneArrayBuffer");t.exports=r},{"./_cloneArrayBuffer":361}],369:[function(e,t,n){function r(e,t){if(e!==t){var n=void 0!==e,r=null===e,a=e===e,s=i(e),o=void 0!==t,u=null===t,l=t===t,c=i(t);if(!u&&!c&&!s&&e>t||s&&o&&l&&!u&&!c||r&&o&&l||!n&&l||!a)return 1;if(!r&&!s&&!c&&e=u)return l;var c=n[r];return l*("desc"==c?-1:1)}}return e.index-t.index}var i=e("./_compareAscending");t.exports=r},{"./_compareAscending":369}],371:[function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(i--,s):void 0,o&&a(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),t=Object(t);++r-1?o[u?t[l]:l]:void 0}}var i=e("./_baseIteratee"),a=e("./isArrayLike"),s=e("./keys");t.exports=r},{"./_baseIteratee":335,"./isArrayLike":476,"./keys":491}],380:[function(e,t,n){var r=e("./_Set"),i=e("./noop"),a=e("./_setToArray"),s=1/0,o=r&&1/a(new r([,-0]))[1]==s?function(e){return new r(e)}:i;t.exports=o},{"./_Set":288,"./_setToArray":439,"./noop":496}],381:[function(e,t,n){function r(e,t,n,r){return void 0===e||i(e,a[n])&&!s.call(r,n)?t:e}var i=e("./eq"),a=Object.prototype,s=a.hasOwnProperty;t.exports=r},{"./eq":462}],382:[function(e,t,n){var r=e("./_getNative"),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();t.exports=i},{"./_getNative":391}],383:[function(e,t,n){function r(e,t,n,r,l,c){var p=n&o,f=e.length,h=t.length;if(f!=h&&!(p&&h>f))return!1;var d=c.get(e);if(d&&c.get(t))return d==t;var y=-1,m=!0,b=n&u?new i:void 0;for(c.set(e,t),c.set(t,e);++y-1&&e%1==0&&e-1}var i=e("./_assocIndexOf");t.exports=r},{"./_assocIndexOf":309}],420:[function(e,t,n){function r(e,t){var n=this.__data__,r=i(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var i=e("./_assocIndexOf");t.exports=r},{"./_assocIndexOf":309}],421:[function(e,t,n){function r(){this.size=0,this.__data__={hash:new i,map:new(s||a),string:new i}}var i=e("./_Hash"),a=e("./_ListCache"),s=e("./_Map");t.exports=r},{"./_Hash":283,"./_ListCache":284,"./_Map":285}],422:[function(e,t,n){function r(e){var t=i(this,e).delete(e);return this.size-=t?1:0,t}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],423:[function(e,t,n){function r(e){return i(this,e).get(e)}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],424:[function(e,t,n){function r(e){return i(this,e).has(e)}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],425:[function(e,t,n){function r(e,t){var n=i(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],426:[function(e,t,n){function r(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}t.exports=r},{}],427:[function(e,t,n){function r(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}t.exports=r},{}],428:[function(e,t,n){function r(e){var t=i(e,function(e){return n.size===a&&n.clear(),e}),n=t.cache;return t}var i=e("./memoize"),a=500;t.exports=r},{"./memoize":494}],429:[function(e,t,n){var r=e("./_getNative"),i=r(Object,"create");t.exports=i},{"./_getNative":391}],430:[function(e,t,n){var r=e("./_overArg"),i=r(Object.keys,Object);t.exports=i},{"./_overArg":434}],431:[function(e,t,n){function r(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}t.exports=r},{}],432:[function(e,t,n){var r=e("./_freeGlobal"),i="object"==typeof n&&n&&!n.nodeType&&n,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,s=a&&a.exports===i,o=s&&r.process,u=function(){try{return o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=u},{"./_freeGlobal":386}],433:[function(e,t,n){function r(e){return a.call(e)}var i=Object.prototype,a=i.toString;t.exports=r},{}],434:[function(e,t,n){function r(e,t){return function(n){return e(t(n))}}t.exports=r},{}],435:[function(e,t,n){function r(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=a(r.length-t,0),u=Array(o);++s0){if(++t>=i)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var i=800,a=16,s=Date.now;t.exports=r},{}],442:[function(e,t,n){function r(){this.__data__=new i,this.size=0}var i=e("./_ListCache");t.exports=r},{"./_ListCache":284}],443:[function(e,t,n){function r(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}t.exports=r},{}],444:[function(e,t,n){function r(e){return this.__data__.get(e)}t.exports=r},{}],445:[function(e,t,n){function r(e){return this.__data__.has(e)}t.exports=r},{}],446:[function(e,t,n){function r(e,t){var n=this.__data__;if(n instanceof i){var r=n.__data__;if(!a||r.length-1:!!c&&i(e,t,n)>-1}var i=e("./_baseIndexOf"),a=e("./isArrayLike"),s=e("./isString"),o=e("./toInteger"),u=e("./values"),l=Math.max;t.exports=r},{"./_baseIndexOf":326,"./isArrayLike":476,"./isString":488,"./toInteger":504,"./values":510}],474:[function(e,t,n){var r=e("./_baseIsArguments"),i=e("./isObjectLike"),a=Object.prototype,s=a.hasOwnProperty,o=a.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(e){return i(e)&&s.call(e,"callee")&&!o.call(e,"callee")};t.exports=u},{"./_baseIsArguments":327,"./isObjectLike":485}],475:[function(e,t,n){var r=Array.isArray;t.exports=r},{}],476:[function(e,t,n){function r(e){return null!=e&&a(e.length)&&!i(e)}var i=e("./isFunction"),a=e("./isLength");t.exports=r},{"./isFunction":480,"./isLength":482}],477:[function(e,t,n){function r(e){return a(e)&&i(e)}var i=e("./isArrayLike"),a=e("./isObjectLike");t.exports=r},{"./isArrayLike":476,"./isObjectLike":485}],478:[function(e,t,n){function r(e){return e===!0||e===!1||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Boolean]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],479:[function(e,t,n){var r=e("./_root"),i=e("./stubFalse"),a="object"==typeof n&&n&&!n.nodeType&&n,s=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===a,u=o?r.Buffer:void 0,l=u?u.isBuffer:void 0,c=l||i;t.exports=c},{"./_root":436,"./stubFalse":502}],480:[function(e,t,n){function r(e){if(!a(e))return!1;var t=i(e);return t==o||t==u||t==s||t==l}var i=e("./_baseGetTag"),a=e("./isObject"),s="[object AsyncFunction]",o="[object Function]",u="[object GeneratorFunction]",l="[object Proxy]";t.exports=r},{"./_baseGetTag":323,"./isObject":484}],481:[function(e,t,n){function r(e){return"number"==typeof e&&e==i(e)}var i=e("./toInteger");t.exports=r},{"./toInteger":504}],482:[function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}var i=9007199254740991;t.exports=r},{}],483:[function(e,t,n){function r(e){return"number"==typeof e||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Number]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],484:[function(e,t,n){function r(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}t.exports=r},{}],485:[function(e,t,n){function r(e){return null!=e&&"object"==typeof e}t.exports=r},{}],486:[function(e,t,n){function r(e){if(!s(e)||i(e)!=o)return!1;var t=a(e);if(null===t)return!0;var n=p.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}var i=e("./_baseGetTag"),a=e("./_getPrototype"),s=e("./isObjectLike"),o="[object Object]",u=Function.prototype,l=Object.prototype,c=u.toString,p=l.hasOwnProperty,f=c.call(Object);t.exports=r},{"./_baseGetTag":323,"./_getPrototype":392,"./isObjectLike":485}],487:[function(e,t,n){var r=e("./_baseIsRegExp"),i=e("./_baseUnary"),a=e("./_nodeUtil"),s=a&&a.isRegExp,o=s?i(s):r;t.exports=o},{"./_baseIsRegExp":333,"./_baseUnary":353,"./_nodeUtil":432}],488:[function(e,t,n){function r(e){return"string"==typeof e||!a(e)&&s(e)&&i(e)==o}var i=e("./_baseGetTag"),a=e("./isArray"),s=e("./isObjectLike"),o="[object String]";t.exports=r},{"./_baseGetTag":323,"./isArray":475,"./isObjectLike":485}],489:[function(e,t,n){function r(e){return"symbol"==typeof e||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Symbol]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],490:[function(e,t,n){var r=e("./_baseIsTypedArray"),i=e("./_baseUnary"),a=e("./_nodeUtil"),s=a&&a.isTypedArray,o=s?i(s):r;t.exports=o},{"./_baseIsTypedArray":334,"./_baseUnary":353,"./_nodeUtil":432}],491:[function(e,t,n){function r(e){return s(e)?i(e):a(e)}var i=e("./_arrayLikeKeys"),a=e("./_baseKeys"),s=e("./isArrayLike");t.exports=r},{"./_arrayLikeKeys":301,"./_baseKeys":336,"./isArrayLike":476}],492:[function(e,t,n){function r(e){return s(e)?i(e,!0):a(e)}var i=e("./_arrayLikeKeys"),a=e("./_baseKeysIn"),s=e("./isArrayLike");t.exports=r},{"./_arrayLikeKeys":301,"./_baseKeysIn":337,"./isArrayLike":476}],493:[function(e,t,n){function r(e,t){var n=o(e)?i:s;return n(e,a(t,3))}var i=e("./_arrayMap"),a=e("./_baseIteratee"),s=e("./_baseMap"),o=e("./isArray");t.exports=r},{"./_arrayMap":302,"./_baseIteratee":335,"./_baseMap":338,"./isArray":475}],494:[function(e,t,n){function r(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(a);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var s=e.apply(this,r);return n.cache=a.set(i,s)||a,s};return n.cache=new(r.Cache||i),n}var i=e("./_MapCache"),a="Expected a function";r.Cache=i,t.exports=r},{"./_MapCache":286}],495:[function(e,t,n){var r=e("./_baseMerge"),i=e("./_createAssigner"),a=i(function(e,t,n,i){r(e,t,n,i)});t.exports=a},{"./_baseMerge":341,"./_createAssigner":376}],496:[function(e,t,n){function r(){}t.exports=r},{}],497:[function(e,t,n){function r(e){return s(e)?i(o(e)):a(e)}var i=e("./_baseProperty"),a=e("./_basePropertyDeep"),s=e("./_isKey"),o=e("./_toKey");t.exports=r},{"./_baseProperty":344,"./_basePropertyDeep":345,"./_isKey":411,"./_toKey":450}],498:[function(e,t,n){function r(e,t,n){return t=(n?a(e,t,n):void 0===t)?1:s(t),i(o(e),t)}var i=e("./_baseRepeat"),a=e("./_isIterateeCall"),s=e("./toInteger"),o=e("./toString");t.exports=r},{"./_baseRepeat":346,"./_isIterateeCall":410,"./toInteger":504,"./toString":507}],499:[function(e,t,n){var r=e("./_baseFlatten"),i=e("./_baseOrderBy"),a=e("./_baseRest"),s=e("./_isIterateeCall"),o=a(function(e,t){if(null==e)return[];var n=t.length;return n>1&&s(e,t[0],t[1])?t=[]:n>2&&s(t[0],t[1],t[2])&&(t=[t[0]]),i(e,r(t,1),[])});t.exports=o},{"./_baseFlatten":318,"./_baseOrderBy":343,"./_baseRest":347,"./_isIterateeCall":410}],500:[function(e,t,n){function r(e,t,n){return e=o(e),n=null==n?0:i(s(n),0,e.length),t=a(t),e.slice(n,n+t.length)==t}var i=e("./_baseClamp"),a=e("./_baseToString"),s=e("./toInteger"),o=e("./toString");t.exports=r},{"./_baseClamp":313,"./_baseToString":352,"./toInteger":504,"./toString":507}],501:[function(e,t,n){function r(){return[]}t.exports=r},{}],502:[function(e,t,n){function r(){return!1}t.exports=r},{}],503:[function(e,t,n){function r(e){if(!e)return 0===e?e:0;if(e=i(e),e===a||e===-a){var t=e<0?-1:1;return t*s}return e===e?e:0}var i=e("./toNumber"),a=1/0,s=1.7976931348623157e308;t.exports=r},{"./toNumber":505}],504:[function(e,t,n){function r(e){var t=i(e),n=t%1;return t===t?n?t-n:t:0}var i=e("./toFinite");t.exports=r},{"./toFinite":503}],505:[function(e,t,n){function r(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=l.test(e);return n||c.test(e)?p(e.slice(2),n?2:8):u.test(e)?s:+e}var i=e("./isObject"),a=e("./isSymbol"),s=NaN,o=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,c=/^0o[0-7]+$/i,p=parseInt;t.exports=r},{"./isObject":484,"./isSymbol":489}],506:[function(e,t,n){function r(e){return i(e,a(e))}var i=e("./_copyObject"),a=e("./keysIn");t.exports=r},{"./_copyObject":372,"./keysIn":492}],507:[function(e,t,n){function r(e){return null==e?"":i(e)}var i=e("./_baseToString");t.exports=r},{"./_baseToString":352}],508:[function(e,t,n){function r(e,t,n){if(e=u(e),e&&(n||void 0===t))return e.replace(l,"");if(!e||!(t=i(t)))return e;var r=o(e),c=s(r,o(t))+1;return a(r,0,c).join("")}var i=e("./_baseToString"),a=e("./_castSlice"),s=e("./_charsEndIndex"),o=e("./_stringToArray"),u=e("./toString"),l=/\s+$/;t.exports=r},{"./_baseToString":352,"./_castSlice":359,"./_charsEndIndex":360,"./_stringToArray":448,"./toString":507}],509:[function(e,t,n){function r(e){return e&&e.length?i(e):[]}var i=e("./_baseUniq");t.exports=r},{"./_baseUniq":354}],510:[function(e,t,n){function r(e){return null==e?[]:i(e,a(e))}var i=e("./_baseValues"),a=e("./keys");t.exports=r},{"./_baseValues":355,"./keys":491}],511:[function(e,t,n){function r(e){return e.split("").reduce(function(e,t){return e[t]=!0,e},{})}function i(e,t){return t=t||{},function(n,r,i){return s(n,e,t)}}function a(e,t){e=e||{},t=t||{};var n={};return Object.keys(t).forEach(function(e){n[e]=t[e]}),Object.keys(e).forEach(function(t){n[t]=e[t]}),n}function s(e,t,n){if("string"!=typeof t)throw new TypeError("glob pattern string required");return n||(n={}),!(!n.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===e:new o(t,n).match(e))}function o(e,t){if(!(this instanceof o))return new o(e,t);if("string"!=typeof e)throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),"/"!==m.sep&&(e=e.split(m.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function u(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();var n=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,n),n=this.globParts=n.map(function(e){return e.split(C)}),this.debug(this.pattern,n),n=n.map(function(e,t,n){return e.map(this.parse,this)},this),this.debug(this.pattern,n),n=n.filter(function(e){return e.indexOf(!1)===-1}),this.debug(this.pattern,n),this.set=n}}function l(){var e=this.pattern,t=!1,n=this.options,r=0;if(!n.nonegate){for(var i=0,a=e.length;i65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===e)return b;if(""===e)return"";for(var i,a,s="",o=!!r.nocase,u=!1,l=[],c=[],p=!1,f=-1,h=-1,y="."===e.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",m=this,g=0,E=e.length;g-1;P--){var j=c[P],B=s.slice(0,j.reStart),O=s.slice(j.reStart,j.reEnd-8),I=s.slice(j.reEnd-8,j.reEnd),N=s.slice(j.reEnd);I+=N;var L=B.split("(").length-1,M=N;for(g=0;g=0&&!(i=e[a]);a--);for(a=0;a>> no match, partial?",e,c,t,p),c!==s))}var h;if("string"==typeof u?(h=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,h)):(h=l.match(u),this.debug("pattern match",u,l,h)),!h)return!1}if(i===s&&a===o)return!0;if(i===s)return n;if(a===o){var d=i===s-1&&""===e[i];return d}throw new Error("wtf?")}},{"brace-expansion":512,path:12}],512:[function(e,t,n){function r(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function i(e){return e.split("\\\\").join(y).split("\\{").join(m).split("\\}").join(b).split("\\,").join(g).split("\\.").join(v)}function a(e){return e.split(y).join("\\").split(m).join("{").split(b).join("}").split(g).join(",").split(v).join(".")}function s(e){if(!e)return[""];var t=[],n=d("{","}",e);if(!n)return e.split(",");var r=n.pre,i=n.body,a=n.post,o=r.split(",");o[o.length-1]+="{"+i+"}";var u=s(a);return a.length&&(o[o.length-1]+=u.shift(),o.push.apply(o,u)),t.push.apply(t,o),t}function o(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),f(i(e),!0).map(a)):[]}function u(e){return"{"+e+"}"}function l(e){return/^-?0\d/.test(e)}function c(e,t){return e<=t}function p(e,t){return e>=t}function f(e,t){var n=[],i=d("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var a=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),y=a||o,m=/^(.*,)+(.+)?$/.test(i.body);if(!y&&!m)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+b+i.post,f(e)):[e];var g;if(y)g=i.body.split(/\.\./);else if(g=s(i.body),1===g.length&&(g=f(g[0],!1).map(u),1===g.length)){var v=i.post.length?f(i.post,!1):[""];return v.map(function(e){return i.pre+g[0]+e})}var x,_=i.pre,v=i.post.length?f(i.post,!1):[""];if(y){var E=r(g[0]),A=r(g[1]),D=Math.max(g[0].length,g[1].length),C=3==g.length?Math.abs(r(g[2])):1,S=c,w=A0){var j=new Array(P+1).join("0");T=F<0?"-"+j+T.slice(1):j+T}}x.push(T)}}else x=h(g,function(e){return f(e,!1)});for(var B=0;B=0&&l>0){for(r=[],a=n.length;c>=0&&!o;)c==u?(r.push(c),u=n.indexOf(e,c+1)):1==r.length?o=[r.pop(),l]:(i=r.pop(),i=0?u:l;r.length&&(o=[a,s])}return o}t.exports=r,r.range=a},{}],514:[function(e,t,n){t.exports=function(e,t){for(var n=[],i=0;i=0&&e>1;return t?-n:n}var a=e("./base64"),s=5,o=1<>>=s,i>0&&(t|=l),n+=a.encode(t);while(i>0);return n},n.decode=function(e,t,n){var r,o,c=e.length,p=0,f=0;do{if(t>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(o=a.decode(e.charCodeAt(t++)),o===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(o&l),o&=u,p+=o<0?t-u>1?r(u,t,i,a,s,o):o==n.LEAST_UPPER_BOUND?t1?r(e,u,i,a,s,o):o==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,a){if(0===t.length)return-1;var s=r(-1,t.length,e,t,i,a||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===i(t[s],t[s-1],!0);)--s;return s}},{}],521:[function(e,t,n){function r(e,t){var n=e.generatedLine,r=t.generatedLine,i=e.generatedColumn,s=t.generatedColumn;return r>n||r==n&&s>=i||a.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var a=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){r(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(a.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=i},{"./util":526}],522:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t){return Math.round(e+Math.random()*(t-e))}function a(e,t,n,s){if(n=0){var a=this._originalMappings[i];if(void 0===e.column)for(var s=a.originalLine;a&&a.originalLine===s;)r.push({line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i];else for(var l=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==l;)r.push({line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,i.prototype=Object.create(r.prototype),i.prototype.consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=l.fromArray(e._names.toArray(),!0),r=t._sources=l.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var s=e._mappings.toArray().slice(),u=t.__generatedMappings=[],c=t.__originalMappings=[],f=0,h=s.length;f1&&(n.source=y+i[1],y+=i[1],n.originalLine=h+i[2],h=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&_.push(n)}p(E,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(_,o.compareByOriginalPositions),this.__originalMappings=_},i.prototype._findMapping=function(e,t,n,r,i,a){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,a)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var a=o.getArg(i,"source",null);null!==a&&(a=this._sources.at(a),null!=this.sourceRoot&&(a=o.join(this.sourceRoot,a)));var s=o.getArg(i,"name",null);return null!==s&&(s=this._names.at(s)),{source:a,line:o.getArg(i,"originalLine",null),column:o.getArg(i,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=o.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=o.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if(null!=this.sourceRoot&&(t=o.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};t=this._sources.indexOf(t);var n={source:t,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var a=this._originalMappings[i];if(a.source===n.source)return{line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,s.prototype=Object.create(r.prototype),s.prototype.constructor=r,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,s=0,o=1,u=0,l=0,c=0,p=0,f="",h=this._mappings.toArray(),d=0,y=h.length;d0){if(!a.compareByGeneratedPositionsInflated(t,h[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-l),l=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-c),c=n)),f+=e}return f},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=a.relative(t,e));var n=a.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":517,"./base64-vlq":518,"./mapping-list":521,"./util":526}],525:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[u]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,a=e("./util"),s=/(\r?\n)/,o=10,u="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)o.add(t);else{var i=n?a.join(n,e.source):e.source;o.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var o=new r,u=e.split(s),l=function(){var e=u.shift(),t=u.shift()||"";return e+t},c=1,p=0,f=null;return t.eachMapping(function(e){if(null!==f){if(!(c0&&(f&&i(f,l()),o.add(u.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=a.join(n,e)),o.setSourceContent(e,r))}),o},r.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},r.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[u]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return t=u.join("/"),""===t&&(t=o?"/":"."),r?(r.path=t,a(r)):t}function o(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),r=i(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),a(n);if(n||t.match(g))return t;if(r&&!r.host&&!r.path)return r.host=t,a(r);var o="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=o,a(r)):o}function u(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if(e=e.slice(0,r),e.match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)}function l(e){return e}function c(e){return f(e)?"$"+e:e}function p(e){return f(e)?e.slice(1):e}function f(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function h(e,t,n){var r=e.source-t.source;return 0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r||n?r:(r=e.generatedColumn-t.generatedColumn,0!==r?r:(r=e.generatedLine-t.generatedLine,0!==r?r:e.name-t.name))))}function d(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:(r=e.generatedColumn-t.generatedColumn,0!==r||n?r:(r=e.source-t.source,0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r?r:e.name-t.name))))}function y(e,t){return e===t?0:e>t?1:-1}function m(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:(n=e.generatedColumn-t.generatedColumn,0!==n?n:(n=y(e.source,t.source),0!==n?n:(n=e.originalLine-t.originalLine,0!==n?n:(n=e.originalColumn-t.originalColumn,0!==n?n:y(e.name,t.name)))))}n.getArg=r;var b=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,g=/^data:.+\,.+$/;n.urlParse=i,n.urlGenerate=a,n.normalize=s,n.join=o,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(b)},n.relative=u;var v=function(){var e=Object.create(null);return!("__proto__"in e)}();n.toSetString=v?l:c,n.fromSetString=v?l:p,n.compareByOriginalPositions=h,n.compareByGeneratedPositionsDeflated=d,n.compareByGeneratedPositionsInflated=m},{}],527:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":523,"./lib/source-map-generator":524,"./lib/source-node":525}],528:[function(e,t,n){t.exports={name:"babel-core",version:"6.21.0",description:"Babel compiler core.",author:{name:"Sebastian McKenzie",email:"sebmck@gmail.com"},homepage:"https://babeljs.io/",license:"MIT",repository:{type:"git",url:"https://github.com/babel/babel/tree/master/packages/babel-core"},keywords:["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core"],scripts:{bench:"make bench",test:"make test"},dependencies:{"babel-code-frame":"^6.20.0","babel-generator":"^6.21.0","babel-helpers":"^6.16.0","babel-messages":"^6.8.0","babel-template":"^6.16.0","babel-runtime":"^6.20.0","babel-register":"^6.18.0","babel-traverse":"^6.21.0","babel-types":"^6.21.0",babylon:"^6.11.0","convert-source-map":"^1.1.0",debug:"^2.1.1",json5:"^0.5.0",lodash:"^4.2.0",minimatch:"^3.0.2","path-is-absolute":"^1.0.0",private:"^0.1.6",slash:"^1.0.0","source-map":"^0.5.0"},devDependencies:{"babel-helper-fixtures":"^6.20.0","babel-helper-transform-fixture-test-runner":"^6.21.0","babel-polyfill":"^6.20.0"},_id:"babel-core@6.21.0",_shasum:"75525480c21c803f826ef3867d22c19f080a3724",_from:"babel-core@>=6.18.2 <7.0.0",_npmVersion:"3.10.8",_nodeVersion:"6.9.0",_npmUser:{name:"hzoo",email:"hi@henryzoo.com"},dist:{shasum:"75525480c21c803f826ef3867d22c19f080a3724",tarball:"https://registry.npmjs.org/babel-core/-/babel-core-6.21.0.tgz"},maintainers:[{name:"amasad",email:"amjad.masad@gmail.com"},{name:"hzoo",email:"hi@henryzoo.com"},{name:"jmm",email:"npm-public@jessemccarthy.net"},{name:"loganfsmyth",email:"loganfsmyth@gmail.com"},{name:"sebmck",email:"sebmck@gmail.com"},{name:"thejameskyle",email:"me@thejameskyle.com"}],_npmOperationalInternal:{host:"packages-12-west.internal.npmjs.com",tmp:"tmp/babel-core-6.21.0.tgz_1481925355362_0.2487682355567813"},directories:{},_resolved:"https://registry.npmjs.org/babel-core/-/babel-core-6.21.0.tgz",readme:"ERROR: No README data found!"}},{}],529:[function(e,t,n){function r(e,t,n){if(e){if(x.fixFaultyLocations(e,t),n){if(d.Node.check(e)&&d.SourceLocation.check(e.loc)){for(var i=n.length-1;i>=0&&!(_(n[i].loc.end,e.loc.start)<=0);--i);return void n.splice(i+1,0,e)}}else if(e[E])return e[E];var a;if(y.check(e))a=Object.keys(e);else{if(!m.check(e))return;a=h.getFieldNames(e)}n||Object.defineProperty(e,E,{value:n=[],enumerable:!1});for(var i=0,s=a.length;i>1,l=a[u];if(_(l.loc.start,t.loc.start)<=0&&_(t.loc.end,l.loc.end)<=0)return void i(t.enclosingNode=l,t,n);if(_(l.loc.end,t.loc.start)<=0){var c=l;s=u+1}else{if(!(_(t.loc.end,l.loc.start)<=0))throw new Error("Comment location overlaps with node location");var p=l;o=u}}c&&(t.precedingNode=c),p&&(t.followingNode=p)}function a(e,t){var n=e.length;if(0!==n){for(var r=e[0].precedingNode,i=e[0].followingNode,a=i.loc.start,s=n;s>0;--s){var u=e[s-1];f.strictEqual(u.precedingNode,r),f.strictEqual(u.followingNode,i);var c=t.sliceString(u.loc.end,a);if(/\S/.test(c))break;a=u.loc.start}for(;s<=n&&(u=e[s])&&("Line"===u.type||"CommentLine"===u.type)&&u.loc.start.column>i.loc.start.column;)++s;e.forEach(function(e,t){t0){var d=r[h-1];f.strictEqual(d.precedingNode===e.precedingNode,d.followingNode===e.followingNode),d.followingNode!==e.followingNode&&a(r,n)}r.push(e)}else if(s)a(r,n),l(s,e);else if(p)a(r,n),o(p,e);else{if(!c)throw new Error("AST contains no nodes at all?");a(r,n),u(c,e)}}),a(r,n),e.forEach(function(e){delete e.precedingNode,delete e.enclosingNode,delete e.followingNode})}},n.printComments=function(e,t){var n=e.getValue(),r=t(e),i=d.Node.check(n)&&h.getFieldValue(n,"comments");if(!i||0===i.length)return r;var a=[],s=[r];return e.each(function(e){var r=e.getValue(),i=h.getFieldValue(r,"leading"),o=h.getFieldValue(r,"trailing");i||o&&!d.Statement.check(n)&&"Block"!==r.type&&"CommentBlock"!==r.type?a.push(c(e,t)):o&&s.push(p(e,t))},"comments"),a.push.apply(a,s),
-v(a)}},{"./lines":531,"./types":537,"./util":538,assert:2,private:560}],530:[function(e,t,n){function r(e){o.ok(this instanceof r),this.stack=[e]}function i(e,t){for(var n=e.stack,r=n.length-1;r>=0;r-=2){var i=n[r];if(l.Node.check(i)&&--t<0)return i}return null}function a(e){return l.BinaryExpression.check(e)||l.LogicalExpression.check(e)}function s(e){return!!l.CallExpression.check(e)||(c.check(e)?e.some(s):!!l.Node.check(e)&&u.someField(e,function(e,t){return s(t)}))}var o=e("assert"),u=e("./types"),l=u.namedTypes,c=(l.Node,u.builtInTypes.array),p=u.builtInTypes.number,f=r.prototype;t.exports=r,r.from=function(e){if(e instanceof r)return e.copy();if(e instanceof u.NodePath){for(var t,n=Object.create(r.prototype),i=[e.value];t=e.parentPath;e=t)i.push(e.name,t.value);return n.stack=i.reverse(),n}return new r(e)},f.copy=function e(){var e=Object.create(r.prototype);return e.stack=this.stack.slice(0),e},f.getName=function(){var e=this.stack,t=e.length;return t>1?e[t-2]:null},f.getValue=function(){var e=this.stack;return e[e.length-1]},f.getNode=function(e){return i(this,~~e)},f.getParentNode=function(e){return i(this,~~e+1)},f.getRootValue=function(){var e=this.stack;return e.length%2===0?e[1]:e[0]},f.call=function(e){for(var t=this.stack,n=t.length,r=t[n-1],i=arguments.length,a=1;af)return!0;if(u===f&&"right"===n)return o.strictEqual(t.right,r),!0;default:return!1}case"SequenceExpression":switch(t.type){case"ReturnStatement":return!1;case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==n;default:return!0}case"YieldExpression":switch(t.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"IntersectionTypeAnnotation":case"UnionTypeAnnotation":return"NullableTypeAnnotation"===t.type;case"Literal":return"MemberExpression"===t.type&&p.check(r.value)&&"object"===n&&t.object===r;case"AssignmentExpression":case"ConditionalExpression":switch(t.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===n&&t.callee===r;case"ConditionalExpression":return"test"===n&&t.test===r;case"MemberExpression":return"object"===n&&t.object===r;default:return!1}case"ArrowFunctionExpression":return"CallExpression"===t.type&&"callee"===n||a(t);case"ObjectExpression":if("ArrowFunctionExpression"===t.type&&"body"===n)return!0;default:if("NewExpression"===t.type&&"callee"===n&&t.callee===r)return s(r)}return!(e===!0||this.canBeFirstInStatement()||!this.firstInStatement())};var h={};[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%","**"]].forEach(function(e,t){e.forEach(function(e){h[e]=t})}),f.canBeFirstInStatement=function(){var e=this.getNode();return!l.FunctionExpression.check(e)&&!l.ObjectExpression.check(e)},f.firstInStatement=function(){for(var e,t,n,r,i=this.stack,s=i.length-1;s>=0;s-=2)if(l.Node.check(i[s])&&(n=e,r=t,e=i[s-1],t=i[s]),t&&r){if(l.BlockStatement.check(t)&&"body"===e&&0===n)return o.strictEqual(t.body[0],r),!0;if(l.ExpressionStatement.check(t)&&"expression"===n)return o.strictEqual(t.expression,r),!0;if(l.SequenceExpression.check(t)&&"expressions"===e&&0===n)o.strictEqual(t.expressions[0],r);else if(l.CallExpression.check(t)&&"callee"===n)o.strictEqual(t.callee,r);else if(l.MemberExpression.check(t)&&"object"===n)o.strictEqual(t.object,r);else if(l.ConditionalExpression.check(t)&&"test"===n)o.strictEqual(t.test,r);else if(a(t)&&"left"===n)o.strictEqual(t.left,r);else{if(!l.UnaryExpression.check(t)||t.prefix||"argument"!==n)return!1;o.strictEqual(t.argument,r)}}return!0}},{"./types":537,assert:2}],531:[function(e,t,n){function r(e){return e[h]}function i(e,t){c.ok(this instanceof i),c.ok(e.length>0),t?y.assert(t):t=null,Object.defineProperty(this,h,{value:{infos:e,mappings:[],name:t,cachedSourceMap:null}}),t&&r(this).mappings.push(new b(this,{start:this.firstPos(),end:this.lastPos()}))}function a(e){return{line:e.line,indent:e.indent,locked:e.locked,sliceStart:e.sliceStart,sliceEnd:e.sliceEnd}}function s(e,t){for(var n=0,r=e.length,i=0;i0);var a=Math.ceil(n/t)*t;a===n?n+=t:n=a;break;case 11:case 12:case 13:case 65279:break;case 32:default:n+=1}return n}function o(e,t){if(e instanceof i)return e;e+="";var n=t&&t.tabWidth,r=e.indexOf("\t")<0,a=!(!t||!t.locked),o=!t&&r&&e.length<=_;if(c.ok(n||r,"No tab width specified but encountered tabs in string\n"+e),o&&x.call(v,e))return v[e];var u=new i(e.split(A).map(function(e){var t=E.exec(e)[0];return{line:e,indent:s(t,n),locked:a,sliceStart:t.length,sliceEnd:e.length}}),f(t).sourceFileName);return o&&(v[e]=u),u}function u(e){return!/\S/.test(e)}function l(e,t,n){var r=e.sliceStart,i=e.sliceEnd,a=Math.max(e.indent,0),s=a+i-r;return"undefined"==typeof n&&(n=s),t=Math.max(t,0),n=Math.min(n,s),n=Math.max(n,t),n=0),c.ok(r<=i),c.strictEqual(s,a+i-r),e.indent===a&&e.sliceStart===r&&e.sliceEnd===i?e:{line:e.line,indent:a,locked:!1,sliceStart:r,sliceEnd:i}}var c=e("assert"),p=e("source-map"),f=e("./options").normalize,h=e("private").makeUniqueKey(),d=e("./types"),y=d.builtInTypes.string,m=e("./util").comparePos,b=e("./mapping");n.Lines=i;var g=i.prototype;Object.defineProperties(g,{length:{get:function(){return r(this).infos.length}},name:{get:function(){return r(this).name}}});var v={},x=v.hasOwnProperty,_=10;n.countSpaces=s;var E=/^\s*/,A=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/;n.fromString=o,g.toString=function(e){return this.sliceString(this.firstPos(),this.lastPos(),e)},g.getSourceMap=function(e,t){function n(n){return n=n||{},y.assert(e),n.file=e,t&&(y.assert(t),n.sourceRoot=t),n}if(!e)return null;var i=this,a=r(i);if(a.cachedSourceMap)return n(a.cachedSourceMap.toJSON());var s=new p.SourceMapGenerator(n()),o={};return a.mappings.forEach(function(e){for(var t=e.sourceLines.skipSpaces(e.sourceLoc.start)||e.sourceLines.lastPos(),n=i.skipSpaces(e.targetLoc.start)||i.lastPos();m(t,e.sourceLoc.end)<0&&m(n,e.targetLoc.end)<0;){var r=e.sourceLines.charAt(t),a=i.charAt(n);c.strictEqual(r,a);var u=e.sourceLines.name;if(s.addMapping({source:u,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column}}),!x.call(o,u)){var l=e.sourceLines.toString();s.setSourceContent(u,l),o[u]=l}i.nextPos(n,!0),e.sourceLines.nextPos(t,!0)}}),a.cachedSourceMap=s,s.toJSON()},g.bootstrapCharAt=function(e){c.strictEqual(typeof e,"object"),c.strictEqual(typeof e.line,"number"),c.strictEqual(typeof e.column,"number");var t=e.line,n=e.column,r=this.toString().split(A),i=r[t-1];return"undefined"==typeof i?"":n===i.length&&t=i.length?"":i.charAt(n)},g.charAt=function(e){c.strictEqual(typeof e,"object"),c.strictEqual(typeof e.line,"number"),c.strictEqual(typeof e.column,"number");var t=e.line,n=e.column,i=r(this),a=i.infos,s=a[t-1],o=n;if("undefined"==typeof s||o<0)return"";var u=this.getIndentAt(t);return o=s.sliceEnd?"":s.line.charAt(o))},g.stripMargin=function(e,t){if(0===e)return this;if(c.ok(e>0,"negative margin: "+e),t&&1===this.length)return this;var n=r(this),s=new i(n.infos.map(function(n,r){return n.line&&(r>0||!t)&&(n=a(n),n.indent=Math.max(0,n.indent-e)),n}));if(n.mappings.length>0){var o=r(s).mappings;c.strictEqual(o.length,0),n.mappings.forEach(function(n){o.push(n.indent(e,t,!0))})}return s},g.indent=function(e){if(0===e)return this;var t=r(this),n=new i(t.infos.map(function(t){return t.line&&!t.locked&&(t=a(t),t.indent+=e),t}));if(t.mappings.length>0){var s=r(n).mappings;c.strictEqual(s.length,0),t.mappings.forEach(function(t){s.push(t.indent(e))})}return n},g.indentTail=function(e){if(0===e)return this;if(this.length<2)return this;var t=r(this),n=new i(t.infos.map(function(t,n){return n>0&&t.line&&!t.locked&&(t=a(t),t.indent+=e),t}));if(t.mappings.length>0){var s=r(n).mappings;c.strictEqual(s.length,0),t.mappings.forEach(function(t){s.push(t.indent(e,!0))})}return n},g.lockIndentTail=function(){if(this.length<2)return this;var e=r(this).infos;return new i(e.map(function(e,t){return e=a(e),e.locked=t>0,e}))},g.getIndentAt=function(e){c.ok(e>=1,"no line "+e+" (line numbers start from 1)");var t=r(this),n=t.infos[e-1];return Math.max(n.indent,0)},g.guessTabWidth=function(){var e=r(this);if(x.call(e,"cachedTabWidth"))return e.cachedTabWidth;for(var t=[],n=0,i=1,a=this.length;i<=a;++i){var s=e.infos[i-1],o=s.line.slice(s.sliceStart,s.sliceEnd);if(!u(o)){var l=Math.abs(s.indent-n);t[l]=~~t[l]+1,n=s.indent}}for(var c=-1,p=2,f=1;fc&&(c=t[f],p=f);return e.cachedTabWidth=p},g.isOnlyWhitespace=function(){return u(this.toString())},g.isPrecededOnlyByWhitespace=function(e){var t=r(this),n=t.infos[e.line-1],i=Math.max(n.indent,0),a=e.column-i;if(a<=0)return!0;var s=n.sliceStart,o=Math.min(s+a,n.sliceEnd),l=n.line.slice(s,o);return u(l)},g.getLineLength=function(e){var t=r(this),n=t.infos[e-1];return this.getIndentAt(e)+n.sliceEnd-n.sliceStart},g.nextPos=function(e,t){var n=Math.max(e.line,0),r=Math.max(e.column,0);return r0){var o=r(s).mappings;c.strictEqual(o.length,0),n.mappings.forEach(function(n){var r=n.slice(this,e,t);r&&o.push(r)},this)}return s},g.bootstrapSliceString=function(e,t,n){return this.slice(e,t).toString(n)},g.sliceString=function(e,t,n){if(!t){if(!e)return this;t=this.lastPos()}n=f(n);for(var i=r(this).infos,a=[],o=n.tabWidth,c=e.line;c<=t.line;++c){var p=i[c-1];c===e.line?p=c===t.line?l(p,e.column,t.column):l(p,e.column):c===t.line&&(p=l(p,0,t.column));var h=Math.max(p.indent,0),d=p.line.slice(0,p.sliceStart);if(n.reuseWhitespace&&u(d)&&s(d,n.tabWidth)===h)a.push(p.line.slice(0,p.sliceEnd));else{var y=0,m=h;n.useTabs&&(y=Math.floor(h/o),m-=y*o);var b="";y>0&&(b+=new Array(y+1).join("\t")),m>0&&(b+=new Array(m+1).join(" ")),b+=p.line.slice(p.sliceStart,p.sliceEnd),a.push(b)}}return a.join(n.lineTerminator)},g.isEmpty=function(){return this.length<2&&this.getLineLength(1)<1},g.join=function(e){function t(e){if(null!==e){if(s){var t=e.infos[0],n=new Array(t.indent+1).join(" "),r=c.length,i=Math.max(s.indent,0)+s.sliceEnd-s.sliceStart;s.line=s.line.slice(0,s.sliceEnd)+n+t.line.slice(t.sliceStart,t.sliceEnd),s.locked=s.locked||t.locked,s.sliceEnd=s.line.length,e.mappings.length>0&&e.mappings.forEach(function(e){p.push(e.add(r,i))})}else e.mappings.length>0&&p.push.apply(p,e.mappings);e.infos.forEach(function(e,t){(!s||t>0)&&(s=a(e),c.push(s))})}}function n(e,n){n>0&&t(l),t(e)}var s,u=this,l=r(u),c=[],p=[];if(e.map(function(e){var t=o(e);return t.isEmpty()?null:r(t)}).forEach(u.isEmpty()?t:n),c.length<1)return D;var f=new i(c);return r(f).mappings=p,f},n.concat=function(e){return D.join(e)},g.concat=function(e){var t=arguments,n=[this];return n.push.apply(n,t),c.strictEqual(n.length,t.length+1),D.join(n)};var D=o("")},{"./mapping":532,"./options":533,"./types":537,"./util":538,assert:2,private:560,"source-map":571}],532:[function(e,t,n){function r(e,t,n){o.ok(this instanceof r),o.ok(e instanceof f.Lines),c.assert(t),n?o.ok(l.check(n.start.line)&&l.check(n.start.column)&&l.check(n.end.line)&&l.check(n.end.column)):n=t,Object.defineProperties(this,{sourceLines:{value:e},sourceLoc:{value:t},targetLoc:{value:n}})}function i(e,t,n){return{line:e.line+t-1,column:1===e.line?e.column+n:e.column}}function a(e,t,n){return{line:e.line-t+1,column:e.line===t?e.column-n:e.column}}function s(e,t,n,r,i){o.ok(e instanceof f.Lines),o.ok(n instanceof f.Lines),p.assert(t),p.assert(r),p.assert(i);var a=h(r,i);if(0===a)return t;if(a<0){var s=e.skipSpaces(t),u=n.skipSpaces(r),l=i.line-u.line;for(s.line+=l,u.line+=l,l>0?(s.column=0,u.column=0):o.strictEqual(l,0);h(u,i)<0&&n.nextPos(u,!0);)o.ok(e.nextPos(s,!0)),o.strictEqual(e.charAt(s),n.charAt(u))}else{var s=e.skipSpaces(t,!0),u=n.skipSpaces(r,!0),l=i.line-u.line;for(s.line+=l,u.line+=l,l<0?(s.column=e.getLineLength(s.line),u.column=n.getLineLength(u.line)):o.strictEqual(l,0);h(i,u)<0&&n.prevPos(u,!0);)o.ok(e.prevPos(s,!0)),o.strictEqual(e.charAt(s),n.charAt(u))}return s}var o=e("assert"),u=e("./types"),l=(u.builtInTypes.string,u.builtInTypes.number),c=u.namedTypes.SourceLocation,p=u.namedTypes.Position,f=e("./lines"),h=e("./util").comparePos,d=r.prototype;t.exports=r,d.slice=function(e,t,n){function i(r){var i=l[r],a=c[r],p=t;return"end"===r?p=n:o.strictEqual(r,"start"),s(u,i,e,a,p)}o.ok(e instanceof f.Lines),p.assert(t),n?p.assert(n):n=e.lastPos();var u=this.sourceLines,l=this.sourceLoc,c=this.targetLoc;if(h(t,c.start)<=0)if(h(c.end,n)<=0)c={start:a(c.start,t.line,t.column),end:a(c.end,t.line,t.column)};else{if(h(n,c.start)<=0)return null;l={start:l.start,end:i("end")},c={start:a(c.start,t.line,t.column),end:a(n,t.line,t.column)}}else{if(h(c.end,t)<=0)return null;h(c.end,n)<=0?(l={start:i("start"),end:l.end},c={start:{line:1,column:0},end:a(c.end,t.line,t.column)}):(l={start:i("start"),end:i("end")},c={start:{line:1,column:0},end:a(n,t.line,t.column)})}return new r(this.sourceLines,l,c)},d.add=function(e,t){return new r(this.sourceLines,this.sourceLoc,{start:i(this.targetLoc.start,e,t),end:i(this.targetLoc.end,e,t)})},d.subtract=function(e,t){return new r(this.sourceLines,this.sourceLoc,{start:a(this.targetLoc.start,e,t),end:a(this.targetLoc.end,e,t)})},d.indent=function(e,t,n){if(0===e)return this;var i=this.targetLoc,a=i.start.line,s=i.end.line;if(t&&1===a&&1===s)return this;if(i={start:i.start,end:i.end},!t||a>1){var o=i.start.column+e;i.start={line:a,column:n?Math.max(0,o):o}}if(!t||s>1){var u=i.end.column+e;i.end={line:s,column:n?Math.max(0,u):u}}return new r(this.sourceLines,this.sourceLoc,i)}},{"./lines":531,"./types":537,"./util":538,assert:2}],533:[function(e,t,n){var r={parser:e("esprima"),tabWidth:4,useTabs:!1,reuseWhitespace:!0,lineTerminator:e("os").EOL,wrapColumn:74,sourceFileName:null,sourceMapName:null,sourceRoot:null,inputSourceMap:null,range:!1,tolerant:!0,quote:null,trailingComma:!1,arrayBracketSpacing:!1,objectCurlySpacing:!0,arrowParensAlways:!1,flowObjectCommas:!0},i=r.hasOwnProperty;n.normalize=function(e){function t(t){return i.call(e,t)?e[t]:r[t]}return e=e||r,{tabWidth:+t("tabWidth"),useTabs:!!t("useTabs"),reuseWhitespace:!!t("reuseWhitespace"),lineTerminator:t("lineTerminator"),wrapColumn:Math.max(t("wrapColumn"),0),sourceFileName:t("sourceFileName"),sourceMapName:t("sourceMapName"),sourceRoot:t("sourceRoot"),inputSourceMap:t("inputSourceMap"),parser:t("esprima")||t("parser"),range:t("range"),tolerant:t("tolerant"),quote:t("quote"),trailingComma:t("trailingComma"),arrayBracketSpacing:t("arrayBracketSpacing"),objectCurlySpacing:t("objectCurlySpacing"),arrowParensAlways:t("arrowParensAlways"),flowObjectCommas:t("flowObjectCommas")}}},{esprima:559,os:11}],534:[function(e,t,n){function r(e){i.ok(this instanceof r),this.lines=e,this.indent=0}var i=e("assert"),a=e("./types"),s=(a.namedTypes,a.builders),o=a.builtInTypes.object,u=a.builtInTypes.array,l=(a.builtInTypes.function,e("./patcher").Patcher,e("./options").normalize),c=e("./lines").fromString,p=e("./comments").attach,f=e("./util");n.parse=function(e,t){t=l(t);var n=c(e,t),i=n.toString({tabWidth:t.tabWidth,reuseWhitespace:!1,useTabs:!1}),a=[],o=t.parser.parse(i,{jsx:!0,loc:!0,locations:!0,range:t.range,comment:!0,onComment:a,tolerant:t.tolerant,ecmaVersion:6,sourceType:"module"});f.fixFaultyLocations(o,n),o.loc=o.loc||{start:n.firstPos(),end:n.lastPos()},o.loc.lines=n,o.loc.indent=0;var u=f.getTrueLoc(o,n);o.loc.start=u.start,o.loc.end=u.end,o.comments&&(a=o.comments,delete o.comments);var h=o;if("Program"===h.type){var h=s.file(o);h.loc={lines:n,indent:0,start:n.firstPos(),end:n.lastPos()}}else"File"===h.type&&(o=h.program);return p(a,o.body.length?h.program:h,n),new r(n).copy(h)};var h=r.prototype;h.copy=function(e){if(u.check(e))return e.map(this.copy,this);if(!o.check(e))return e;f.fixFaultyLocations(e,this.lines);var t=Object.create(Object.getPrototypeOf(e),{original:{value:e,configurable:!1,enumerable:!1,writable:!0}}),n=e.loc,r=this.indent,i=r;n&&(("Block"===e.type||"Line"===e.type||"CommentBlock"===e.type||"CommentLine"===e.type||this.lines.isPrecededOnlyByWhitespace(n.start))&&(i=this.indent=n.start.column),n.lines=this.lines,n.indent=i);for(var a=Object.keys(e),s=a.length,l=0;l0||(r(i,e.start),a.push(e.lines),i=e.end)}),r(i,t.end),m.concat(a)}}function i(e){var t=[];return e.comments&&e.comments.length>0&&e.comments.forEach(function(e){(e.leading||e.trailing)&&t.push(e)}),t}function a(e,t,n){var r=_.copyPos(t.start),i=e.prevPos(r)&&e.charAt(r),a=n.charAt(n.firstPos());return i&&w.test(i)&&a&&w.test(a)}function s(e,t,n){var r=e.charAt(t.end),i=n.lastPos(),a=n.prevPos(i)&&n.charAt(i);return a&&w.test(a)&&r&&w.test(r)}function o(e,t){var n=e.getValue();g.assert(n);var r=n.original;if(g.assert(r),y.deepEqual(t,[]),n.type!==r.type)return!1;var i=new A(r),a=d(e,i,t);return a||(t.length=0),a}function u(e,t,n){var r=e.getValue(),i=t.getValue();return r===i||(C.check(r)?l(e,t,n):!!D.check(r)&&c(e,t,n))}function l(e,t,n){var r=e.getValue(),i=t.getValue();C.assert(r);var a=r.length;if(!C.check(i)||i.length!==a)return!1;for(var s=0;s0&&o.forEach(function(e){var t=e.oldPath.getValue();y.ok(t.leading||t.trailing),r.replace(t.loc,n(e.newPath).indentTail(t.loc.indent))}),u},k.deleteComments=function(e){if(e.comments){var t=this;e.comments.forEach(function(n){n.leading?t.replace({start:n.loc.start,end:e.loc.lines.skipSpaces(n.loc.end,!1,!1)},""):n.trailing&&t.replace({start:e.loc.lines.skipSpaces(n.loc.start,!0,!1),end:n.loc.end},"")})}},n.getReprinter=function(e){y.ok(e instanceof A);var t=e.getValue();if(g.check(t)){var n=t.original,i=n&&n.loc,u=i&&i.lines,l=[];if(u&&o(e,l))return function(e){var t=new r(u);return l.forEach(function(n){var r=n.newPath.getValue(),i=n.oldPath.getValue();x.assert(i.loc,!0);var o=!t.tryToReprintComments(r,i,e);o&&t.deleteComments(i);var l=e(n.newPath,o).indentTail(i.loc.indent),c=a(u,i.loc,l),p=s(u,i.loc,l);if(c||p){var f=[];c&&f.push(" "),f.push(l),p&&f.push(" "),l=m.concat(f)}t.replace(i.loc,l)}),t.get(i).indentTail(-n.loc.indent)}}};var F={line:1,column:0},T=/\S/},{"./fast-path":530,"./lines":531,"./types":537,"./util":538,assert:2}],536:[function(e,t,n){function r(e,t){A.ok(this instanceof r),j.assert(e),this.code=e,t&&(B.assert(t),this.map=t)}function i(e){function t(e){return A.ok(e instanceof O),D(e,n)}function n(e,n){if(n)return t(e);if(A.ok(e instanceof O),!c){var r=p.tabWidth,i=e.getNode().loc;if(i&&i.lines&&i.lines.guessTabWidth){p.tabWidth=i.lines.guessTabWidth();var a=o(e);return p.tabWidth=r,a}}return o(e)}function o(e){var t=F(e);return t?a(e,t(n)):u(e)}function u(e,n){return n?D(e,u):s(e,p,t)}function l(e){return s(e,p,l)}A.ok(this instanceof i);var c=e&&e.tabWidth,p=k(e);A.notStrictEqual(p,e),p.sourceFileName=null,this.print=function(e){if(!e)return M;var t=n(O.from(e),!0);return new r(t.toString(p),I.composeSourceMaps(p.inputSourceMap,t.getSourceMap(p.sourceMapName,p.sourceRoot)))},this.printGenerically=function(e){if(!e)return M;var t=O.from(e),n=p.reuseWhitespace;p.reuseWhitespace=!1;var i=new r(l(t).toString(p));return p.reuseWhitespace=n,i}}function a(e,t){return e.needsParens()?w(["(",t,")"]):t}function s(e,t,n){A.ok(e instanceof O);var r=e.getValue(),i=[],a=!1,s=o(e,t,n);return!r||s.isEmpty()?s:(r.decorators&&r.decorators.length>0&&!I.getParentExportDeclaration(e)?e.each(function(e){i.push(n(e),"\n")},"decorators"):I.isExportDeclaration(r)&&r.declaration&&r.declaration.decorators?e.each(function(e){i.push(n(e),"\n")},"declaration","decorators"):a=e.needsParens(),a&&i.unshift("("),i.push(s),a&&i.push(")"),w(i))}function o(e,t,n){var r=e.getValue();if(!r)return S("");if("string"==typeof r)return S(r,t);P.Printable.assert(r);var i=[];switch(r.type){case"File":return e.call(n,"program");case"Program":return r.directives&&e.each(function(e){i.push(n(e),";\n")},"directives"),i.push(e.call(function(e){return u(e,t,n)},"body")),w(i);case"Noop":case"EmptyStatement":return S("");case"ExpressionStatement":return w([e.call(n,"expression"),";"]);case"ParenthesizedExpression":return w(["(",e.call(n,"expression"),")"]);case"BinaryExpression":case"LogicalExpression":case"AssignmentExpression":return S(" ").join([e.call(n,"left"),r.operator,e.call(n,"right")]);case"AssignmentPattern":return w([e.call(n,"left")," = ",e.call(n,"right")]);case"MemberExpression":i.push(e.call(n,"object"));var a=e.call(n,"property");return r.computed?i.push("[",a,"]"):i.push(".",a),w(i);case"MetaProperty":return w([e.call(n,"meta"),".",e.call(n,"property")]);case"BindExpression":return r.object&&i.push(e.call(n,"object")),i.push("::",e.call(n,"callee")),w(i);case"Path":return S(".").join(r.body);case"Identifier":return w([S(r.name,t),e.call(n,"typeAnnotation")]);case"SpreadElement":case"SpreadElementPattern":case"RestProperty":case"SpreadProperty":case"SpreadPropertyPattern":case"RestElement":return w(["...",e.call(n,"argument")]);case"FunctionDeclaration":case"FunctionExpression":return r.async&&i.push("async "),i.push("function"),r.generator&&i.push("*"),r.id&&i.push(" ",e.call(n,"id"),e.call(n,"typeParameters")),i.push("(",h(e,t,n),")",e.call(n,"returnType")," ",e.call(n,"body")),w(i);case"ArrowFunctionExpression":return r.async&&i.push("async "),r.typeParameters&&i.push(e.call(n,"typeParameters")),t.arrowParensAlways||1!==r.params.length||r.rest||"Identifier"!==r.params[0].type||r.params[0].typeAnnotation||r.returnType?i.push("(",h(e,t,n),")",e.call(n,"returnType")):i.push(e.call(n,"params",0)),i.push(" => ",e.call(n,"body")),w(i);case"MethodDefinition":return r.static&&i.push("static "),i.push(c(e,t,n)),w(i);case"YieldExpression":return i.push("yield"),r.delegate&&i.push("*"),r.argument&&i.push(" ",e.call(n,"argument")),w(i);case"AwaitExpression":return i.push("await"),r.all&&i.push("*"),r.argument&&i.push(" ",e.call(n,"argument")),w(i);case"ModuleDeclaration":return i.push("module",e.call(n,"id")),r.source?(A.ok(!r.body),i.push("from",e.call(n,"source"))):i.push(e.call(n,"body")),S(" ").join(i);case"ImportSpecifier":return r.imported?(i.push(e.call(n,"imported")),r.local&&r.local.name!==r.imported.name&&i.push(" as ",e.call(n,"local"))):r.id&&(i.push(e.call(n,"id")),r.name&&i.push(" as ",e.call(n,"name"))),w(i);case"ExportSpecifier":return r.local?(i.push(e.call(n,"local")),r.exported&&r.exported.name!==r.local.name&&i.push(" as ",e.call(n,"exported"))):r.id&&(i.push(e.call(n,"id")),r.name&&i.push(" as ",e.call(n,"name"))),w(i);case"ExportBatchSpecifier":return S("*");case"ImportNamespaceSpecifier":return i.push("* as "),r.local?i.push(e.call(n,"local")):r.id&&i.push(e.call(n,"id")),w(i);case"ImportDefaultSpecifier":return r.local?e.call(n,"local"):e.call(n,"id");case"ExportDeclaration":case"ExportDefaultDeclaration":case"ExportNamedDeclaration":return y(e,t,n);case"ExportAllDeclaration":return i.push("export *"),r.exported&&i.push(" as ",e.call(n,"exported")),i.push(" from ",e.call(n,"source")),w(i);case"ExportNamespaceSpecifier":return w(["* as ",e.call(n,"exported")]);case"ExportDefaultSpecifier":return e.call(n,"exported");case"ImportDeclaration":if(i.push("import "),r.importKind&&"value"!==r.importKind&&i.push(r.importKind+" "),r.specifiers&&r.specifiers.length>0){var s=!1;e.each(function(e){var r=e.getName();r>0&&i.push(", ");var a=e.getValue();P.ImportDefaultSpecifier.check(a)||P.ImportNamespaceSpecifier.check(a)?A.strictEqual(s,!1):(P.ImportSpecifier.assert(a),s||(s=!0,i.push(t.objectCurlySpacing?"{ ":"{"))),i.push(n(e))},"specifiers"),s&&i.push(t.objectCurlySpacing?" }":"}"),i.push(" from ")}return i.push(e.call(n,"source"),";"),w(i);case"BlockStatement":var o=e.call(function(e){return u(e,t,n)},"body");return!o.isEmpty()||r.directives&&0!==r.directives.length?(i.push("{\n"),r.directives&&e.each(function(e){i.push(n(e).indent(t.tabWidth),";",r.directives.length>1||!o.isEmpty()?"\n":"")},"directives"),i.push(o.indent(t.tabWidth)),i.push("\n}"),w(i)):S("{}");case"ReturnStatement":if(i.push("return"),r.argument){var l=e.call(n,"argument");l.length>1&&P.JSXElement&&P.JSXElement.check(r.argument)?i.push(" (\n",l.indent(t.tabWidth),"\n)"):i.push(" ",l)}return i.push(";"),w(i);case"CallExpression":return w([e.call(n,"callee"),f(e,t,n)]);case"ObjectExpression":case"ObjectPattern":case"ObjectTypeAnnotation":var g=!1,x="ObjectTypeAnnotation"===r.type,E=t.flowObjectCommas?",":x?";":",",D=[];x&&D.push("indexers","callProperties"),D.push("properties");var C=0;D.forEach(function(e){C+=r[e].length});var k=x&&1===C||0===C,F=r.exact?"{|":"{",T=r.exact?"|}":"}";i.push(k?F:F+"\n");var j=i.length-1,B=0;return D.forEach(function(r){e.each(function(e){var r=n(e);k||(r=r.indent(t.tabWidth));var a=!x&&r.length>1;a&&g&&i.push("\n"),i.push(r),B0&&i.push(" "):a=a.indent(t.tabWidth),i.push(a),(n1?i.push(S(",\n").join(L).indentTail(r.kind.length+1)):i.push(L[0]);var V=e.getParentNode();return P.ForStatement.check(V)||P.ForInStatement.check(V)||P.ForOfStatement&&P.ForOfStatement.check(V)||P.ForAwaitStatement&&P.ForAwaitStatement.check(V)||i.push(";"),w(i);case"VariableDeclarator":return r.init?S(" = ").join([e.call(n,"id"),e.call(n,"init")]):e.call(n,"id");case"WithStatement":return w(["with (",e.call(n,"object"),") ",e.call(n,"body")]);case"IfStatement":var G=b(e.call(n,"consequent"),t),i=["if (",e.call(n,"test"),")",G];return r.alternate&&i.push(v(G)?" else":"\nelse",b(e.call(n,"alternate"),t)),w(i);case"ForStatement":var q=e.call(n,"init"),K=q.length>1?";\n":"; ",X="for (",J=S(K).join([q,e.call(n,"test"),e.call(n,"update")]).indentTail(X.length),W=w([X,J,")"]),z=b(e.call(n,"body"),t),i=[W];return W.length>1&&(i.push("\n"),z=z.trimLeft()),i.push(z),w(i);case"WhileStatement":return w(["while (",e.call(n,"test"),")",b(e.call(n,"body"),t)]);case"ForInStatement":return w([r.each?"for each (":"for (",e.call(n,"left")," in ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"ForOfStatement":return w(["for (",e.call(n,"left")," of ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"ForAwaitStatement":return w(["for await (",e.call(n,"left")," of ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"DoWhileStatement":var Y=w(["do",b(e.call(n,"body"),t)]),i=[Y];return v(Y)?i.push(" while"):i.push("\nwhile"),i.push(" (",e.call(n,"test"),");"),w(i);case"DoExpression":var H=e.call(function(e){return u(e,t,n)},"body");return w(["do {\n",H.indent(t.tabWidth),"\n}"]);case"BreakStatement":return i.push("break"),r.label&&i.push(" ",e.call(n,"label")),i.push(";"),w(i);case"ContinueStatement":return i.push("continue"),r.label&&i.push(" ",e.call(n,"label")),i.push(";"),w(i);case"LabeledStatement":return w([e.call(n,"label"),":\n",e.call(n,"body")]);case"TryStatement":return i.push("try ",e.call(n,"block")),r.handler?i.push(" ",e.call(n,"handler")):r.handlers&&e.each(function(e){i.push(" ",n(e))},"handlers"),r.finalizer&&i.push(" finally ",e.call(n,"finalizer")),w(i);case"CatchClause":return i.push("catch (",e.call(n,"param")),r.guard&&i.push(" if ",e.call(n,"guard")),i.push(") ",e.call(n,"body")),w(i);case"ThrowStatement":return w(["throw ",e.call(n,"argument"),";"]);case"SwitchStatement":return w(["switch (",e.call(n,"discriminant"),") {\n",S("\n").join(e.map(n,"cases")),"\n}"]);case"SwitchCase":return r.test?i.push("case ",e.call(n,"test"),":"):i.push("default:"),r.consequent.length>0&&i.push("\n",e.call(function(e){return u(e,t,n)},"consequent").indent(t.tabWidth)),w(i);case"DebuggerStatement":return S("debugger;");case"JSXAttribute":return i.push(e.call(n,"name")),r.value&&i.push("=",e.call(n,"value")),w(i);case"JSXIdentifier":return S(r.name,t);case"JSXNamespacedName":return S(":").join([e.call(n,"namespace"),e.call(n,"name")]);case"JSXMemberExpression":return S(".").join([e.call(n,"object"),e.call(n,"property")]);case"JSXSpreadAttribute":return w(["{...",e.call(n,"argument"),"}"]);case"JSXExpressionContainer":return w(["{",e.call(n,"expression"),"}"]);case"JSXElement":var $=e.call(n,"openingElement");if(r.openingElement.selfClosing)return A.ok(!r.closingElement),$;var Q=w(e.map(function(e){var t=e.getValue();if(P.Literal.check(t)&&"string"==typeof t.value){if(/\S/.test(t.value))return t.value.replace(/^\s+|\s+$/g,"");if(/\n/.test(t.value))return"\n"}return n(e)},"children")).indentTail(t.tabWidth),Z=e.call(n,"closingElement");return w([$,Q,Z]);case"JSXOpeningElement":i.push("<",e.call(n,"name"));var ee=[];e.each(function(e){ee.push(" ",n(e))},"attributes");var te=w(ee),ne=te.length>1||te.getLineLength(1)>t.wrapColumn;return ne&&(ee.forEach(function(e,t){" "===e&&(A.strictEqual(t%2,0),ee[t]="\n")}),te=w(ee).indentTail(t.tabWidth)),i.push(te,r.selfClosing?" />":">"),w(i);case"JSXClosingElement":return w([""]);case"JSXText":return S(r.value,t);case"JSXEmptyExpression":return S("");case"TypeAnnotatedIdentifier":return w([e.call(n,"annotation")," ",e.call(n,"identifier")]);case"ClassBody":return 0===r.body.length?S("{}"):w(["{\n",e.call(function(e){return u(e,t,n)},"body").indent(t.tabWidth),"\n}"]);case"ClassPropertyDefinition":return i.push("static ",e.call(n,"definition")),P.MethodDefinition.check(r.definition)||i.push(";"),w(i);case"ClassProperty":r.static&&i.push("static ");var O=e.call(n,"key");return r.computed?O=w(["[",O,"]"]):"plus"===r.variance?O=w(["+",O]):"minus"===r.variance&&(O=w(["-",O])),i.push(O),r.typeAnnotation&&i.push(e.call(n,"typeAnnotation")),r.value&&i.push(" = ",e.call(n,"value")),i.push(";"),w(i);case"ClassDeclaration":case"ClassExpression":return i.push("class"),r.id&&i.push(" ",e.call(n,"id"),e.call(n,"typeParameters")),r.superClass&&i.push(" extends ",e.call(n,"superClass"),e.call(n,"superTypeParameters")),r.implements&&r.implements.length>0&&i.push(" implements ",S(", ").join(e.map(n,"implements"))),i.push(" ",e.call(n,"body")),w(i);case"TemplateElement":return S(r.value.raw,t).lockIndentTail();case"TemplateLiteral":var re=e.map(n,"expressions");return i.push("`"),e.each(function(e){var t=e.getName();i.push(n(e)),t ":": ",e.call(n,"returnType")),w(i);case"FunctionTypeParam":return w([e.call(n,"name"),r.optional?"?":"",": ",e.call(n,"typeAnnotation")]);case"GenericTypeAnnotation":return w([e.call(n,"id"),e.call(n,"typeParameters")]);case"DeclareInterface":i.push("declare ");case"InterfaceDeclaration":return i.push(S("interface ",t),e.call(n,"id"),e.call(n,"typeParameters")," "),r.extends&&i.push("extends ",S(", ").join(e.map(n,"extends"))),i.push(" ",e.call(n,"body")),w(i);case"ClassImplements":case"InterfaceExtends":return w([e.call(n,"id"),e.call(n,"typeParameters")]);case"IntersectionTypeAnnotation":return S(" & ").join(e.map(n,"types"));case"NullableTypeAnnotation":return w(["?",e.call(n,"typeAnnotation")]);case"NullLiteralTypeAnnotation":return S("null",t);case"ThisTypeAnnotation":return S("this",t);case"NumberTypeAnnotation":return S("number",t);case"ObjectTypeCallProperty":return e.call(n,"value");case"ObjectTypeIndexer":var oe="plus"===r.variance?"+":"minus"===r.variance?"-":"";return w([oe,"[",e.call(n,"id"),": ",e.call(n,"key"),"]: ",e.call(n,"value")]);case"ObjectTypeProperty":var oe="plus"===r.variance?"+":"minus"===r.variance?"-":"";return w([oe,e.call(n,"key"),r.optional?"?":"",": ",e.call(n,"value")]);case"QualifiedTypeIdentifier":return w([e.call(n,"qualification"),".",e.call(n,"id")]);case"StringLiteralTypeAnnotation":return S(_(r.value,t),t);case"NumberLiteralTypeAnnotation":return A.strictEqual(typeof r.value,"number"),S(""+r.value,t);case"StringTypeAnnotation":return S("string",t);case"DeclareTypeAlias":i.push("declare ");case"TypeAlias":return w(["type ",e.call(n,"id"),e.call(n,"typeParameters")," = ",e.call(n,"right"),";"]);case"TypeCastExpression":return w(["(",e.call(n,"expression"),e.call(n,"typeAnnotation"),")"]);case"TypeParameterDeclaration":case"TypeParameterInstantiation":return w(["<",S(", ").join(e.map(n,"params")),">"]);case"TypeParameter":switch(r.variance){case"plus":i.push("+");break;case"minus":i.push("-")}return i.push(e.call(n,"name")),r.bound&&i.push(e.call(n,"bound")),r.default&&i.push("=",e.call(n,"default")),w(i);case"TypeofTypeAnnotation":return w([S("typeof ",t),e.call(n,"argument")]);case"UnionTypeAnnotation":return S(" | ").join(e.map(n,"types"));case"VoidTypeAnnotation":return S("void",t);case"NullTypeAnnotation":return S("null",t);case"ClassHeritage":case"ComprehensionBlock":case"ComprehensionExpression":case"Glob":case"GeneratorExpression":case"LetStatement":case"LetExpression":case"GraphExpression":case"GraphIndexExpression":case"XMLDefaultDeclaration":case"XMLAnyName":case"XMLQualifiedIdentifier":case"XMLFunctionQualifiedIdentifier":case"XMLAttributeSelector":case"XMLFilterExpression":case"XML":case"XMLElement":case"XMLList":case"XMLEscape":case"XMLText":case"XMLStartTag":case"XMLEndTag":case"XMLPointTag":case"XMLName":case"XMLAttribute":case"XMLCdata":case"XMLComment":case"XMLProcessingInstruction":default:throw new Error("unknown type: "+JSON.stringify(r.type))}return p}function u(e,t,n){var r=(P.ClassBody&&P.ClassBody.check(e.getParentNode()),[]),i=!1,a=!1;e.each(function(e){var t=(e.getName(),e.getValue());t&&"EmptyStatement"!==t.type&&(P.Comment.check(t)?i=!0:P.Statement.check(t)?a=!0:j.assert(t),r.push({node:t,printed:n(e)}))}),i&&A.strictEqual(a,!1,"Comments may appear as statements in otherwise empty statement lists, but may not coexist with non-Comment nodes.");var s=null,o=r.length,u=[];return r.forEach(function(e,n){var r,i,a=e.printed,c=e.node,p=a.length>1,f=n>0,h=nn.length?r:n}function c(e,t,n){var r=e.getNode(),i=r.kind,a=[];"ObjectMethod"===r.type||"ClassMethod"===r.type?r.value=r:P.FunctionExpression.assert(r.value),r.value.async&&a.push("async "),i&&"init"!==i&&"method"!==i&&"constructor"!==i?(A.ok("get"===i||"set"===i),a.push(i," ")):r.value.generator&&a.push("*");var s=e.call(n,"key");return r.computed&&(s=w(["[",s,"]"])),a.push(s,e.call(n,"value","typeParameters"),"(",e.call(function(e){return h(e,t,n)},"value"),")",e.call(n,"value","returnType")," ",e.call(n,"value","body")),w(a)}function f(e,t,n){var r=e.map(n,"arguments"),i=I.isTrailingCommaEnabled(t,"parameters"),a=S(", ").join(r);return a.getLineLength(1)>t.wrapColumn?(a=S(",\n").join(r),w(["(\n",a.indent(t.tabWidth),i?",\n)":"\n)"])):w(["(",a,")"])}function h(e,t,n){var r=e.getValue();P.Function.assert(r);var i=e.map(n,"params");r.defaults&&e.each(function(e){var t=e.getName(),r=i[t];r&&e.getValue()&&(i[t]=w([r," = ",n(e)]))},"defaults"),r.rest&&i.push(w(["...",e.call(n,"rest")]));var a=S(", ").join(i);return a.length>1||a.getLineLength(1)>t.wrapColumn?(a=S(",\n").join(i),a=w(I.isTrailingCommaEnabled(t,"parameters")&&!r.rest&&"RestElement"!==r.params[r.params.length-1].type?[a,",\n"]:[a,"\n"]),w(["\n",a.indent(t.tabWidth)])):a}function d(e,t,n){var r=e.getValue(),i=[];if(r.async&&i.push("async "),r.generator&&i.push("*"),r.method||"get"===r.kind||"set"===r.kind)return c(e,t,n);var a=e.call(n,"key");return r.computed?i.push("[",a,"]"):i.push(a),i.push("(",h(e,t,n),")",e.call(n,"returnType")," ",e.call(n,"body")),w(i)}function y(e,t,n){var r=e.getValue(),i=["export "],a=t.objectCurlySpacing;P.Declaration.assert(r),(r.default||"ExportDefaultDeclaration"===r.type)&&i.push("default "),r.declaration?i.push(e.call(n,"declaration")):r.specifiers&&r.specifiers.length>0&&(1===r.specifiers.length&&"ExportBatchSpecifier"===r.specifiers[0].type?i.push("*"):i.push(a?"{ ":"{",S(", ").join(e.map(n,"specifiers")),a?" }":"}"),r.source&&i.push(" from ",e.call(n,"source")));var s=w(i);return";"===g(s)||r.declaration&&("FunctionDeclaration"===r.declaration.type||"ClassDeclaration"===r.declaration.type)||(s=w([s,";"])),s}function m(e,t){var n=I.getParentExportDeclaration(e);return n?A.strictEqual(n.type,"DeclareExportDeclaration"):t.unshift("declare "),w(t)}function b(e,t){return w(e.length>1?[" ",e]:["\n",E(e).indent(t.tabWidth)])}function g(e){var t=e.lastPos();do{var n=e.charAt(t);if(/\S/.test(n))return n}while(e.prevPos(t))}function v(e){return"}"===g(e)}function x(e){return e.replace(/['"]/g,function(e){return'"'===e?"'":'"'})}function _(e,t){switch(j.assert(e),t.quote){case"auto":var n=JSON.stringify(e),r=x(JSON.stringify(x(e)));return n.length>r.length?r:n;case"single":return x(JSON.stringify(x(e)));case"double":default:return JSON.stringify(e)}}function E(e){var t=g(e);return!t||"\n};".indexOf(t)<0?w([e,";"]):e}var A=e("assert"),D=(e("source-map"),e("./comments").printComments),C=e("./lines"),S=C.fromString,w=C.concat,k=e("./options").normalize,F=e("./patcher").getReprinter,T=e("./types"),P=T.namedTypes,j=T.builtInTypes.string,B=T.builtInTypes.object,O=e("./fast-path"),I=e("./util"),N=r.prototype,L=!1;N.toString=function(){return L||(console.warn("Deprecation warning: recast.print now returns an object with a .code property. You appear to be treating the object as a string, which might still work but is strongly discouraged."),L=!0),this.code};var M=new r("");n.Printer=i},{"./comments":529,"./fast-path":530,"./lines":531,"./options":533,"./patcher":535,"./types":537,"./util":538,assert:2,"source-map":571}],537:[function(e,t,n){t.exports=e("ast-types")},{"ast-types":558}],538:[function(e,t,n){function r(){for(var e={},t=arguments.length,n=0;n",">=","<<",">>",">>>","+","-","*","/","%","&","|","^","in","instanceof","..");i("BinaryExpression").bases("Expression").build("operator","left","right").field("operator",c).field("left",i("Expression")).field("right",i("Expression"));var p=a("=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=");i("AssignmentExpression").bases("Expression").build("operator","left","right").field("operator",p).field("left",i("Pattern")).field("right",i("Expression"));var f=a("++","--");i("UpdateExpression").bases("Expression").build("operator","argument","prefix").field("operator",f).field("argument",i("Expression")).field("prefix",Boolean);var h=a("||","&&");i("LogicalExpression").bases("Expression").build("operator","left","right").field("operator",h).field("left",i("Expression")).field("right",i("Expression")),i("ConditionalExpression").bases("Expression").build("test","consequent","alternate").field("test",i("Expression")).field("consequent",i("Expression")).field("alternate",i("Expression")),i("NewExpression").bases("Expression").build("callee","arguments").field("callee",i("Expression")).field("arguments",[i("Expression")]),i("CallExpression").bases("Expression").build("callee","arguments").field("callee",i("Expression")).field("arguments",[i("Expression")]),i("MemberExpression").bases("Expression").build("object","property","computed").field("object",i("Expression")).field("property",a(i("Identifier"),i("Expression"))).field("computed",Boolean,function(){var e=this.property.type;return"Literal"===e||"MemberExpression"===e||"BinaryExpression"===e}),i("Pattern").bases("Node"),i("SwitchCase").bases("Node").build("test","consequent").field("test",a(i("Expression"),null)).field("consequent",[i("Statement")]),i("Identifier").bases("Node","Expression","Pattern").build("name").field("name",String),i("Literal").bases("Node","Expression").build("value").field("value",a(String,Boolean,null,Number,RegExp)).field("regex",a({pattern:String,flags:String},null),function(){if(this.value instanceof RegExp){var e="";return this.value.ignoreCase&&(e+="i"),this.value.multiline&&(e+="m"),this.value.global&&(e+="g"),{pattern:this.value.source,flags:e}}return null}),i("Comment").bases("Printable").field("value",String).field("leading",Boolean,o.true).field("trailing",Boolean,o.false)}},{"../lib/shared":556,"../lib/types":557}],543:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or;r("XMLDefaultDeclaration").bases("Declaration").field("namespace",r("Expression")),
-r("XMLAnyName").bases("Expression"),r("XMLQualifiedIdentifier").bases("Expression").field("left",i(r("Identifier"),r("XMLAnyName"))).field("right",i(r("Identifier"),r("Expression"))).field("computed",Boolean),r("XMLFunctionQualifiedIdentifier").bases("Expression").field("right",i(r("Identifier"),r("Expression"))).field("computed",Boolean),r("XMLAttributeSelector").bases("Expression").field("attribute",r("Expression")),r("XMLFilterExpression").bases("Expression").field("left",r("Expression")).field("right",r("Expression")),r("XMLElement").bases("XML","Expression").field("contents",[r("XML")]),r("XMLList").bases("XML","Expression").field("contents",[r("XML")]),r("XML").bases("Node"),r("XMLEscape").bases("XML").field("expression",r("Expression")),r("XMLText").bases("XML").field("text",String),r("XMLStartTag").bases("XML").field("contents",[r("XML")]),r("XMLEndTag").bases("XML").field("contents",[r("XML")]),r("XMLPointTag").bases("XML").field("contents",[r("XML")]),r("XMLName").bases("XML").field("contents",i(String,[r("XML")])),r("XMLAttribute").bases("XML").field("value",String),r("XMLCdata").bases("XML").field("contents",String),r("XMLComment").bases("XML").field("contents",String),r("XMLProcessingInstruction").bases("XML").field("target",String).field("contents",i(String,null))}},{"../lib/types":557,"./core":542}],544:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("Function").field("generator",Boolean,a.false).field("expression",Boolean,a.false).field("defaults",[i(r("Expression"),null)],a.emptyArray).field("rest",i(r("Identifier"),null),a.null),r("RestElement").bases("Pattern").build("argument").field("argument",r("Pattern")),r("SpreadElementPattern").bases("Pattern").build("argument").field("argument",r("Pattern")),r("FunctionDeclaration").build("id","params","body","generator","expression"),r("FunctionExpression").build("id","params","body","generator","expression"),r("ArrowFunctionExpression").bases("Function","Expression").build("params","body","expression").field("id",null,a.null).field("body",i(r("BlockStatement"),r("Expression"))).field("generator",!1,a.false),r("YieldExpression").bases("Expression").build("argument","delegate").field("argument",i(r("Expression"),null)).field("delegate",Boolean,a.false),r("GeneratorExpression").bases("Expression").build("body","blocks","filter").field("body",r("Expression")).field("blocks",[r("ComprehensionBlock")]).field("filter",i(r("Expression"),null)),r("ComprehensionExpression").bases("Expression").build("body","blocks","filter").field("body",r("Expression")).field("blocks",[r("ComprehensionBlock")]).field("filter",i(r("Expression"),null)),r("ComprehensionBlock").bases("Node").build("left","right","each").field("left",r("Pattern")).field("right",r("Expression")).field("each",Boolean),r("Property").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("value",i(r("Expression"),r("Pattern"))).field("method",Boolean,a.false).field("shorthand",Boolean,a.false).field("computed",Boolean,a.false),r("PropertyPattern").bases("Pattern").build("key","pattern").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("pattern",r("Pattern")).field("computed",Boolean,a.false),r("ObjectPattern").bases("Pattern").build("properties").field("properties",[i(r("PropertyPattern"),r("Property"))]),r("ArrayPattern").bases("Pattern").build("elements").field("elements",[i(r("Pattern"),null)]),r("MethodDefinition").bases("Declaration").build("kind","key","value","static").field("kind",i("constructor","method","get","set")).field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("value",r("Function")).field("computed",Boolean,a.false).field("static",Boolean,a.false),r("SpreadElement").bases("Node").build("argument").field("argument",r("Expression")),r("ArrayExpression").field("elements",[i(r("Expression"),r("SpreadElement"),r("RestElement"),null)]),r("NewExpression").field("arguments",[i(r("Expression"),r("SpreadElement"))]),r("CallExpression").field("arguments",[i(r("Expression"),r("SpreadElement"))]),r("AssignmentPattern").bases("Pattern").build("left","right").field("left",r("Pattern")).field("right",r("Expression"));var s=i(r("MethodDefinition"),r("VariableDeclarator"),r("ClassPropertyDefinition"),r("ClassProperty"));r("ClassProperty").bases("Declaration").build("key").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("computed",Boolean,a.false),r("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition",s),r("ClassBody").bases("Declaration").build("body").field("body",[s]),r("ClassDeclaration").bases("Declaration").build("id","body","superClass").field("id",i(r("Identifier"),null)).field("body",r("ClassBody")).field("superClass",i(r("Expression"),null),a.null),r("ClassExpression").bases("Expression").build("id","body","superClass").field("id",i(r("Identifier"),null),a.null).field("body",r("ClassBody")).field("superClass",i(r("Expression"),null),a.null).field("implements",[r("ClassImplements")],a.emptyArray),r("ClassImplements").bases("Node").build("id").field("id",r("Identifier")).field("superClass",i(r("Expression"),null),a.null),r("Specifier").bases("Node"),r("ModuleSpecifier").bases("Specifier").field("local",i(r("Identifier"),null),a.null).field("id",i(r("Identifier"),null),a.null).field("name",i(r("Identifier"),null),a.null),r("TaggedTemplateExpression").bases("Expression").build("tag","quasi").field("tag",r("Expression")).field("quasi",r("TemplateLiteral")),r("TemplateLiteral").bases("Expression").build("quasis","expressions").field("quasis",[r("TemplateElement")]).field("expressions",[r("Expression")]),r("TemplateElement").bases("Node").build("value","tail").field("value",{cooked:String,raw:String}).field("tail",Boolean)}},{"../lib/shared":556,"../lib/types":557,"./core":542}],545:[function(e,t,n){t.exports=function(t){t.use(e("./es6"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=(n.builtInTypes,t.use(e("../lib/shared")).defaults);r("Function").field("async",Boolean,a.false),r("SpreadProperty").bases("Node").build("argument").field("argument",r("Expression")),r("ObjectExpression").field("properties",[i(r("Property"),r("SpreadProperty"))]),r("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument",r("Pattern")),r("ObjectPattern").field("properties",[i(r("Property"),r("PropertyPattern"),r("SpreadPropertyPattern"))]),r("AwaitExpression").bases("Expression").build("argument","all").field("argument",i(r("Expression"),null)).field("all",Boolean,a.false)}},{"../lib/shared":556,"../lib/types":557,"./es6":544}],546:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=t.use(e("../lib/shared")).defaults,i=n.Type.def,a=n.Type.or;i("VariableDeclaration").field("declarations",[a(i("VariableDeclarator"),i("Identifier"))]),i("Property").field("value",a(i("Expression"),i("Pattern"))),i("ArrayPattern").field("elements",[a(i("Pattern"),i("SpreadElement"),null)]),i("ObjectPattern").field("properties",[a(i("Property"),i("PropertyPattern"),i("SpreadPropertyPattern"),i("SpreadProperty"))]),i("ExportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ExportBatchSpecifier").bases("Specifier").build(),i("ImportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"),i("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"),i("ExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",a(i("Declaration"),i("Expression"),null)).field("specifiers",[a(i("ExportSpecifier"),i("ExportBatchSpecifier"))],r.emptyArray).field("source",a(i("Literal"),null),r.null),i("ImportDeclaration").bases("Declaration").build("specifiers","source").field("specifiers",[a(i("ImportSpecifier"),i("ImportNamespaceSpecifier"),i("ImportDefaultSpecifier"))],r.emptyArray).field("source",i("Literal")),i("Block").bases("Comment").build("value","leading","trailing"),i("Line").bases("Comment").build("value","leading","trailing")}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],547:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("Type").bases("Node"),r("AnyTypeAnnotation").bases("Type").build(),r("EmptyTypeAnnotation").bases("Type").build(),r("MixedTypeAnnotation").bases("Type").build(),r("VoidTypeAnnotation").bases("Type").build(),r("NumberTypeAnnotation").bases("Type").build(),r("NumberLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),r("StringTypeAnnotation").bases("Type").build(),r("StringLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",String).field("raw",String),r("BooleanTypeAnnotation").bases("Type").build(),r("BooleanLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Boolean).field("raw",String),r("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation",r("Type")),r("NullableTypeAnnotation").bases("Type").build("typeAnnotation").field("typeAnnotation",r("Type")),r("NullLiteralTypeAnnotation").bases("Type").build(),r("NullTypeAnnotation").bases("Type").build(),r("ThisTypeAnnotation").bases("Type").build(),r("ExistsTypeAnnotation").bases("Type").build(),r("ExistentialTypeParam").bases("Type").build(),r("FunctionTypeAnnotation").bases("Type").build("params","returnType","rest","typeParameters").field("params",[r("FunctionTypeParam")]).field("returnType",r("Type")).field("rest",i(r("FunctionTypeParam"),null)).field("typeParameters",i(r("TypeParameterDeclaration"),null)),r("FunctionTypeParam").bases("Node").build("name","typeAnnotation","optional").field("name",r("Identifier")).field("typeAnnotation",r("Type")).field("optional",Boolean),r("ArrayTypeAnnotation").bases("Type").build("elementType").field("elementType",r("Type")),r("ObjectTypeAnnotation").bases("Type").build("properties","indexers","callProperties").field("properties",[r("ObjectTypeProperty")]).field("indexers",[r("ObjectTypeIndexer")],a.emptyArray).field("callProperties",[r("ObjectTypeCallProperty")],a.emptyArray).field("exact",Boolean,a.false),r("ObjectTypeProperty").bases("Node").build("key","value","optional").field("key",i(r("Literal"),r("Identifier"))).field("value",r("Type")).field("optional",Boolean).field("variance",i("plus","minus",null),a.null),r("ObjectTypeIndexer").bases("Node").build("id","key","value").field("id",r("Identifier")).field("key",r("Type")).field("value",r("Type")).field("variance",i("plus","minus",null),a.null),r("ObjectTypeCallProperty").bases("Node").build("value").field("value",r("FunctionTypeAnnotation")).field("static",Boolean,a.false),r("QualifiedTypeIdentifier").bases("Node").build("qualification","id").field("qualification",i(r("Identifier"),r("QualifiedTypeIdentifier"))).field("id",r("Identifier")),r("GenericTypeAnnotation").bases("Type").build("id","typeParameters").field("id",i(r("Identifier"),r("QualifiedTypeIdentifier"))).field("typeParameters",i(r("TypeParameterInstantiation"),null)),r("MemberTypeAnnotation").bases("Type").build("object","property").field("object",r("Identifier")).field("property",i(r("MemberTypeAnnotation"),r("GenericTypeAnnotation"))),r("UnionTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("IntersectionTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("TypeofTypeAnnotation").bases("Type").build("argument").field("argument",r("Type")),r("Identifier").field("typeAnnotation",i(r("TypeAnnotation"),null),a.null),r("TypeParameterDeclaration").bases("Node").build("params").field("params",[r("TypeParameter")]),r("TypeParameterInstantiation").bases("Node").build("params").field("params",[r("Type")]),r("TypeParameter").bases("Type").build("name","variance","bound").field("name",String).field("variance",i("plus","minus",null),a.null).field("bound",i(r("TypeAnnotation"),null),a.null),r("Function").field("returnType",i(r("TypeAnnotation"),null),a.null).field("typeParameters",i(r("TypeParameterDeclaration"),null),a.null),r("ClassProperty").build("key","value","typeAnnotation","static").field("value",i(r("Expression"),null)).field("typeAnnotation",i(r("TypeAnnotation"),null)).field("static",Boolean,a.false).field("variance",i("plus","minus",null),a.null),r("ClassImplements").field("typeParameters",i(r("TypeParameterInstantiation"),null),a.null),r("InterfaceDeclaration").bases("Declaration").build("id","body","extends").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterDeclaration"),null),a.null).field("body",r("ObjectTypeAnnotation")).field("extends",[r("InterfaceExtends")]),r("DeclareInterface").bases("InterfaceDeclaration").build("id","body","extends"),r("InterfaceExtends").bases("Node").build("id").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterInstantiation"),null)),r("TypeAlias").bases("Declaration").build("id","typeParameters","right").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterDeclaration"),null)).field("right",r("Type")),r("DeclareTypeAlias").bases("TypeAlias").build("id","typeParameters","right"),r("TypeCastExpression").bases("Expression").build("expression","typeAnnotation").field("expression",r("Expression")).field("typeAnnotation",r("TypeAnnotation")),r("TupleTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("DeclareVariable").bases("Statement").build("id").field("id",r("Identifier")),r("DeclareFunction").bases("Statement").build("id").field("id",r("Identifier")),r("DeclareClass").bases("InterfaceDeclaration").build("id"),r("DeclareModule").bases("Statement").build("id","body").field("id",i(r("Identifier"),r("Literal"))).field("body",r("BlockStatement")),r("DeclareModuleExports").bases("Statement").build("typeAnnotation").field("typeAnnotation",r("Type")),r("DeclareExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",i(r("DeclareVariable"),r("DeclareFunction"),r("DeclareClass"),r("Type"),null)).field("specifiers",[i(r("ExportSpecifier"),r("ExportBatchSpecifier"))],a.emptyArray).field("source",i(r("Literal"),null),a.null)}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],548:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("JSXAttribute").bases("Node").build("name","value").field("name",i(r("JSXIdentifier"),r("JSXNamespacedName"))).field("value",i(r("Literal"),r("JSXExpressionContainer"),null),a.null),r("JSXIdentifier").bases("Identifier").build("name").field("name",String),r("JSXNamespacedName").bases("Node").build("namespace","name").field("namespace",r("JSXIdentifier")).field("name",r("JSXIdentifier")),r("JSXMemberExpression").bases("MemberExpression").build("object","property").field("object",i(r("JSXIdentifier"),r("JSXMemberExpression"))).field("property",r("JSXIdentifier")).field("computed",Boolean,a.false);var s=i(r("JSXIdentifier"),r("JSXNamespacedName"),r("JSXMemberExpression"));r("JSXSpreadAttribute").bases("Node").build("argument").field("argument",r("Expression"));var o=[i(r("JSXAttribute"),r("JSXSpreadAttribute"))];r("JSXExpressionContainer").bases("Expression").build("expression").field("expression",r("Expression")),r("JSXElement").bases("Expression").build("openingElement","closingElement","children").field("openingElement",r("JSXOpeningElement")).field("closingElement",i(r("JSXClosingElement"),null),a.null).field("children",[i(r("JSXElement"),r("JSXExpressionContainer"),r("JSXText"),r("Literal"))],a.emptyArray).field("name",s,function(){return this.openingElement.name},!0).field("selfClosing",Boolean,function(){return this.openingElement.selfClosing},!0).field("attributes",o,function(){return this.openingElement.attributes},!0),r("JSXOpeningElement").bases("Node").build("name","attributes","selfClosing").field("name",s).field("attributes",o,a.emptyArray).field("selfClosing",Boolean,a.false),r("JSXClosingElement").bases("Node").build("name").field("name",s),r("JSXText").bases("Literal").build("value").field("value",String),r("JSXEmptyExpression").bases("Expression").build()}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],549:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")),s=a.geq,o=a.defaults;r("Function").field("body",i(r("BlockStatement"),r("Expression"))),r("ForInStatement").build("left","right","body","each").field("each",Boolean,o.false),r("ForOfStatement").bases("Statement").build("left","right","body").field("left",i(r("VariableDeclaration"),r("Expression"))).field("right",r("Expression")).field("body",r("Statement")),r("LetStatement").bases("Statement").build("head","body").field("head",[r("VariableDeclarator")]).field("body",r("Statement")),r("LetExpression").bases("Expression").build("head","body").field("head",[r("VariableDeclarator")]).field("body",r("Expression")),r("GraphExpression").bases("Expression").build("index","expression").field("index",s(0)).field("expression",r("Literal")),r("GraphIndexExpression").bases("Expression").build("index").field("index",s(0))}},{"../lib/shared":556,"../lib/types":557,"./core":542}],550:[function(e,t,n){t.exports=function(t){function n(e){var t=r.indexOf(e);return t===-1&&(t=r.length,r.push(e),i[t]=e(a)),i[t]}var r=[],i=[],a={};a.use=n;var s=n(e("./lib/types"));t.forEach(n),s.finalize();var o={Type:s.Type,builtInTypes:s.builtInTypes,namedTypes:s.namedTypes,builders:s.builders,defineMethod:s.defineMethod,getFieldNames:s.getFieldNames,getFieldValue:s.getFieldValue,eachField:s.eachField,someField:s.someField,getSupertypeNames:s.getSupertypeNames,astNodesAreEquivalent:n(e("./lib/equiv")),finalize:s.finalize,Path:n(e("./lib/path")),NodePath:n(e("./lib/node-path")),PathVisitor:n(e("./lib/path-visitor")),use:n};return o.visit=o.PathVisitor.visit,o}},{"./lib/equiv":551,"./lib/node-path":552,"./lib/path":554,"./lib/path-visitor":553,"./lib/types":557}],551:[function(e,t,n){t.exports=function(t){function n(e,t,n){return c.check(n)?n.length=0:n=null,i(e,t,n)}function r(e){return/[_$a-z][_$a-z0-9]*/i.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function i(e,t,n){return e===t||(c.check(e)?a(e,t,n):p.check(e)?s(e,t,n):f.check(e)?f.check(t)&&+e===+t:h.check(e)?h.check(t)&&e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.ignoreCase===t.ignoreCase:e==t)}function a(e,t,n){c.assert(e);var r=e.length;if(!c.check(t)||t.length!==r)return n&&n.push("length"),!1;for(var a=0;ao)return!0;if(t===o&&"right"===this.name){if(r.right!==n)throw new Error("Nodes must be equal");return!0}default:return!1}case"SequenceExpression":switch(r.type){case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==this.name;default:return!0}case"YieldExpression":switch(r.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"Literal":return"MemberExpression"===r.type&&p.check(n.value)&&"object"===this.name&&r.object===n;case"AssignmentExpression":case"ConditionalExpression":switch(r.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===this.name&&r.callee===n;case"ConditionalExpression":return"test"===this.name&&r.test===n;case"MemberExpression":return"object"===this.name&&r.object===n;default:return!1}default:if("NewExpression"===r.type&&"callee"===this.name&&r.callee===n)return i(n)}return!(e===!0||this.canBeFirstInStatement()||!this.firstInStatement())};var m={};return[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]].forEach(function(e,t){e.forEach(function(e){m[e]=t})}),y.canBeFirstInStatement=function(){var e=this.node;return!l.FunctionExpression.check(e)&&!l.ObjectExpression.check(e)},y.firstInStatement=function(){return a(this)},n}},{"./path":554,"./scope":555,"./types":557}],553:[function(e,t,n){var r=Object.prototype.hasOwnProperty;t.exports=function(t){function n(){if(!(this instanceof n))throw new Error("PathVisitor constructor cannot be invoked without 'new'");this._reusableContextStack=[],this._methodNameTable=i(this),this._shouldVisitComments=r.call(this._methodNameTable,"Block")||r.call(this._methodNameTable,"Line"),this.Context=o(this),this._visiting=!1,this._changeReported=!1}function i(e){var t=Object.create(null);for(var n in e)/^visit[A-Z]/.test(n)&&(t[n.slice("visit".length)]=!0);for(var r=l.computeSupertypeLookupTable(t),i=Object.create(null),t=Object.keys(r),a=t.length,s=0;s=0&&(a[e.name=s]=e)}else i[e.name]=e.value,a[e.name]=e;if(i[e.name]!==e.value)throw new Error("");if(e.parentPath.get(e.name)!==e)throw new Error("");return e}var l=t.use(e("./types")),c=l.builtInTypes.array,p=l.builtInTypes.number,f=n.prototype;
-return f.getValueProperty=function(e){return this.value[e]},f.get=function(e){for(var t=this,n=arguments,r=n.length,a=0;a=e},s+" >= "+e)},n.defaults={null:function(){return null},emptyArray:function(){return[]},false:function(){return!1},true:function(){return!0},undefined:function(){}};var o=i.or(a.string,a.number,a.boolean,a.null,a.undefined);return n.isPrimitive=new i(function(e){if(null===e)return!0;var t=typeof e;return!("object"===t||"function"===t)},o.toString()),n}},{"../lib/types":557}],557:[function(e,t,n){var r=Array.prototype,i=r.slice,a=(r.map,r.forEach,Object.prototype),s=a.toString,o=s.call(function(){}),u=s.call(""),l=a.hasOwnProperty;t.exports=function(){function e(t,n){var r=this;if(!(r instanceof e))throw new Error("Type constructor cannot be invoked without 'new'");if(s.call(t)!==o)throw new Error(t+" is not a function");var i=s.call(n);if(i!==o&&i!==u)throw new Error(n+" is neither a function nor a string");Object.defineProperties(r,{name:{value:n},check:{value:function(e,n){var i=t.call(r,e,n);return!i&&n&&s.call(n)===o&&n(r,e),i}}})}function t(e){return S.check(e)?"{"+Object.keys(e).map(function(t){return t+": "+e[t]}).join(", ")+"}":C.check(e)?"["+e.map(t).join(", ")+"]":JSON.stringify(e)}function n(t,n){var r=s.call(t),i=new e(function(e){return s.call(e)===r},n);return E[n]=i,t&&"function"==typeof t.constructor&&(x.push(t.constructor),_.push(i)),i}function r(t,n){if(t instanceof e)return t;if(t instanceof c)return t.type;if(C.check(t))return e.fromArray(t);if(S.check(t))return e.fromObject(t);if(D.check(t)){var r=x.indexOf(t);return r>=0?_[r]:new e(t,n)}return new e(function(e){return e===t},k.check(n)?function(){return t+""}:n)}function a(e,t,n,i){var s=this;if(!(s instanceof a))throw new Error("Field constructor cannot be invoked without 'new'");A.assert(e),t=r(t);var o={name:{value:e},type:{value:t},hidden:{value:!!i}};D.check(n)&&(o.defaultFn={value:n}),Object.defineProperties(s,o)}function c(t){var n=this;if(!(n instanceof c))throw new Error("Def constructor cannot be invoked without 'new'");Object.defineProperties(n,{typeName:{value:t},baseNames:{value:[]},ownFields:{value:Object.create(null)},allSupertypes:{value:Object.create(null)},supertypeList:{value:[]},allFields:{value:Object.create(null)},fieldNames:{value:[]},type:{value:new e(function(e,t){return n.check(e,t)},t)}})}function p(e){return e.replace(/^[A-Z]+/,function(e){var t=e.length;switch(t){case 0:return"";case 1:return e.toLowerCase();default:return e.slice(0,t-1).toLowerCase()+e.charAt(t-1)}})}function f(e){return e=p(e),e.replace(/(Expression)?$/,"Statement")}function h(e){var t=c.fromValue(e);if(t)return t.fieldNames.slice(0);if("type"in e)throw new Error("did not recognize object of type "+JSON.stringify(e.type));return Object.keys(e)}function d(e,t){var n=c.fromValue(e);if(n){var r=n.allFields[t];if(r)return r.getValue(e)}return e&&e[t]}function y(e){var t=f(e);if(!j[t]){var n=j[p(e)];n&&(j[t]=function(){return j.expressionStatement(n.apply(j,arguments))})}}function m(e,t){t.length=0,t.push(e);for(var n=Object.create(null),r=0;r=0&&y(e.typeName)}},g.finalize=function(){Object.keys(T).forEach(function(e){T[e].finalize()})},g}},{}],558:[function(e,t,n){t.exports=e("./fork")([e("./def/core"),e("./def/es6"),e("./def/es7"),e("./def/mozilla"),e("./def/e4x"),e("./def/jsx"),e("./def/flow"),e("./def/esprima"),e("./def/babel"),e("./def/babel6")])},{"./def/babel":540,"./def/babel6":541,"./def/core":542,"./def/e4x":543,"./def/es6":544,"./def/es7":545,"./def/esprima":546,"./def/flow":547,"./def/jsx":548,"./def/mozilla":549,"./fork":550}],559:[function(e,t,n){!function(e,r){"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof n?n.esprima=r():e.esprima=r()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e,t,n){var r=null,i=function(e,t){n&&n(e,t),r&&r.visit(e,t)},u="function"==typeof n?i:null,l=!1;if(t){l="boolean"==typeof t.comment&&t.comment;var c="boolean"==typeof t.attachComment&&t.attachComment;(l||c)&&(r=new a.CommentHandler,r.attach=c,t.comment=!0,u=i)}var p;p=t&&"boolean"==typeof t.jsx&&t.jsx?new o.JSXParser(e,t,u):new s.Parser(e,t,u);var f=p.parseProgram();return l&&(f.comments=r.comments),p.config.tokens&&(f.tokens=p.tokens),p.config.tolerant&&(f.errors=p.errorHandler.errors),f}function i(e,t,n){var r,i=new u.Tokenizer(e,t);r=[];try{for(;;){var a=i.getNextToken();if(!a)break;n&&(a=n(a)),r.push(a)}}catch(e){i.errorHandler.tolerate(e)}return i.errorHandler.tolerant&&(r.errors=i.errors()),r}var a=n(1),s=n(3),o=n(11),u=n(15);t.parse=r,t.tokenize=i;var l=n(2);t.Syntax=l.Syntax,t.version="3.1.3"},function(e,t,n){"use strict";var r=n(2),i=function(){function e(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return e.prototype.insertInnerComments=function(e,t){if(e.type===r.Syntax.BlockStatement&&0===e.body.length){for(var n=[],i=this.leading.length-1;i>=0;--i){var a=this.leading[i];t.end.offset>=a.start&&(n.unshift(a.comment),this.leading.splice(i,1),this.trailing.splice(i,1))}n.length&&(e.innerComments=n)}},e.prototype.findTrailingComments=function(e,t){var n=[];if(this.trailing.length>0){for(var r=this.trailing.length-1;r>=0;--r){var i=this.trailing[r];i.start>=t.end.offset&&n.unshift(i.comment)}return this.trailing.length=0,n}var a=this.stack[this.stack.length-1];if(a&&a.node.trailingComments){var s=a.node.trailingComments[0];s&&s.range[0]>=t.end.offset&&(n=a.node.trailingComments,delete a.node.trailingComments)}return n},e.prototype.findLeadingComments=function(e,t){for(var n,r=[];this.stack.length>0;){var i=this.stack[this.stack.length-1];if(!(i&&i.start>=t.start.offset))break;n=this.stack.pop().node}if(n){for(var a=n.leadingComments?n.leadingComments.length:0,s=a-1;s>=0;--s){var o=n.leadingComments[s];o.range[1]<=t.start.offset&&(r.unshift(o),n.leadingComments.splice(s,1))}return n.leadingComments&&0===n.leadingComments.length&&delete n.leadingComments,r}for(var s=this.leading.length-1;s>=0;--s){var i=this.leading[s];i.start<=t.start.offset&&(r.unshift(i.comment),this.leading.splice(s,1))}return r},e.prototype.visitNode=function(e,t){if(!(e.type===r.Syntax.Program&&e.body.length>0)){this.insertInnerComments(e,t);var n=this.findTrailingComments(e,t),i=this.findLeadingComments(e,t);i.length>0&&(e.leadingComments=i),n.length>0&&(e.trailingComments=n),this.stack.push({node:e,start:t.start.offset})}},e.prototype.visitComment=function(e,t){var n="L"===e.type[0]?"Line":"Block",r={type:n,value:e.value};if(e.range&&(r.range=e.range),e.loc&&(r.loc=e.loc),this.comments.push(r),this.attach){var i={comment:{type:n,value:e.value,range:[t.start.offset,t.end.offset]},start:t.start.offset};e.loc&&(i.comment.loc=e.loc),e.type=n,this.leading.push(i),this.trailing.push(i)}},e.prototype.visit=function(e,t){"LineComment"===e.type?this.visitComment(e,t):"BlockComment"===e.type?this.visitComment(e,t):this.attach&&this.visitNode(e,t)},e}();t.CommentHandler=i},function(e,t){"use strict";t.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(e,t,n){"use strict";var r=n(4),i=n(5),a=n(6),s=n(7),o=n(8),u=n(2),l=n(10),c="ArrowParameterPlaceHolder",p=function(){function e(e,t,n){void 0===t&&(t={}),this.config={range:"boolean"==typeof t.range&&t.range,loc:"boolean"==typeof t.loc&&t.loc,source:null,tokens:"boolean"==typeof t.tokens&&t.tokens,comment:"boolean"==typeof t.comment&&t.comment,tolerant:"boolean"==typeof t.tolerant&&t.tolerant},this.config.loc&&t.source&&null!==t.source&&(this.config.source=String(t.source)),this.delegate=n,this.errorHandler=new a.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new o.Scanner(e,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.sourceType=t&&"module"===t.sourceType?"module":"script",this.lookahead=null,this.hasLineTerminator=!1,this.context={allowIn:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:"module"===this.sourceType},this.tokens=[],this.startMarker={index:0,lineNumber:this.scanner.lineNumber,lineStart:0},this.lastMarker={index:0,lineNumber:this.scanner.lineNumber,lineStart:0},this.nextToken(),this.lastMarker={index:this.scanner.index,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart}}return e.prototype.throwError=function(e){for(var t=[],n=1;n0&&this.delegate)for(var t=0;t>="===e||">>>="===e||"&="===e||"^="===e||"|="===e},e.prototype.isolateCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=t,this.context.isAssignmentTarget=n,this.context.firstCoverInitializedNameError=r,i},e.prototype.inheritCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return this.context.isBindingElement=this.context.isBindingElement&&t,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&n,this.context.firstCoverInitializedNameError=r||this.context.firstCoverInitializedNameError,i},e.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type===s.Token.EOF||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.lineNumber=this.startMarker.lineNumber,this.lastMarker.lineStart=this.startMarker.lineStart)},e.prototype.parsePrimaryExpression=function(){var e,t,n,r,a=this.createNode();switch(this.lookahead.type){case s.Token.Identifier:"module"===this.sourceType&&"await"===this.lookahead.value&&this.tolerateUnexpectedToken(this.lookahead),e=this.finalize(a,new l.Identifier(this.nextToken().value));break;case s.Token.NumericLiteral:case s.Token.StringLiteral:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,i.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,n=this.nextToken(),r=this.getTokenRaw(n),e=this.finalize(a,new l.Literal(n.value,r));break;case s.Token.BooleanLiteral:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,n=this.nextToken(),n.value="true"===n.value,r=this.getTokenRaw(n),e=this.finalize(a,new l.Literal(n.value,r));break;case s.Token.NullLiteral:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,n=this.nextToken(),n.value=null,r=this.getTokenRaw(n),e=this.finalize(a,new l.Literal(n.value,r));break;case s.Token.Template:e=this.parseTemplateLiteral();break;case s.Token.Punctuator:switch(t=this.lookahead.value){case"(":this.context.isBindingElement=!1,e=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":e=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":e=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,n=this.nextRegexToken(),r=this.getTokenRaw(n),e=this.finalize(a,new l.RegexLiteral(n.value,r,n.regex));
-break;default:this.throwUnexpectedToken(this.nextToken())}break;case s.Token.Keyword:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?e=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?e=this.finalize(a,new l.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?e=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),e=this.finalize(a,new l.ThisExpression)):this.matchKeyword("class")?e=this.parseClassExpression():this.throwUnexpectedToken(this.nextToken()));break;default:this.throwUnexpectedToken(this.nextToken())}return e},e.prototype.parseSpreadElement=function(){var e=this.createNode();this.expect("...");var t=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(e,new l.SpreadElement(t))},e.prototype.parseArrayInitializer=function(){var e=this.createNode(),t=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),t.push(null);else if(this.match("...")){var n=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),t.push(n)}else t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(e,new l.ArrayExpression(t))},e.prototype.parsePropertyMethod=function(e){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var t=this.context.strict,n=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&e.firstRestricted&&this.tolerateUnexpectedToken(e.firstRestricted,e.message),this.context.strict&&e.stricted&&this.tolerateUnexpectedToken(e.stricted,e.message),this.context.strict=t,n},e.prototype.parsePropertyMethodFunction=function(){var e=!1,t=this.createNode(),n=this.context.allowYield;this.context.allowYield=!1;var r=this.parseFormalParameters(),i=this.parsePropertyMethod(r);return this.context.allowYield=n,this.finalize(t,new l.FunctionExpression(null,r.params,i,e))},e.prototype.parseObjectPropertyKey=function(){var e=this.createNode(),t=this.nextToken(),n=null;switch(t.type){case s.Token.StringLiteral:case s.Token.NumericLiteral:this.context.strict&&t.octal&&this.tolerateUnexpectedToken(t,i.Messages.StrictOctalLiteral);var r=this.getTokenRaw(t);n=this.finalize(e,new l.Literal(t.value,r));break;case s.Token.Identifier:case s.Token.BooleanLiteral:case s.Token.NullLiteral:case s.Token.Keyword:n=this.finalize(e,new l.Identifier(t.value));break;case s.Token.Punctuator:"["===t.value?(n=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):this.throwUnexpectedToken(t);break;default:this.throwUnexpectedToken(t)}return n},e.prototype.isPropertyKey=function(e,t){return e.type===u.Syntax.Identifier&&e.name===t||e.type===u.Syntax.Literal&&e.value===t},e.prototype.parseObjectProperty=function(e){var t,n,r,a=this.createNode(),o=this.lookahead,u=!1,c=!1,p=!1;o.type===s.Token.Identifier?(this.nextToken(),n=this.finalize(a,new l.Identifier(o.value))):this.match("*")?this.nextToken():(u=this.match("["),n=this.parseObjectPropertyKey());var f=this.qualifiedPropertyName(this.lookahead);if(o.type===s.Token.Identifier&&"get"===o.value&&f)t="get",u=this.match("["),n=this.parseObjectPropertyKey(),this.context.allowYield=!1,r=this.parseGetterMethod();else if(o.type===s.Token.Identifier&&"set"===o.value&&f)t="set",u=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseSetterMethod();else if(o.type===s.Token.Punctuator&&"*"===o.value&&f)t="init",u=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseGeneratorMethod(),c=!0;else if(n||this.throwUnexpectedToken(this.lookahead),t="init",this.match(":"))!u&&this.isPropertyKey(n,"__proto__")&&(e.value&&this.tolerateError(i.Messages.DuplicateProtoProperty),e.value=!0),this.nextToken(),r=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))r=this.parsePropertyMethodFunction(),c=!0;else if(o.type===s.Token.Identifier){var h=this.finalize(a,new l.Identifier(o.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),p=!0;var d=this.isolateCoverGrammar(this.parseAssignmentExpression);r=this.finalize(a,new l.AssignmentPattern(h,d))}else p=!0,r=h}else this.throwUnexpectedToken(this.nextToken());return this.finalize(a,new l.Property(t,n,u,r,c,p))},e.prototype.parseObjectInitializer=function(){var e=this.createNode();this.expect("{");for(var t=[],n={value:!1};!this.match("}");)t.push(this.parseObjectProperty(n)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(e,new l.ObjectExpression(t))},e.prototype.parseTemplateHead=function(){r.assert(this.lookahead.head,"Template literal must start with a template head");var e=this.createNode(),t=this.nextToken(),n={raw:t.value.raw,cooked:t.value.cooked};return this.finalize(e,new l.TemplateElement(n,t.tail))},e.prototype.parseTemplateElement=function(){this.lookahead.type!==s.Token.Template&&this.throwUnexpectedToken();var e=this.createNode(),t=this.nextToken(),n={raw:t.value.raw,cooked:t.value.cooked};return this.finalize(e,new l.TemplateElement(n,t.tail))},e.prototype.parseTemplateLiteral=function(){var e=this.createNode(),t=[],n=[],r=this.parseTemplateHead();for(n.push(r);!r.tail;)t.push(this.parseExpression()),r=this.parseTemplateElement(),n.push(r);return this.finalize(e,new l.TemplateLiteral(n,t))},e.prototype.reinterpretExpressionAsPattern=function(e){switch(e.type){case u.Syntax.Identifier:case u.Syntax.MemberExpression:case u.Syntax.RestElement:case u.Syntax.AssignmentPattern:break;case u.Syntax.SpreadElement:e.type=u.Syntax.RestElement,this.reinterpretExpressionAsPattern(e.argument);break;case u.Syntax.ArrayExpression:e.type=u.Syntax.ArrayPattern;for(var t=0;t")||this.expect("=>"),e={type:c,params:[]};else{var t=this.lookahead,n=[];if(this.match("..."))e=this.parseRestElement(n),this.expect(")"),this.match("=>")||this.expect("=>"),e={type:c,params:[e]};else{var r=!1;if(this.context.isBindingElement=!0,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var i=[];for(this.context.isAssignmentTarget=!1,i.push(e);this.startMarker.index")||this.expect("=>"),this.context.isBindingElement=!1;for(var a=0;a")&&(e.type===u.Syntax.Identifier&&"yield"===e.name&&(r=!0,e={type:c,params:[e]}),!r)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),e.type===u.Syntax.SequenceExpression)for(var a=0;a0){this.nextToken(),n.prec=r,this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var i=[e,this.lookahead],a=t,s=this.isolateCoverGrammar(this.parseExponentiationExpression),o=[a,n,s];;){if(r=this.binaryPrecedence(this.lookahead),r<=0)break;for(;o.length>2&&r<=o[o.length-2].prec;){s=o.pop();var u=o.pop().value;a=o.pop(),i.pop();var c=this.startNode(i[i.length-1]);o.push(this.finalize(c,new l.BinaryExpression(u,a,s)))}n=this.nextToken(),n.prec=r,o.push(n),i.push(this.lookahead),o.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var p=o.length-1;for(t=o[p],i.pop();p>1;){var c=this.startNode(i.pop());t=this.finalize(c,new l.BinaryExpression(o[p-1].value,o[p-2],t)),p-=2}}return t},e.prototype.parseConditionalExpression=function(){var e=this.lookahead,t=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var n=this.context.allowIn;this.context.allowIn=!0;var r=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=n,this.expect(":");var i=this.isolateCoverGrammar(this.parseAssignmentExpression);t=this.finalize(this.startNode(e),new l.ConditionalExpression(t,r,i)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return t},e.prototype.checkPatternParam=function(e,t){switch(t.type){case u.Syntax.Identifier:this.validateParam(e,t,t.name);break;case u.Syntax.RestElement:this.checkPatternParam(e,t.argument);break;case u.Syntax.AssignmentPattern:this.checkPatternParam(e,t.left);break;case u.Syntax.ArrayPattern:for(var n=0;n")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var r=this.reinterpretAsCoverFormalsList(e);if(r){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var a=this.context.strict,s=this.context.allowYield;this.context.allowYield=!0;var o=this.startNode(t);this.expect("=>");var p=this.match("{")?this.parseFunctionSourceElements():this.isolateCoverGrammar(this.parseAssignmentExpression),f=p.type!==u.Syntax.BlockStatement;this.context.strict&&r.firstRestricted&&this.throwUnexpectedToken(r.firstRestricted,r.message),this.context.strict&&r.stricted&&this.tolerateUnexpectedToken(r.stricted,r.message),e=this.finalize(o,new l.ArrowFunctionExpression(r.params,p,f)),this.context.strict=a,this.context.allowYield=s}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(i.Messages.InvalidLHSInAssignment),this.context.strict&&e.type===u.Syntax.Identifier){var h=e;this.scanner.isRestrictedWord(h.name)&&this.tolerateUnexpectedToken(n,i.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(h.name)&&this.tolerateUnexpectedToken(n,i.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(e):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),n=this.nextToken();var d=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(t),new l.AssignmentExpression(n.value,e,d)),this.context.firstCoverInitializedNameError=null}}return e},e.prototype.parseExpression=function(){var e=this.lookahead,t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var n=[];for(n.push(t);this.startMarker.index",t.TokenName[n.Identifier]="Identifier",t.TokenName[n.Keyword]="Keyword",t.TokenName[n.NullLiteral]="Null",t.TokenName[n.NumericLiteral]="Numeric",t.TokenName[n.Punctuator]="Punctuator",t.TokenName[n.StringLiteral]="String",t.TokenName[n.RegularExpression]="RegularExpression",t.TokenName[n.Template]="Template"},function(e,t,n){"use strict";function r(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function i(e){return"01234567".indexOf(e)}var a=n(4),s=n(5),o=n(9),u=n(7),l=function(){function e(e,t){this.source=e,this.errorHandler=t,this.trackComment=!1,this.length=e.length,this.index=0,this.lineNumber=e.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return e.prototype.eof=function(){return this.index>=this.length},e.prototype.throwUnexpectedToken=function(e){void 0===e&&(e=s.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,e)},e.prototype.tolerateUnexpectedToken=function(){this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,s.Messages.UnexpectedTokenIllegal)},e.prototype.skipSingleLineComment=function(e){var t,n,r;for(this.trackComment&&(t=[],n=this.index-e,r={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{}});!this.eof();){var i=this.source.charCodeAt(this.index);if(++this.index,o.Character.isLineTerminator(i)){if(this.trackComment){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};var a={multiLine:!1,slice:[n+e,this.index-1],range:[n,this.index-1],loc:r};t.push(a)}return 13===i&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,t}}if(this.trackComment){r.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:!1,slice:[n+e,this.index],range:[n,this.index],loc:r};t.push(a)}return t},e.prototype.skipMultiLineComment=function(){var e,t,n;for(this.trackComment&&(e=[],t=this.index-2,n={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var r=this.source.charCodeAt(this.index);if(o.Character.isLineTerminator(r))13===r&&10===this.source.charCodeAt(this.index+1)&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(42===r){if(47===this.source.charCodeAt(this.index+1)){if(this.index+=2,this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart};var i={multiLine:!0,slice:[t+2,this.index-2],range:[t,this.index],loc:n};e.push(i)}return e}++this.index}else++this.index}if(this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart};var i={multiLine:!0,slice:[t+2,this.index],range:[t,this.index],loc:n};e.push(i)}return this.tolerateUnexpectedToken(),e},e.prototype.scanComments=function(){var e;this.trackComment&&(e=[]);for(var t=0===this.index;!this.eof();){var n=this.source.charCodeAt(this.index);if(o.Character.isWhiteSpace(n))++this.index;else if(o.Character.isLineTerminator(n))++this.index,13===n&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,t=!0;else if(47===n)if(n=this.source.charCodeAt(this.index+1),47===n){this.index+=2;var r=this.skipSingleLineComment(2);this.trackComment&&(e=e.concat(r)),t=!0}else{if(42!==n)break;this.index+=2;var r=this.skipMultiLineComment();this.trackComment&&(e=e.concat(r))}else if(t&&45===n){if(45!==this.source.charCodeAt(this.index+1)||62!==this.source.charCodeAt(this.index+2))break;this.index+=3;var r=this.skipSingleLineComment(3);this.trackComment&&(e=e.concat(r))}else{if(60!==n)break;if("!--"!==this.source.slice(this.index+1,this.index+4))break;this.index+=4;var r=this.skipSingleLineComment(4);this.trackComment&&(e=e.concat(r))}}return e},e.prototype.isFutureReservedWord=function(e){switch(e){case"enum":case"export":case"import":case"super":return!0;default:return!1}},e.prototype.isStrictModeReservedWord=function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},e.prototype.isRestrictedWord=function(e){return"eval"===e||"arguments"===e},e.prototype.isKeyword=function(e){switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}},e.prototype.codePointAt=function(e){var t=this.source.charCodeAt(e);if(t>=55296&&t<=56319){var n=this.source.charCodeAt(e+1);if(n>=56320&&n<=57343){var r=t;t=1024*(r-55296)+n-56320+65536}}return t},e.prototype.scanHexEscape=function(e){for(var t="u"===e?4:2,n=0,i=0;i1114111||"}"!==e)&&this.throwUnexpectedToken(),o.Character.fromCodePoint(t)},e.prototype.getIdentifier=function(){for(var e=this.index++;!this.eof();){var t=this.source.charCodeAt(this.index);if(92===t)return this.index=e,this.getComplexIdentifier();if(t>=55296&&t<57343)return this.index=e,this.getComplexIdentifier();if(!o.Character.isIdentifierPart(t))break;++this.index}return this.source.slice(e,this.index)},e.prototype.getComplexIdentifier=function(){var e=this.codePointAt(this.index),t=o.Character.fromCodePoint(e);this.index+=t.length;var n;for(92===e&&(117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,n=this.scanUnicodeCodePointEscape()):(n=this.scanHexEscape("u"),e=n.charCodeAt(0),n&&"\\"!==n&&o.Character.isIdentifierStart(e)||this.throwUnexpectedToken()),t=n);!this.eof()&&(e=this.codePointAt(this.index),o.Character.isIdentifierPart(e));)n=o.Character.fromCodePoint(e),t+=n,this.index+=n.length,92===e&&(t=t.substr(0,t.length-1),117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,n=this.scanUnicodeCodePointEscape()):(n=this.scanHexEscape("u"),e=n.charCodeAt(0),n&&"\\"!==n&&o.Character.isIdentifierPart(e)||this.throwUnexpectedToken()),t+=n);return t},e.prototype.octalToDecimal=function(e){var t="0"!==e,n=i(e);return!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(t=!0,n=8*n+i(this.source[this.index++]),"0123".indexOf(e)>=0&&!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(n=8*n+i(this.source[this.index++]))),{code:n,octal:t}},e.prototype.scanIdentifier=function(){var e,t=this.index,n=92===this.source.charCodeAt(t)?this.getComplexIdentifier():this.getIdentifier();return e=1===n.length?u.Token.Identifier:this.isKeyword(n)?u.Token.Keyword:"null"===n?u.Token.NullLiteral:"true"===n||"false"===n?u.Token.BooleanLiteral:u.Token.Identifier,{type:e,value:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.scanPunctuator=function(){var e={type:u.Token.Punctuator,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index},t=this.source[this.index];switch(t){case"(":case"{":"{"===t&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,"."===this.source[this.index]&&"."===this.source[this.index+1]&&(this.index+=2,t="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:t=this.source.substr(this.index,4),">>>="===t?this.index+=4:(t=t.substr(0,3),"==="===t||"!=="===t||">>>"===t||"<<="===t||">>="===t||"**="===t?this.index+=3:(t=t.substr(0,2),"&&"===t||"||"===t||"=="===t||"!="===t||"+="===t||"-="===t||"*="===t||"/="===t||"++"===t||"--"===t||"<<"===t||">>"===t||"&="===t||"|="===t||"^="===t||"%="===t||"<="===t||">="===t||"=>"===t||"**"===t?this.index+=2:(t=this.source[this.index],"<>=!+-*%&|^/".indexOf(t)>=0&&++this.index)))}return this.index===e.start&&this.throwUnexpectedToken(),e.end=this.index,e.value=t,e},e.prototype.scanHexLiteral=function(e){for(var t="";!this.eof()&&o.Character.isHexDigit(this.source.charCodeAt(this.index));)t+=this.source[this.index++];return 0===t.length&&this.throwUnexpectedToken(),o.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:u.Token.NumericLiteral,value:parseInt("0x"+t,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanBinaryLiteral=function(e){for(var t,n="";!this.eof()&&(t=this.source[this.index],"0"===t||"1"===t);)n+=this.source[this.index++];return 0===n.length&&this.throwUnexpectedToken(),this.eof()||(t=this.source.charCodeAt(this.index),(o.Character.isIdentifierStart(t)||o.Character.isDecimalDigit(t))&&this.throwUnexpectedToken()),
-{type:u.Token.NumericLiteral,value:parseInt(n,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanOctalLiteral=function(e,t){var n="",r=!1;for(o.Character.isOctalDigit(e.charCodeAt(0))?(r=!0,n="0"+this.source[this.index++]):++this.index;!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index));)n+=this.source[this.index++];return r||0!==n.length||this.throwUnexpectedToken(),(o.Character.isIdentifierStart(this.source.charCodeAt(this.index))||o.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:u.Token.NumericLiteral,value:parseInt(n,8),octal:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.isImplicitOctalLiteral=function(){for(var e=this.index+1;e=0&&(r=r.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(e,t,r){var a=parseInt(t||r,16);return a>1114111&&i.throwUnexpectedToken(s.Messages.InvalidRegExp),a<=65535?String.fromCharCode(a):n}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,n));try{RegExp(r)}catch(e){this.throwUnexpectedToken(s.Messages.InvalidRegExp)}try{return new RegExp(e,t)}catch(e){return null}},e.prototype.scanRegExpBody=function(){var e=this.source[this.index];a.assert("/"===e,"Regular expression literal must start with a slash");for(var t=this.source[this.index++],n=!1,r=!1;!this.eof();)if(e=this.source[this.index++],t+=e,"\\"===e)e=this.source[this.index++],o.Character.isLineTerminator(e.charCodeAt(0))&&this.throwUnexpectedToken(s.Messages.UnterminatedRegExp),t+=e;else if(o.Character.isLineTerminator(e.charCodeAt(0)))this.throwUnexpectedToken(s.Messages.UnterminatedRegExp);else if(n)"]"===e&&(n=!1);else{if("/"===e){r=!0;break}"["===e&&(n=!0)}r||this.throwUnexpectedToken(s.Messages.UnterminatedRegExp);var i=t.substr(1,t.length-2);return{value:i,literal:t}},e.prototype.scanRegExpFlags=function(){for(var e="",t="";!this.eof();){var n=this.source[this.index];if(!o.Character.isIdentifierPart(n.charCodeAt(0)))break;if(++this.index,"\\"!==n||this.eof())t+=n,e+=n;else if(n=this.source[this.index],"u"===n){++this.index;var r=this.index;if(n=this.scanHexEscape("u"))for(t+=n,e+="\\u";r=55296&&e<57343&&o.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},e}();t.Scanner=l},function(e,t){"use strict";var n={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};t.Character={fromCodePoint:function(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace:function(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0},isLineTerminator:function(e){return 10===e||13===e||8232===e||8233===e},isIdentifierStart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&n.NonAsciiIdentifierStart.test(t.Character.fromCodePoint(e))},isIdentifierPart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&n.NonAsciiIdentifierPart.test(t.Character.fromCodePoint(e))},isDecimalDigit:function(e){return e>=48&&e<=57},isHexDigit:function(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit:function(e){return e>=48&&e<=55}}},function(e,t,n){"use strict";var r=n(2),i=function(){function e(e){this.type=r.Syntax.ArrayExpression,this.elements=e}return e}();t.ArrayExpression=i;var a=function(){function e(e){this.type=r.Syntax.ArrayPattern,this.elements=e}return e}();t.ArrayPattern=a;var s=function(){function e(e,t,n){this.type=r.Syntax.ArrowFunctionExpression,this.id=null,this.params=e,this.body=t,this.generator=!1,this.expression=n}return e}();t.ArrowFunctionExpression=s;var o=function(){function e(e,t,n){this.type=r.Syntax.AssignmentExpression,this.operator=e,this.left=t,this.right=n}return e}();t.AssignmentExpression=o;var u=function(){function e(e,t){this.type=r.Syntax.AssignmentPattern,this.left=e,this.right=t}return e}();t.AssignmentPattern=u;var l=function(){function e(e,t,n){var i="||"===e||"&&"===e;this.type=i?r.Syntax.LogicalExpression:r.Syntax.BinaryExpression,this.operator=e,this.left=t,this.right=n}return e}();t.BinaryExpression=l;var c=function(){function e(e){this.type=r.Syntax.BlockStatement,this.body=e}return e}();t.BlockStatement=c;var p=function(){function e(e){this.type=r.Syntax.BreakStatement,this.label=e}return e}();t.BreakStatement=p;var f=function(){function e(e,t){this.type=r.Syntax.CallExpression,this.callee=e,this.arguments=t}return e}();t.CallExpression=f;var h=function(){function e(e,t){this.type=r.Syntax.CatchClause,this.param=e,this.body=t}return e}();t.CatchClause=h;var d=function(){function e(e){this.type=r.Syntax.ClassBody,this.body=e}return e}();t.ClassBody=d;var y=function(){function e(e,t,n){this.type=r.Syntax.ClassDeclaration,this.id=e,this.superClass=t,this.body=n}return e}();t.ClassDeclaration=y;var m=function(){function e(e,t,n){this.type=r.Syntax.ClassExpression,this.id=e,this.superClass=t,this.body=n}return e}();t.ClassExpression=m;var b=function(){function e(e,t){this.type=r.Syntax.MemberExpression,this.computed=!0,this.object=e,this.property=t}return e}();t.ComputedMemberExpression=b;var g=function(){function e(e,t,n){this.type=r.Syntax.ConditionalExpression,this.test=e,this.consequent=t,this.alternate=n}return e}();t.ConditionalExpression=g;var v=function(){function e(e){this.type=r.Syntax.ContinueStatement,this.label=e}return e}();t.ContinueStatement=v;var x=function(){function e(){this.type=r.Syntax.DebuggerStatement}return e}();t.DebuggerStatement=x;var _=function(){function e(e,t){this.type=r.Syntax.ExpressionStatement,this.expression=e,this.directive=t}return e}();t.Directive=_;var E=function(){function e(e,t){this.type=r.Syntax.DoWhileStatement,this.body=e,this.test=t}return e}();t.DoWhileStatement=E;var A=function(){function e(){this.type=r.Syntax.EmptyStatement}return e}();t.EmptyStatement=A;var D=function(){function e(e){this.type=r.Syntax.ExportAllDeclaration,this.source=e}return e}();t.ExportAllDeclaration=D;var C=function(){function e(e){this.type=r.Syntax.ExportDefaultDeclaration,this.declaration=e}return e}();t.ExportDefaultDeclaration=C;var S=function(){function e(e,t,n){this.type=r.Syntax.ExportNamedDeclaration,this.declaration=e,this.specifiers=t,this.source=n}return e}();t.ExportNamedDeclaration=S;var w=function(){function e(e,t){this.type=r.Syntax.ExportSpecifier,this.exported=t,this.local=e}return e}();t.ExportSpecifier=w;var k=function(){function e(e){this.type=r.Syntax.ExpressionStatement,this.expression=e}return e}();t.ExpressionStatement=k;var F=function(){function e(e,t,n){this.type=r.Syntax.ForInStatement,this.left=e,this.right=t,this.body=n,this.each=!1}return e}();t.ForInStatement=F;var T=function(){function e(e,t,n){this.type=r.Syntax.ForOfStatement,this.left=e,this.right=t,this.body=n}return e}();t.ForOfStatement=T;var P=function(){function e(e,t,n,i){this.type=r.Syntax.ForStatement,this.init=e,this.test=t,this.update=n,this.body=i}return e}();t.ForStatement=P;var j=function(){function e(e,t,n,i){this.type=r.Syntax.FunctionDeclaration,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1}return e}();t.FunctionDeclaration=j;var B=function(){function e(e,t,n,i){this.type=r.Syntax.FunctionExpression,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1}return e}();t.FunctionExpression=B;var O=function(){function e(e){this.type=r.Syntax.Identifier,this.name=e}return e}();t.Identifier=O;var I=function(){function e(e,t,n){this.type=r.Syntax.IfStatement,this.test=e,this.consequent=t,this.alternate=n}return e}();t.IfStatement=I;var N=function(){function e(e,t){this.type=r.Syntax.ImportDeclaration,this.specifiers=e,this.source=t}return e}();t.ImportDeclaration=N;var L=function(){function e(e){this.type=r.Syntax.ImportDefaultSpecifier,this.local=e}return e}();t.ImportDefaultSpecifier=L;var M=function(){function e(e){this.type=r.Syntax.ImportNamespaceSpecifier,this.local=e}return e}();t.ImportNamespaceSpecifier=M;var R=function(){function e(e,t){this.type=r.Syntax.ImportSpecifier,this.local=e,this.imported=t}return e}();t.ImportSpecifier=R;var U=function(){function e(e,t){this.type=r.Syntax.LabeledStatement,this.label=e,this.body=t}return e}();t.LabeledStatement=U;var V=function(){function e(e,t){this.type=r.Syntax.Literal,this.value=e,this.raw=t}return e}();t.Literal=V;var G=function(){function e(e,t){this.type=r.Syntax.MetaProperty,this.meta=e,this.property=t}return e}();t.MetaProperty=G;var q=function(){function e(e,t,n,i,a){this.type=r.Syntax.MethodDefinition,this.key=e,this.computed=t,this.value=n,this.kind=i,this.static=a}return e}();t.MethodDefinition=q;var K=function(){function e(e,t){this.type=r.Syntax.NewExpression,this.callee=e,this.arguments=t}return e}();t.NewExpression=K;var X=function(){function e(e){this.type=r.Syntax.ObjectExpression,this.properties=e}return e}();t.ObjectExpression=X;var J=function(){function e(e){this.type=r.Syntax.ObjectPattern,this.properties=e}return e}();t.ObjectPattern=J;var W=function(){function e(e,t){this.type=r.Syntax.Program,this.body=e,this.sourceType=t}return e}();t.Program=W;var z=function(){function e(e,t,n,i,a,s){this.type=r.Syntax.Property,this.key=t,this.computed=n,this.value=i,this.kind=e,this.method=a,this.shorthand=s}return e}();t.Property=z;var Y=function(){function e(e,t,n){this.type=r.Syntax.Literal,this.value=e,this.raw=t,this.regex=n}return e}();t.RegexLiteral=Y;var H=function(){function e(e){this.type=r.Syntax.RestElement,this.argument=e}return e}();t.RestElement=H;var $=function(){function e(e){this.type=r.Syntax.ReturnStatement,this.argument=e}return e}();t.ReturnStatement=$;var Q=function(){function e(e){this.type=r.Syntax.SequenceExpression,this.expressions=e}return e}();t.SequenceExpression=Q;var Z=function(){function e(e){this.type=r.Syntax.SpreadElement,this.argument=e}return e}();t.SpreadElement=Z;var ee=function(){function e(e,t){this.type=r.Syntax.MemberExpression,this.computed=!1,this.object=e,this.property=t}return e}();t.StaticMemberExpression=ee;var te=function(){function e(){this.type=r.Syntax.Super}return e}();t.Super=te;var ne=function(){function e(e,t){this.type=r.Syntax.SwitchCase,this.test=e,this.consequent=t}return e}();t.SwitchCase=ne;var re=function(){function e(e,t){this.type=r.Syntax.SwitchStatement,this.discriminant=e,this.cases=t}return e}();t.SwitchStatement=re;var ie=function(){function e(e,t){this.type=r.Syntax.TaggedTemplateExpression,this.tag=e,this.quasi=t}return e}();t.TaggedTemplateExpression=ie;var ae=function(){function e(e,t){this.type=r.Syntax.TemplateElement,this.value=e,this.tail=t}return e}();t.TemplateElement=ae;var se=function(){function e(e,t){this.type=r.Syntax.TemplateLiteral,this.quasis=e,this.expressions=t}return e}();t.TemplateLiteral=se;var oe=function(){function e(){this.type=r.Syntax.ThisExpression}return e}();t.ThisExpression=oe;var ue=function(){function e(e){this.type=r.Syntax.ThrowStatement,this.argument=e}return e}();t.ThrowStatement=ue;var le=function(){function e(e,t,n){this.type=r.Syntax.TryStatement,this.block=e,this.handler=t,this.finalizer=n}return e}();t.TryStatement=le;var ce=function(){function e(e,t){this.type=r.Syntax.UnaryExpression,this.operator=e,this.argument=t,this.prefix=!0}return e}();t.UnaryExpression=ce;var pe=function(){function e(e,t,n){this.type=r.Syntax.UpdateExpression,this.operator=e,this.argument=t,this.prefix=n}return e}();t.UpdateExpression=pe;var fe=function(){function e(e,t){this.type=r.Syntax.VariableDeclaration,this.declarations=e,this.kind=t}return e}();t.VariableDeclaration=fe;var he=function(){function e(e,t){this.type=r.Syntax.VariableDeclarator,this.id=e,this.init=t}return e}();t.VariableDeclarator=he;var de=function(){function e(e,t){this.type=r.Syntax.WhileStatement,this.test=e,this.body=t}return e}();t.WhileStatement=de;var ye=function(){function e(e,t){this.type=r.Syntax.WithStatement,
-this.object=e,this.body=t}return e}();t.WithStatement=ye;var me=function(){function e(e,t){this.type=r.Syntax.YieldExpression,this.argument=e,this.delegate=t}return e}();t.YieldExpression=me},function(e,t,n){"use strict";function r(e){var t;switch(e.type){case c.JSXSyntax.JSXIdentifier:var n=e;t=n.name;break;case c.JSXSyntax.JSXNamespacedName:var i=e;t=r(i.namespace)+":"+r(i.name);break;case c.JSXSyntax.JSXMemberExpression:var a=e;t=r(a.object)+"."+r(a.property)}return t}var i,a=this&&this.__extends||function(e,t){function n(){this.constructor=e}for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},s=n(9),o=n(7),u=n(3),l=n(12),c=n(13),p=n(10),f=n(14);!function(e){e[e.Identifier=100]="Identifier",e[e.Text=101]="Text"}(i||(i={})),o.TokenName[i.Identifier]="JSXIdentifier",o.TokenName[i.Text]="JSXText";var h=function(e){function t(t,n,r){e.call(this,t,n,r)}return a(t,e),t.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():e.prototype.parsePrimaryExpression.call(this)},t.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.lineNumber,this.scanner.lineStart=this.startMarker.lineStart},t.prototype.finishJSX=function(){this.nextToken()},t.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},t.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.scanXHTMLEntity=function(e){for(var t="&",n=!0,r=!1,i=!1,a=!1;!this.scanner.eof()&&n&&!r;){var o=this.scanner.source[this.scanner.index];if(o===e)break;if(r=";"===o,t+=o,++this.scanner.index,!r)switch(t.length){case 2:i="#"===o;break;case 3:i&&(a="x"===o,n=a||s.Character.isDecimalDigit(o.charCodeAt(0)),i=i&&!a);break;default:n=n&&!(i&&!s.Character.isDecimalDigit(o.charCodeAt(0))),n=n&&!(a&&!s.Character.isHexDigit(o.charCodeAt(0)))}}if(n&&r&&t.length>2){var u=t.substr(1,t.length-2);i&&u.length>1?t=String.fromCharCode(parseInt(u.substr(1),10)):a&&u.length>2?t=String.fromCharCode(parseInt("0"+u.substr(1),16)):i||a||!l.XHTMLEntities[u]||(t=l.XHTMLEntities[u])}return t},t.prototype.lexJSX=function(){var e=this.scanner.source.charCodeAt(this.scanner.index);if(60===e||62===e||47===e||58===e||61===e||123===e||125===e){var t=this.scanner.source[this.scanner.index++];return{type:o.Token.Punctuator,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(34===e||39===e){for(var n=this.scanner.index,r=this.scanner.source[this.scanner.index++],a="";!this.scanner.eof();){var u=this.scanner.source[this.scanner.index++];if(u===r)break;a+="&"===u?this.scanXHTMLEntity(r):u}return{type:o.Token.StringLiteral,value:a,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}if(46===e){var l=this.scanner.source.charCodeAt(this.scanner.index+1),c=this.scanner.source.charCodeAt(this.scanner.index+2),t=46===l&&46===c?"...":".",n=this.scanner.index;return this.scanner.index+=t.length,{type:o.Token.Punctuator,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}if(96===e)return{type:o.Token.Template,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(s.Character.isIdentifierStart(e)&&92!==e){var n=this.scanner.index;for(++this.scanner.index;!this.scanner.eof();){var u=this.scanner.source.charCodeAt(this.scanner.index);if(s.Character.isIdentifierPart(u)&&92!==u)++this.scanner.index;else{if(45!==u)break;++this.scanner.index}}var p=this.scanner.source.slice(n,this.scanner.index);return{type:i.Identifier,value:p,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}this.scanner.throwUnexpectedToken()},t.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.lineNumber=this.scanner.lineNumber,this.startMarker.lineStart=this.scanner.lineStart;var e=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(e)),e},t.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.lineNumber=this.scanner.lineNumber,this.startMarker.lineStart=this.scanner.lineStart;for(var e=this.scanner.index,t="";!this.scanner.eof();){var n=this.scanner.source[this.scanner.index];if("{"===n||"<"===n)break;++this.scanner.index,t+=n,s.Character.isLineTerminator(n.charCodeAt(0))&&(++this.scanner.lineNumber,"\r"===n&&"\n"===this.scanner.source[this.scanner.index]&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart;var r={type:i.Text,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:e,end:this.scanner.index};return t.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(r)),r},t.prototype.peekJSXToken=function(){var e=this.scanner.index,t=this.scanner.lineNumber,n=this.scanner.lineStart;this.scanner.scanComments();var r=this.lexJSX();return this.scanner.index=e,this.scanner.lineNumber=t,this.scanner.lineStart=n,r},t.prototype.expectJSX=function(e){var t=this.nextJSXToken();t.type===o.Token.Punctuator&&t.value===e||this.throwUnexpectedToken(t)},t.prototype.matchJSX=function(e){var t=this.peekJSXToken();return t.type===o.Token.Punctuator&&t.value===e},t.prototype.parseJSXIdentifier=function(){var e=this.createJSXNode(),t=this.nextJSXToken();return t.type!==i.Identifier&&this.throwUnexpectedToken(t),this.finalize(e,new f.JSXIdentifier(t.value))},t.prototype.parseJSXElementName=function(){var e=this.createJSXNode(),t=this.parseJSXIdentifier();if(this.matchJSX(":")){var n=t;this.expectJSX(":");var r=this.parseJSXIdentifier();t=this.finalize(e,new f.JSXNamespacedName(n,r))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var i=t;this.expectJSX(".");var a=this.parseJSXIdentifier();t=this.finalize(e,new f.JSXMemberExpression(i,a))}return t},t.prototype.parseJSXAttributeName=function(){var e,t=this.createJSXNode(),n=this.parseJSXIdentifier();if(this.matchJSX(":")){var r=n;this.expectJSX(":");var i=this.parseJSXIdentifier();e=this.finalize(t,new f.JSXNamespacedName(r,i))}else e=n;return e},t.prototype.parseJSXStringLiteralAttribute=function(){var e=this.createJSXNode(),t=this.nextJSXToken();t.type!==o.Token.StringLiteral&&this.throwUnexpectedToken(t);var n=this.getTokenRaw(t);return this.finalize(e,new p.Literal(t.value,n))},t.prototype.parseJSXExpressionAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new f.JSXExpressionContainer(t))},t.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},t.prototype.parseJSXNameValueAttribute=function(){var e=this.createJSXNode(),t=this.parseJSXAttributeName(),n=null;return this.matchJSX("=")&&(this.expectJSX("="),n=this.parseJSXAttributeValue()),this.finalize(e,new f.JSXAttribute(t,n))},t.prototype.parseJSXSpreadAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new f.JSXSpreadAttribute(t))},t.prototype.parseJSXAttributes=function(){for(var e=[];!this.matchJSX("/")&&!this.matchJSX(">");){var t=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();e.push(t)}return e},t.prototype.parseJSXOpeningElement=function(){var e=this.createJSXNode();this.expectJSX("<");var t=this.parseJSXElementName(),n=this.parseJSXAttributes(),r=this.matchJSX("/");return r&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new f.JSXOpeningElement(t,r,n))},t.prototype.parseJSXBoundaryElement=function(){var e=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var t=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(e,new f.JSXClosingElement(t))}var n=this.parseJSXElementName(),r=this.parseJSXAttributes(),i=this.matchJSX("/");return i&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new f.JSXOpeningElement(n,i,r))},t.prototype.parseJSXEmptyExpression=function(){var e=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart,this.finalize(e,new f.JSXEmptyExpression)},t.prototype.parseJSXExpressionContainer=function(){var e=this.createJSXNode();this.expectJSX("{");var t;return this.matchJSX("}")?(t=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),t=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(e,new f.JSXExpressionContainer(t))},t.prototype.parseJSXChildren=function(){for(var e=[];!this.scanner.eof();){var t=this.createJSXChildNode(),n=this.nextJSXText();if(n.start0))break;var s=this.finalize(e.node,new f.JSXElement(e.opening,e.children,e.closing));e=t.pop(),e.children.push(s)}}return e},t.prototype.parseJSXElement=function(){var e=this.createJSXNode(),t=this.parseJSXOpeningElement(),n=[],r=null;if(!t.selfClosing){var i=this.parseComplexJSXElement({node:e,opening:t,closing:r,children:n});n=i.children,r=i.closing}return this.finalize(e,new f.JSXElement(t,n,r))},t.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var e=this.parseJSXElement();return this.finishJSX(),e},t}(u.Parser);t.JSXParser=h},function(e,t){"use strict";t.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(e,t){"use strict";t.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(e,t,n){"use strict";var r=n(13),i=function(){function e(e){this.type=r.JSXSyntax.JSXClosingElement,this.name=e}return e}();t.JSXClosingElement=i;var a=function(){function e(e,t,n){this.type=r.JSXSyntax.JSXElement,this.openingElement=e,this.children=t,this.closingElement=n}return e}();t.JSXElement=a;var s=function(){function e(){this.type=r.JSXSyntax.JSXEmptyExpression}return e}();t.JSXEmptyExpression=s;var o=function(){function e(e){this.type=r.JSXSyntax.JSXExpressionContainer,this.expression=e}return e}();t.JSXExpressionContainer=o;var u=function(){function e(e){this.type=r.JSXSyntax.JSXIdentifier,this.name=e}return e}();t.JSXIdentifier=u;var l=function(){function e(e,t){this.type=r.JSXSyntax.JSXMemberExpression,this.object=e,this.property=t}return e}();t.JSXMemberExpression=l;var c=function(){function e(e,t){this.type=r.JSXSyntax.JSXAttribute,this.name=e,this.value=t}return e}();t.JSXAttribute=c;var p=function(){function e(e,t){this.type=r.JSXSyntax.JSXNamespacedName,this.namespace=e,this.name=t}return e}();t.JSXNamespacedName=p;var f=function(){function e(e,t,n){this.type=r.JSXSyntax.JSXOpeningElement,this.name=e,this.selfClosing=t,this.attributes=n}return e}();t.JSXOpeningElement=f;var h=function(){function e(e){this.type=r.JSXSyntax.JSXSpreadAttribute,this.argument=e}return e}();t.JSXSpreadAttribute=h;var d=function(){function e(e,t){this.type=r.JSXSyntax.JSXText,this.value=e,this.raw=t}return e}();t.JSXText=d},function(e,t,n){"use strict";var r=n(8),i=n(6),a=n(7),s=function(){function e(){this.values=[],this.curly=this.paren=-1}return e.prototype.beforeFunctionExpression=function(e){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(e)>=0},e.prototype.isRegexStart=function(){var e=this.values[this.values.length-1],t=null!==e;switch(e){case"this":case"]":t=!1;break;case")":var n=this.values[this.paren-1];t="if"===n||"while"===n||"for"===n||"with"===n;break;case"}":if(t=!1,"function"===this.values[this.curly-3]){var r=this.values[this.curly-4];t=!!r&&!this.beforeFunctionExpression(r)}else if("function"===this.values[this.curly-4]){var i=this.values[this.curly-5];t=!i||!this.beforeFunctionExpression(i)}}return t},e.prototype.push=function(e){e.type===a.Token.Punctuator||e.type===a.Token.Keyword?("{"===e.value?this.curly=this.values.length:"("===e.value&&(this.paren=this.values.length),this.values.push(e.value)):this.values.push(null)},e}(),o=function(){function e(e,t){this.errorHandler=new i.ErrorHandler,this.errorHandler.tolerant=!!t&&("boolean"==typeof t.tolerant&&t.tolerant),this.scanner=new r.Scanner(e,this.errorHandler),this.scanner.trackComment=!!t&&("boolean"==typeof t.comment&&t.comment),this.trackRange=!!t&&("boolean"==typeof t.range&&t.range),this.trackLoc=!!t&&("boolean"==typeof t.loc&&t.loc),this.buffer=[],this.reader=new s}return e.prototype.errors=function(){return this.errorHandler.errors},e.prototype.getNextToken=function(){if(0===this.buffer.length){var e=this.scanner.scanComments();if(this.scanner.trackComment)for(var t=0;tr&&(t[r]=t[n]),++r);return t.length=r,t},r(n,"makeAccessor",l)},{}],561:[function(e,t,n){arguments[4][517][0].apply(n,arguments)},{"./util":570,dup:517}],562:[function(e,t,n){arguments[4][518][0].apply(n,arguments)},{"./base64":563,dup:518}],563:[function(e,t,n){arguments[4][519][0].apply(n,arguments)},{dup:519}],564:[function(e,t,n){arguments[4][520][0].apply(n,arguments)},{dup:520}],565:[function(e,t,n){arguments[4][521][0].apply(n,arguments)},{"./util":570,dup:521}],566:[function(e,t,n){arguments[4][522][0].apply(n,arguments)},{dup:522}],567:[function(e,t,n){arguments[4][523][0].apply(n,arguments)},{"./array-set":561,"./base64-vlq":562,"./binary-search":564,"./quick-sort":566,"./util":570,dup:523}],568:[function(e,t,n){arguments[4][524][0].apply(n,arguments)},{"./array-set":561,"./base64-vlq":562,"./mapping-list":565,"./util":570,dup:524}],569:[function(e,t,n){arguments[4][525][0].apply(n,arguments)},{"./source-map-generator":568,"./util":570,dup:525}],570:[function(e,t,n){arguments[4][526][0].apply(n,arguments)},{dup:526}],571:[function(e,t,n){arguments[4][527][0].apply(n,arguments)},{"./lib/source-map-consumer":567,"./lib/source-map-generator":568,"./lib/source-node":569,dup:527}],572:[function(e,t,n){t.exports={plugins:[e("babel-plugin-syntax-async-functions"),e("babel-plugin-syntax-async-generators"),e("babel-plugin-transform-es2015-classes"),e("babel-plugin-transform-es2015-arrow-functions"),e("babel-plugin-transform-es2015-block-scoping"),e("babel-plugin-transform-es2015-for-of"),e("regenerator-transform").default]}},{"babel-plugin-syntax-async-functions":573,"babel-plugin-syntax-async-generators":574,"babel-plugin-transform-es2015-arrow-functions":575,"babel-plugin-transform-es2015-block-scoping":576,"babel-plugin-transform-es2015-classes":936,"babel-plugin-transform-es2015-for-of":1629,"regenerator-transform":1632}],573:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncFunctions")}}},t.exports=n.default},{}],574:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncGenerators")}}},t.exports=n.default},{}],575:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(e){var t=e.types;return{visitor:{ArrowFunctionExpression:function(e,n){if(n.opts.spec){var r=e.node;if(r.shadow)return;r.shadow={this:!1},r.type="FunctionExpression";var i=t.thisExpression();i._forceShadow=e,e.ensureBlock(),e.get("body").unshiftContainer("body",t.expressionStatement(t.callExpression(n.addHelper("newArrowCheck"),[t.thisExpression(),i]))),e.replaceWith(t.callExpression(t.memberExpression(r,t.identifier("bind")),[t.thisExpression()]))}else e.arrowFunctionToShadowed()}}}},t.exports=n.default},{}],576:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return x.isLoop(e.parent)||x.isCatchClause(e.parent)}function s(e){return!!x.isVariableDeclaration(e)&&(!!e[x.BLOCK_SCOPED_SYMBOL]||("let"===e.kind||"const"===e.kind))}function o(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(t||(t=e.node),!x.isFor(n))for(var a=0;a=0)return;s=s+"|"+n.label.name}else{if(t.ignoreLabeless)return;if(t.inSwitchCase)return;if(x.isBreakStatement(n)&&x.isSwitchCase(r))return}t.hasBreakContinue=!0,t.map[s]=n,a=x.stringLiteral(s)}e.isReturnStatement()&&(t.hasReturn=!0,a=x.objectExpression([x.objectProperty(x.identifier("v"),n.argument||i.buildUndefinedNode())])),a&&(a=x.returnStatement(a),a[this.LOOP_IGNORE]=!0,e.skip(),e.replaceWith(x.inherits(a,n)))}}},O=function(){function e(t,n,r,i,a){(0,y.default)(this,e),this.parent=r,this.scope=i,this.file=a,this.blockPath=n,this.block=n.node,this.outsideLetReferences=(0,h.default)(null),this.hasLetReferences=!1,this.letReferences=(0,h.default)(null),this.body=[],t&&(this.loopParent=t.parent,this.loopLabel=x.isLabeledStatement(this.loopParent)&&this.loopParent.label,this.loopPath=t,this.loop=t.node)}return e.prototype.run=function(){var e=this.block;if(!e._letDone){e._letDone=!0;var t=this.getLetReferences();if(x.isFunction(this.parent)||x.isProgram(this.block))return void this.updateScopeInfo();if(this.hasLetReferences)return t?this.wrapClosure():this.remap(),this.updateScopeInfo(t),this.loopLabel&&!x.isLabeledStatement(this.loopParent)?x.labeledStatement(this.loopLabel,this.loop):void 0}},e.prototype.updateScopeInfo=function(e){var t=this.scope,n=t.getFunctionParent(),r=this.letReferences;for(var i in r){var a=r[i],s=t.getBinding(a.name);s&&("let"!==s.kind&&"const"!==s.kind||(s.kind="var",e?t.removeBinding(a.name):t.moveBindingTo(a.name,n)))}},e.prototype.remap=function(){var e=this.letReferences,t=this.scope;for(var n in e){var r=e[n];(t.parentHasBinding(n)||t.hasGlobal(n))&&(t.hasOwnBinding(n)&&t.rename(r.name),this.blockPath.scope.hasOwnBinding(n)&&this.blockPath.scope.rename(r.name))}},e.prototype.wrapClosure=function(){var e=this.block,t=this.outsideLetReferences;if(this.loop)for(var n in t){var r=t[n];(this.scope.hasGlobal(r.name)||this.scope.parentHasBinding(r.name))&&(delete t[r.name],delete this.letReferences[r.name],this.scope.rename(r.name),this.letReferences[r.name]=r,t[r.name]=r)}this.has=this.checkLoop(),this.hoistVarDeclarations();var i=(0,E.default)(t),a=(0,E.default)(t),s=this.blockPath.isSwitchStatement(),o=x.functionExpression(null,i,x.blockStatement(s?[e]:e.body));o.shadow=!0,this.addContinuations(o);var u=o;this.loop&&(u=this.scope.generateUidIdentifier("loop"),this.loopPath.insertBefore(x.variableDeclaration("var",[x.variableDeclarator(u,o)])));var l=x.callExpression(u,a),c=this.scope.generateUidIdentifier("ret"),p=b.default.hasType(o.body,this.scope,"YieldExpression",x.FUNCTION_TYPES);p&&(o.generator=!0,l=x.yieldExpression(l,!0));var f=b.default.hasType(o.body,this.scope,"AwaitExpression",x.FUNCTION_TYPES);f&&(o.async=!0,l=x.awaitExpression(l)),this.buildClosure(c,l),s?this.blockPath.replaceWithMultiple(this.body):e.body=this.body},e.prototype.buildClosure=function(e,t){var n=this.has;n.hasReturn||n.hasBreakContinue?this.buildHas(e,t):this.body.push(x.expressionStatement(t))},e.prototype.addContinuations=function(e){var t={reassignments:{},outsideReferences:this.outsideLetReferences};this.scope.traverse(e,j,t);for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:"value",r=arguments[3],i=void 0;e.static?(this.hasStaticDescriptors=!0,i=this.staticMutatorMap):(this.hasInstanceDescriptors=!0,i=this.instanceMutatorMap);var a=y.push(i,e,n,this.file,r);return t&&(a.enumerable=v.booleanLiteral(!0)),a},e.prototype.constructorMeMaybe=function(){for(var e=!1,t=this.path.get("body.body"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,s.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var o=a;if(e=o.equals("kind","constructor"))break}if(!e){var u=void 0,l=void 0;if(this.isDerived){var c=x().expression;u=c.params,l=c.body}else u=[],l=v.blockStatement([]);this.path.get("body").unshiftContainer("body",v.classMethod("constructor",v.identifier("constructor"),u,l))}},e.prototype.buildBody=function(){if(this.constructorMeMaybe(),this.pushBody(),this.verifyConstructor(),this.userConstructor){var e=this.constructorBody;e.body=e.body.concat(this.userConstructor.body.body),v.inherits(this.constructor,this.userConstructor),v.inherits(e,this.userConstructor.body)}this.pushDescriptors()},e.prototype.pushBody=function(){for(var e=this.path.get("body.body"),t=e,n=Array.isArray(t),r=0,t=n?t:(0,s.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,o=a.node;if(a.isClassProperty())throw a.buildCodeFrameError("Missing class properties transform.");if(o.decorators)throw a.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");if(v.isClassMethod(o)){var u="constructor"===o.kind;if(u&&(a.traverse(E,this),!this.hasBareSuper&&this.isDerived))throw a.buildCodeFrameError("missing super() call in constructor");var l=new p.default({forceSuperMemoisation:u,methodPath:a,methodNode:o,objectRef:this.classRef,superRef:this.superName,isStatic:o.static,isLoose:this.isLoose,scope:this.scope,file:this.file},!0);l.replace(),u?this.pushConstructor(l,o,a):this.pushMethod(o,a)}}},e.prototype.clearDescriptors=function(){this.hasInstanceDescriptors=!1,this.hasStaticDescriptors=!1,this.instanceMutatorMap={},this.staticMutatorMap={}},e.prototype.pushDescriptors=function(){this.pushInherits();var e=this.body,t=void 0,n=void 0;if(this.hasInstanceDescriptors&&(t=y.toClassObject(this.instanceMutatorMap)),this.hasStaticDescriptors&&(n=y.toClassObject(this.staticMutatorMap)),t||n){t&&(t=y.toComputedObjectFromClass(t)),n&&(n=y.toComputedObjectFromClass(n));var r=v.nullLiteral(),i=[this.classRef,r,r,r,r];t&&(i[1]=t),n&&(i[2]=n),this.instanceInitializersId&&(i[3]=this.instanceInitializersId,e.unshift(this.buildObjectAssignment(this.instanceInitializersId))),this.staticInitializersId&&(i[4]=this.staticInitializersId,e.unshift(this.buildObjectAssignment(this.staticInitializersId)));for(var a=0,s=0;s=o.length)break;c=o[l++]}else{if(l=o.next(),l.done)break;c=l.value}var p=c;this.wrapSuperCall(p,i,a,n),r&&p.find(function(e){return e===t||(e.isLoop()||e.isConditional()?(r=!1,!0):void 0)})}for(var f=this.superThises,h=Array.isArray(f),d=0,f=h?f:(0,s.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var m=y;m.replaceWith(a)}var b=function(t){return v.callExpression(e.file.addHelper("possibleConstructorReturn"),[a].concat(t||[]))},g=n.get("body");g.length&&!g.pop().isReturnStatement()&&n.pushContainer("body",v.returnStatement(r?a:b()));for(var x=this.superReturns,_=Array.isArray(x),E=0,x=_?x:(0,s.default)(x);;){var D;if(_){if(E>=x.length)break;D=x[E++]}else{if(E=x.next(),E.done)break;D=E.value}var C=D;if(C.node.argument){var S=C.scope.generateDeclaredUidIdentifier("ret");C.get("argument").replaceWithMultiple([v.assignmentExpression("=",S,C.node.argument),b(S)])}else C.get("argument").replaceWith(b())}}},e.prototype.pushMethod=function(e,t){var n=t?t.scope:this.scope;"method"===e.kind&&this._processMethod(e,n)||this.pushToMap(e,!1,null,n)},e.prototype._processMethod=function(){return!1},e.prototype.pushConstructor=function(e,t,n){this.bareSupers=e.bareSupers,this.superReturns=e.returns,n.scope.hasOwnBinding(this.classRef.name)&&n.scope.rename(this.classRef.name);var r=this.constructor;this.userConstructorPath=n,this.userConstructor=t,this.hasConstructor=!0,v.inheritsComments(r,t),r._ignoreUserWhitespace=!0,r.params=t.params,v.inherits(r.body,t.body),r.body.directives=t.body.directives,this._pushConstructor()},e.prototype._pushConstructor=function(){this.pushedConstructor||(this.pushedConstructor=!0,(this.hasInstanceDescriptors||this.hasStaticDescriptors)&&this.pushDescriptors(),this.body.push(this.constructor),this.pushInherits())},e.prototype.pushInherits=function(){this.isDerived&&!this.pushedInherits&&(this.pushedInherits=!0,this.body.unshift(v.expressionStatement(v.callExpression(this.file.addHelper("inherits"),[this.classRef,this.superName]))))},e}();n.default=D,t.exports=n.default},{"babel-helper-define-map":939,"babel-helper-optimise-call-expression":1023,"babel-helper-replace-supers":1024,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-template":1144,"babel-traverse":1284,"babel-types":1480}],939:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return!g.isClassMethod(e)&&!g.isObjectMethod(e)||"get"!==e.kind&&"set"!==e.kind?"value":e.kind}function s(e,t,n,r,i){var s=g.toKeyAlias(t),o={};if((0,m.default)(e,s)&&(o=e[s]),e[s]=o,o._inherits=o._inherits||[],o._inherits.push(t),o._key=t.key,t.computed&&(o._computed=!0),t.decorators){var u=o.decorators=o.decorators||g.arrayExpression([]);u.elements=u.elements.concat(t.decorators.map(function(e){return e.expression}).reverse())}if(o.value||o.initializer)throw r.buildCodeFrameError(t,"Key conflict with sibling node");var l=void 0,c=void 0;(g.isObjectProperty(t)||g.isObjectMethod(t)||g.isClassMethod(t))&&(l=g.toComputedKey(t,t.key)),g.isObjectProperty(t)||g.isClassProperty(t)?c=t.value:(g.isObjectMethod(t)||g.isClassMethod(t))&&(c=g.functionExpression(null,t.params,t.body,t.generator,t.async),c.returnType=t.returnType);var p=a(t);return n&&"value"===p||(n=p),i&&g.isStringLiteral(l)&&("value"===n||"initializer"===n)&&g.isFunctionExpression(c)&&(c=(0,f.default)({id:l,node:c,scope:i})),c&&(g.inheritsComments(c,t),o[n]=c),o}function o(e){for(var t in e)if(e[t]._computed)return!0;return!1}function u(e){for(var t=g.arrayExpression([]),n=0;n1&&void 0!==arguments[1]&&arguments[1];(0,l.default)(this,e),this.forceSuperMemoisation=t.forceSuperMemoisation,this.methodPath=t.methodPath,this.methodNode=t.methodNode,this.superRef=t.superRef,this.isStatic=t.isStatic,this.hasSuper=!1,this.inClass=n,this.isLoose=t.isLoose,this.scope=this.methodPath.scope,this.file=t.file,this.opts=t,this.bareSupers=[],this.returns=[],this.thises=[]}return e.prototype.getObjectRef=function(){return this.opts.objectRef||this.opts.getObjectRef()},e.prototype.setSuperProperty=function(e,t,n){return b.callExpression(this.file.addHelper("set"),[o(this.getObjectRef(),this.isStatic),n?e:b.stringLiteral(e.name),t,b.thisExpression()])},e.prototype.getSuperProperty=function(e,t){return b.callExpression(this.file.addHelper("get"),[o(this.getObjectRef(),this.isStatic),t?e:b.stringLiteral(e.name),b.thisExpression()])},e.prototype.replace=function(){this.methodPath.traverse(v,this)},e.prototype.getLooseSuperProperty=function(e,t){var n=this.methodNode,r=this.superRef||b.identifier("Function");return t.property===e?void 0:b.isCallExpression(t,{callee:e})?void 0:b.isMemberExpression(t)&&!n.static?b.memberExpression(r,b.identifier("prototype")):r},e.prototype.looseHandle=function(e){var t=e.node;if(e.isSuper())return this.getLooseSuperProperty(t,e.parent);if(e.isCallExpression()){var n=t.callee;if(!b.isMemberExpression(n))return;if(!b.isSuper(n.object))return;return b.appendToMemberExpression(n,b.identifier("call")),t.arguments.unshift(b.thisExpression()),!0}},e.prototype.specHandleAssignmentExpression=function(e,t,n){return"="===n.operator?this.setSuperProperty(n.left.property,n.right,n.left.computed):(e=e||t.scope.generateUidIdentifier("ref"),[b.variableDeclaration("var",[b.variableDeclarator(e,n.left)]),b.expressionStatement(b.assignmentExpression("=",n.left,b.binaryExpression(n.operator[0],e,n.right)))])},e.prototype.specHandle=function(e){var t=void 0,n=void 0,r=void 0,i=e.parent,o=e.node;if(a(o,i))throw e.buildCodeFrameError(y.get("classesIllegalBareSuper"));if(b.isCallExpression(o)){var u=o.callee;if(b.isSuper(u))return;s(u)&&(t=u.property,n=u.computed,r=o.arguments)}else if(b.isMemberExpression(o)&&b.isSuper(o.object))t=o.property,n=o.computed;else{if(b.isUpdateExpression(o)&&s(o.argument)){var l=b.binaryExpression(o.operator[0],o.argument,b.numericLiteral(1));if(o.prefix)return this.specHandleAssignmentExpression(null,e,l);var c=e.scope.generateUidIdentifier("ref");return this.specHandleAssignmentExpression(c,e,l).concat(b.expressionStatement(c))}if(b.isAssignmentExpression(o)&&s(o.left))return this.specHandleAssignmentExpression(null,e,o)}if(t){var p=this.getSuperProperty(t,n);return r?this.optimiseCall(p,r):p}},e.prototype.optimiseCall=function(e,t){var n=b.thisExpression();return n[g]=!0,(0,h.default)(e,n,t)},e}();n.default=x,t.exports=n.default},{"babel-helper-optimise-call-expression":1023,"babel-messages":1025,"babel-runtime/core-js/symbol":1034,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480}],1025:[function(e,t,n){arguments[4][99][0].apply(n,arguments)},{"babel-runtime/core-js/json/stringify":1027,dup:99,util:35}],1026:[function(e,t,n){arguments[4][100][0].apply(n,arguments)},{"core-js/library/fn/get-iterator":1042,dup:100}],1027:[function(e,t,n){arguments[4][101][0].apply(n,arguments)},{"core-js/library/fn/json/stringify":1043,dup:101}],1028:[function(e,t,n){arguments[4][102][0].apply(n,arguments)},{"core-js/library/fn/map":1044,dup:102}],1029:[function(e,t,n){arguments[4][103][0].apply(n,arguments)},{"core-js/library/fn/number/max-safe-integer":1045,dup:103}],1030:[function(e,t,n){arguments[4][105][0].apply(n,arguments)},{"core-js/library/fn/object/create":1046,dup:105}],1031:[function(e,t,n){arguments[4][106][0].apply(n,arguments)},{"core-js/library/fn/object/get-own-property-symbols":1047,dup:106}],1032:[function(e,t,n){arguments[4][107][0].apply(n,arguments)},{"core-js/library/fn/object/keys":1048,dup:107}],1033:[function(e,t,n){arguments[4][108][0].apply(n,arguments)},{"core-js/library/fn/object/set-prototype-of":1049,dup:108}],1034:[function(e,t,n){arguments[4][109][0].apply(n,arguments)},{"core-js/library/fn/symbol":1051,dup:109}],1035:[function(e,t,n){arguments[4][110][0].apply(n,arguments)},{"core-js/library/fn/symbol/for":1050,dup:110}],1036:[function(e,t,n){arguments[4][111][0].apply(n,arguments)},{"core-js/library/fn/symbol/iterator":1052,dup:111}],1037:[function(e,t,n){arguments[4][112][0].apply(n,arguments)},{"core-js/library/fn/weak-map":1053,dup:112}],1038:[function(e,t,n){arguments[4][114][0].apply(n,arguments)},{dup:114}],1039:[function(e,t,n){arguments[4][115][0].apply(n,arguments)},{"../core-js/object/create":1030,"../core-js/object/set-prototype-of":1033,"../helpers/typeof":1041,dup:115}],1040:[function(e,t,n){arguments[4][117][0].apply(n,arguments)},{"../helpers/typeof":1041,dup:117}],1041:[function(e,t,n){arguments[4][118][0].apply(n,arguments)},{"../core-js/symbol":1034,"../core-js/symbol/iterator":1036,dup:118}],1042:[function(e,t,n){arguments[4][119][0].apply(n,arguments)},{"../modules/core.get-iterator":1129,"../modules/es6.string.iterator":1137,"../modules/web.dom.iterable":1143,dup:119}],1043:[function(e,t,n){arguments[4][120][0].apply(n,arguments)},{"../../modules/_core":1069,dup:120}],1044:[function(e,t,n){arguments[4][121][0].apply(n,arguments)},{"../modules/_core":1069,"../modules/es6.map":1131,"../modules/es6.object.to-string":1136,"../modules/es6.string.iterator":1137,"../modules/es7.map.to-json":1140,"../modules/web.dom.iterable":1143,dup:121}],1045:[function(e,t,n){arguments[4][122][0].apply(n,arguments)},{"../../modules/es6.number.max-safe-integer":1132,dup:122}],1046:[function(e,t,n){arguments[4][124][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.create":1133,dup:124}],1047:[function(e,t,n){arguments[4][125][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.symbol":1138,dup:125}],1048:[function(e,t,n){arguments[4][126][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.keys":1134,dup:126}],1049:[function(e,t,n){arguments[4][127][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.set-prototype-of":1135,dup:127}],1050:[function(e,t,n){arguments[4][128][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.symbol":1138,dup:128}],1051:[function(e,t,n){arguments[4][129][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.to-string":1136,"../../modules/es6.symbol":1138,"../../modules/es7.symbol.async-iterator":1141,"../../modules/es7.symbol.observable":1142,dup:129}],1052:[function(e,t,n){arguments[4][130][0].apply(n,arguments)},{"../../modules/_wks-ext":1126,"../../modules/es6.string.iterator":1137,"../../modules/web.dom.iterable":1143,dup:130}],1053:[function(e,t,n){arguments[4][131][0].apply(n,arguments)},{"../modules/_core":1069,"../modules/es6.object.to-string":1136,"../modules/es6.weak-map":1139,"../modules/web.dom.iterable":1143,dup:131}],1054:[function(e,t,n){arguments[4][133][0].apply(n,arguments)},{dup:133}],1055:[function(e,t,n){arguments[4][134][0].apply(n,arguments)},{dup:134}],1056:[function(e,t,n){arguments[4][135][0].apply(n,arguments)},{dup:135}],1057:[function(e,t,n){arguments[4][136][0].apply(n,arguments)},{"./_is-object":1087,dup:136}],1058:[function(e,t,n){arguments[4][137][0].apply(n,arguments)},{"./_for-of":1078,dup:137}],1059:[function(e,t,n){arguments[4][138][0].apply(n,arguments)},{"./_to-index":1118,"./_to-iobject":1120,"./_to-length":1121,dup:138}],1060:[function(e,t,n){arguments[4][139][0].apply(n,arguments)},{"./_array-species-create":1062,"./_ctx":1070,"./_iobject":1084,"./_to-length":1121,"./_to-object":1122,dup:139}],1061:[function(e,t,n){arguments[4][140][0].apply(n,arguments)},{"./_is-array":1086,"./_is-object":1087,"./_wks":1127,dup:140}],1062:[function(e,t,n){arguments[4][141][0].apply(n,arguments)},{"./_array-species-constructor":1061,dup:141}],1063:[function(e,t,n){arguments[4][142][0].apply(n,arguments)},{"./_cof":1064,"./_wks":1127,dup:142}],1064:[function(e,t,n){arguments[4][143][0].apply(n,arguments)},{dup:143}],1065:[function(e,t,n){arguments[4][144][0].apply(n,arguments)},{"./_an-instance":1056,"./_ctx":1070,"./_defined":1071,"./_descriptors":1072,"./_for-of":1078,"./_iter-define":1090,"./_iter-step":1091,"./_meta":1095,"./_object-create":1097,"./_object-dp":1098,"./_redefine-all":1110,"./_set-species":1113,dup:144}],1066:[function(e,t,n){arguments[4][145][0].apply(n,arguments)},{"./_array-from-iterable":1058,"./_classof":1063,dup:145}],1067:[function(e,t,n){arguments[4][146][0].apply(n,arguments)},{"./_an-instance":1056,"./_an-object":1057,"./_array-methods":1060,"./_for-of":1078,"./_has":1080,"./_is-object":1087,"./_meta":1095,"./_redefine-all":1110,dup:146}],1068:[function(e,t,n){arguments[4][147][0].apply(n,arguments)},{"./_an-instance":1056,"./_array-methods":1060,"./_descriptors":1072,"./_export":1076,"./_fails":1077,"./_for-of":1078,"./_global":1079,"./_hide":1081,"./_is-object":1087,"./_meta":1095,"./_object-dp":1098,"./_redefine-all":1110,"./_set-to-string-tag":1114,dup:147}],1069:[function(e,t,n){arguments[4][148][0].apply(n,arguments)},{dup:148}],1070:[function(e,t,n){arguments[4][149][0].apply(n,arguments)},{"./_a-function":1054,dup:149}],1071:[function(e,t,n){arguments[4][150][0].apply(n,arguments)},{dup:150}],1072:[function(e,t,n){arguments[4][151][0].apply(n,arguments)},{"./_fails":1077,dup:151}],1073:[function(e,t,n){arguments[4][152][0].apply(n,arguments)},{"./_global":1079,"./_is-object":1087,dup:152}],1074:[function(e,t,n){arguments[4][153][0].apply(n,arguments)},{dup:153}],1075:[function(e,t,n){arguments[4][154][0].apply(n,arguments)},{"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,dup:154}],1076:[function(e,t,n){arguments[4][155][0].apply(n,arguments)},{"./_core":1069,"./_ctx":1070,"./_global":1079,"./_hide":1081,dup:155}],1077:[function(e,t,n){arguments[4][156][0].apply(n,arguments)},{dup:156}],1078:[function(e,t,n){arguments[4][157][0].apply(n,arguments)},{"./_an-object":1057,"./_ctx":1070,"./_is-array-iter":1085,"./_iter-call":1088,"./_to-length":1121,"./core.get-iterator-method":1128,dup:157}],1079:[function(e,t,n){arguments[4][158][0].apply(n,arguments)},{dup:158}],1080:[function(e,t,n){arguments[4][159][0].apply(n,arguments)},{dup:159}],1081:[function(e,t,n){arguments[4][160][0].apply(n,arguments)},{"./_descriptors":1072,"./_object-dp":1098,"./_property-desc":1109,dup:160}],1082:[function(e,t,n){arguments[4][161][0].apply(n,arguments)},{"./_global":1079,dup:161}],1083:[function(e,t,n){arguments[4][162][0].apply(n,arguments)},{"./_descriptors":1072,"./_dom-create":1073,"./_fails":1077,dup:162}],1084:[function(e,t,n){arguments[4][163][0].apply(n,arguments)},{"./_cof":1064,dup:163}],1085:[function(e,t,n){arguments[4][164][0].apply(n,arguments)},{"./_iterators":1092,"./_wks":1127,dup:164}],1086:[function(e,t,n){arguments[4][165][0].apply(n,arguments)},{"./_cof":1064,dup:165}],1087:[function(e,t,n){arguments[4][166][0].apply(n,arguments)},{dup:166}],1088:[function(e,t,n){arguments[4][167][0].apply(n,arguments)},{"./_an-object":1057,dup:167}],1089:[function(e,t,n){arguments[4][168][0].apply(n,arguments)},{"./_hide":1081,"./_object-create":1097,"./_property-desc":1109,"./_set-to-string-tag":1114,"./_wks":1127,dup:168}],1090:[function(e,t,n){arguments[4][169][0].apply(n,arguments)},{"./_export":1076,"./_has":1080,"./_hide":1081,"./_iter-create":1089,"./_iterators":1092,"./_library":1094,"./_object-gpo":1104,"./_redefine":1111,"./_set-to-string-tag":1114,"./_wks":1127,dup:169}],1091:[function(e,t,n){arguments[4][170][0].apply(n,arguments)},{dup:170}],1092:[function(e,t,n){arguments[4][171][0].apply(n,arguments)},{dup:171}],1093:[function(e,t,n){arguments[4][172][0].apply(n,arguments)},{"./_object-keys":1106,"./_to-iobject":1120,dup:172}],1094:[function(e,t,n){arguments[4][173][0].apply(n,arguments)},{dup:173}],1095:[function(e,t,n){arguments[4][174][0].apply(n,arguments)},{"./_fails":1077,"./_has":1080,"./_is-object":1087,"./_object-dp":1098,"./_uid":1124,dup:174}],1096:[function(e,t,n){arguments[4][175][0].apply(n,arguments)},{"./_fails":1077,"./_iobject":1084,"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,"./_to-object":1122,dup:175}],1097:[function(e,t,n){arguments[4][176][0].apply(n,arguments)},{"./_an-object":1057,"./_dom-create":1073,"./_enum-bug-keys":1074,"./_html":1082,"./_object-dps":1099,"./_shared-key":1115,dup:176}],1098:[function(e,t,n){arguments[4][177][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_ie8-dom-define":1083,"./_to-primitive":1123,dup:177}],1099:[function(e,t,n){arguments[4][178][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_object-dp":1098,"./_object-keys":1106,dup:178}],1100:[function(e,t,n){arguments[4][179][0].apply(n,arguments)},{"./_descriptors":1072,"./_has":1080,"./_ie8-dom-define":1083,"./_object-pie":1107,"./_property-desc":1109,"./_to-iobject":1120,"./_to-primitive":1123,dup:179}],1101:[function(e,t,n){arguments[4][180][0].apply(n,arguments)},{"./_object-gopn":1102,"./_to-iobject":1120,dup:180}],1102:[function(e,t,n){arguments[4][181][0].apply(n,arguments)},{"./_enum-bug-keys":1074,"./_object-keys-internal":1105,dup:181}],1103:[function(e,t,n){arguments[4][182][0].apply(n,arguments)},{dup:182}],1104:[function(e,t,n){arguments[4][183][0].apply(n,arguments)},{"./_has":1080,"./_shared-key":1115,"./_to-object":1122,dup:183}],1105:[function(e,t,n){arguments[4][184][0].apply(n,arguments)},{"./_array-includes":1059,"./_has":1080,"./_shared-key":1115,"./_to-iobject":1120,dup:184}],1106:[function(e,t,n){arguments[4][185][0].apply(n,arguments)},{"./_enum-bug-keys":1074,"./_object-keys-internal":1105,dup:185}],1107:[function(e,t,n){arguments[4][186][0].apply(n,arguments)},{dup:186}],1108:[function(e,t,n){arguments[4][187][0].apply(n,arguments)},{"./_core":1069,"./_export":1076,"./_fails":1077,dup:187}],1109:[function(e,t,n){arguments[4][188][0].apply(n,arguments)},{dup:188}],1110:[function(e,t,n){arguments[4][189][0].apply(n,arguments)},{"./_hide":1081,dup:189}],1111:[function(e,t,n){arguments[4][190][0].apply(n,arguments)},{"./_hide":1081,dup:190}],1112:[function(e,t,n){arguments[4][191][0].apply(n,arguments)},{"./_an-object":1057,"./_ctx":1070,"./_is-object":1087,"./_object-gopd":1100,dup:191}],1113:[function(e,t,n){arguments[4][192][0].apply(n,arguments)},{"./_core":1069,"./_descriptors":1072,"./_global":1079,"./_object-dp":1098,"./_wks":1127,dup:192}],1114:[function(e,t,n){arguments[4][193][0].apply(n,arguments)},{"./_has":1080,"./_object-dp":1098,"./_wks":1127,dup:193}],1115:[function(e,t,n){arguments[4][194][0].apply(n,arguments)},{"./_shared":1116,"./_uid":1124,dup:194}],1116:[function(e,t,n){arguments[4][195][0].apply(n,arguments)},{"./_global":1079,dup:195}],1117:[function(e,t,n){arguments[4][196][0].apply(n,arguments)},{"./_defined":1071,"./_to-integer":1119,dup:196}],1118:[function(e,t,n){arguments[4][197][0].apply(n,arguments)},{"./_to-integer":1119,dup:197}],1119:[function(e,t,n){arguments[4][198][0].apply(n,arguments)},{dup:198}],1120:[function(e,t,n){arguments[4][199][0].apply(n,arguments)},{"./_defined":1071,"./_iobject":1084,dup:199}],1121:[function(e,t,n){arguments[4][200][0].apply(n,arguments)},{"./_to-integer":1119,dup:200}],1122:[function(e,t,n){arguments[4][201][0].apply(n,arguments)},{"./_defined":1071,dup:201}],1123:[function(e,t,n){arguments[4][202][0].apply(n,arguments)},{"./_is-object":1087,dup:202}],1124:[function(e,t,n){arguments[4][203][0].apply(n,arguments)},{dup:203}],1125:[function(e,t,n){arguments[4][204][0].apply(n,arguments)},{"./_core":1069,"./_global":1079,"./_library":1094,"./_object-dp":1098,"./_wks-ext":1126,dup:204}],1126:[function(e,t,n){arguments[4][205][0].apply(n,arguments)},{"./_wks":1127,dup:205}],1127:[function(e,t,n){arguments[4][206][0].apply(n,arguments)},{"./_global":1079,"./_shared":1116,"./_uid":1124,dup:206}],1128:[function(e,t,n){arguments[4][207][0].apply(n,arguments)},{"./_classof":1063,"./_core":1069,"./_iterators":1092,"./_wks":1127,dup:207}],1129:[function(e,t,n){arguments[4][208][0].apply(n,arguments)},{"./_an-object":1057,"./_core":1069,"./core.get-iterator-method":1128,dup:208}],1130:[function(e,t,n){arguments[4][209][0].apply(n,arguments)},{"./_add-to-unscopables":1055,"./_iter-define":1090,"./_iter-step":1091,"./_iterators":1092,"./_to-iobject":1120,dup:209}],1131:[function(e,t,n){arguments[4][210][0].apply(n,arguments)},{"./_collection":1068,"./_collection-strong":1065,dup:210}],1132:[function(e,t,n){arguments[4][211][0].apply(n,arguments)},{"./_export":1076,dup:211}],1133:[function(e,t,n){arguments[4][213][0].apply(n,arguments)},{"./_export":1076,"./_object-create":1097,dup:213}],1134:[function(e,t,n){arguments[4][214][0].apply(n,arguments)},{"./_object-keys":1106,"./_object-sap":1108,"./_to-object":1122,dup:214}],1135:[function(e,t,n){arguments[4][215][0].apply(n,arguments)},{"./_export":1076,"./_set-proto":1112,dup:215}],1136:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],1137:[function(e,t,n){arguments[4][217][0].apply(n,arguments)},{"./_iter-define":1090,"./_string-at":1117,dup:217}],1138:[function(e,t,n){arguments[4][218][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_enum-keys":1075,"./_export":1076,"./_fails":1077,"./_global":1079,"./_has":1080,"./_hide":1081,"./_is-array":1086,"./_keyof":1093,"./_library":1094,"./_meta":1095,"./_object-create":1097,"./_object-dp":1098,"./_object-gopd":1100,"./_object-gopn":1102,"./_object-gopn-ext":1101,"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,"./_property-desc":1109,"./_redefine":1111,"./_set-to-string-tag":1114,"./_shared":1116,"./_to-iobject":1120,"./_to-primitive":1123,"./_uid":1124,"./_wks":1127,"./_wks-define":1125,"./_wks-ext":1126,dup:218}],1139:[function(e,t,n){arguments[4][219][0].apply(n,arguments)},{"./_array-methods":1060,"./_collection":1068,"./_collection-weak":1067,"./_is-object":1087,"./_meta":1095,"./_object-assign":1096,"./_redefine":1111,dup:219}],1140:[function(e,t,n){arguments[4][221][0].apply(n,arguments)},{"./_collection-to-json":1066,"./_export":1076,dup:221}],1141:[function(e,t,n){arguments[4][222][0].apply(n,arguments)},{"./_wks-define":1125,dup:222}],1142:[function(e,t,n){arguments[4][223][0].apply(n,arguments)},{"./_wks-define":1125,dup:223}],1143:[function(e,t,n){arguments[4][224][0].apply(n,arguments)},{"./_global":1079,"./_hide":1081,"./_iterators":1092,"./_wks":1127,"./es6.array.iterator":1130,dup:224}],1144:[function(e,t,n){arguments[4][225][0].apply(n,arguments)},{"babel-runtime/core-js/symbol":1034,"babel-traverse":1284,"babel-types":1480,babylon:1145,dup:225,"lodash/assign":1259,"lodash/cloneDeep":1260,"lodash/has":1263}],1145:[function(e,t,n){arguments[4][274][0].apply(n,arguments)},{dup:274}],1146:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:282}],1147:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1214,"./_hashDelete":1215,"./_hashGet":1216,"./_hashHas":1217,"./_hashSet":1218,dup:283}],1148:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1228,"./_listCacheDelete":1229,"./_listCacheGet":1230,"./_listCacheHas":1231,"./_listCacheSet":1232,dup:284}],1149:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:285}],1150:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1233,"./_mapCacheDelete":1234,"./_mapCacheGet":1235,"./_mapCacheHas":1236,"./_mapCacheSet":1237,dup:286}],1151:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:287}],1152:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:288}],1153:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1148,"./_stackClear":1251,"./_stackDelete":1252,"./_stackGet":1253,"./_stackHas":1254,"./_stackSet":1255,dup:290}],1154:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1247,dup:291}],1155:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1247,dup:292}],1156:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:293}],1157:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1158:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1159:[function(e,t,n){arguments[4][296][0].apply(n,arguments)},{dup:296}],1160:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1161:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1162:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1183,"./_isIndex":1222,"./isArguments":1265,"./isArray":1266,"./isBuffer":1268,"./isTypedArray":1274,dup:301}],1163:[function(e,t,n){arguments[4][302][0].apply(n,arguments)},{dup:302}],1164:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1165:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1166:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1170,"./eq":1262,dup:308}],1167:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1262,dup:309}],1168:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1196,"./keys":1275,dup:310}],1169:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1196,"./keysIn":1276,dup:311}],1170:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1201,dup:312}],1171:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1153,"./_arrayEach":1160,"./_assignValue":1166,"./_baseAssign":1168,"./_baseAssignIn":1169,"./_cloneBuffer":1188,"./_copyArray":1195,"./_copySymbols":1197,"./_copySymbolsIn":1198,"./_getAllKeys":1203,"./_getAllKeysIn":1204,"./_getTag":1211,"./_initCloneArray":1219,"./_initCloneByTag":1220,"./_initCloneObject":1221,"./isArray":1266,"./isBuffer":1268,"./isObject":1271,"./keys":1275,dup:314}],1172:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1271,dup:315}],1173:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1164,"./isArray":1266,dup:322}],1174:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1154,"./_getRawTag":1208,"./_objectToString":1244,dup:323}],1175:[function(e,t,n){arguments[4][324][0].apply(n,arguments)},{dup:324}],1176:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObjectLike":1272,dup:327}],1177:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1226,"./_toSource":1258,"./isFunction":1269,"./isObject":1271,dup:332}],1178:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isLength":1270,"./isObjectLike":1272,dup:334}],1179:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1227,"./_nativeKeys":1241,dup:336}],1180:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1227,"./_nativeKeysIn":1242,"./isObject":1271,dup:337}],1181:[function(e,t,n){arguments[4][347][0].apply(n,arguments)},{"./_overRest":1246,"./_setToString":1249,"./identity":1264,dup:347}],1182:[function(e,t,n){arguments[4][348][0].apply(n,arguments)},{"./_defineProperty":1201,"./constant":1261,"./identity":1264,dup:348}],1183:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1184:[function(e,t,n){arguments[4][352][0].apply(n,arguments)},{"./_Symbol":1154,"./_arrayMap":1163,"./isArray":1266,"./isSymbol":1273,dup:352}],1185:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1186:[function(e,t,n){arguments[4][358][0].apply(n,arguments)},{"./_isKey":1224,"./_stringToPath":1256,"./isArray":1266,"./toString":1280,dup:358}],1187:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1155,dup:361}],1188:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1247,dup:362}],1189:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,dup:363}],1190:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1157,"./_arrayReduce":1165,"./_mapToArray":1238,dup:364}],1191:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1192:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1158,"./_arrayReduce":1165,"./_setToArray":1248,dup:366}],1193:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1154,dup:367}],1194:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,dup:368}],1195:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1196:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1166,"./_baseAssignValue":1170,dup:372}],1197:[function(e,t,n){
-arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1196,"./_getSymbols":1209,dup:373}],1198:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1196,"./_getSymbolsIn":1210,dup:374}],1199:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1247,dup:375}],1200:[function(e,t,n){arguments[4][376][0].apply(n,arguments)},{"./_baseRest":1181,"./_isIterateeCall":1223,dup:376}],1201:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1206,dup:382}],1202:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1203:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1173,"./_getSymbols":1209,"./keys":1275,dup:387}],1204:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1173,"./_getSymbolsIn":1210,"./keysIn":1276,dup:388}],1205:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1225,dup:389}],1206:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1177,"./_getValue":1212,dup:391}],1207:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1245,dup:392}],1208:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1154,dup:393}],1209:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1161,"./stubArray":1278,dup:394}],1210:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1164,"./_getPrototype":1207,"./_getSymbols":1209,"./stubArray":1278,dup:395}],1211:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1146,"./_Map":1149,"./_Promise":1151,"./_Set":1152,"./_WeakMap":1156,"./_baseGetTag":1174,"./_toSource":1258,dup:396}],1212:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1213:[function(e,t,n){arguments[4][398][0].apply(n,arguments)},{"./_castPath":1186,"./_isIndex":1222,"./_toKey":1257,"./isArguments":1265,"./isArray":1266,"./isLength":1270,dup:398}],1214:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:400}],1215:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1216:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:402}],1217:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:403}],1218:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:404}],1219:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1220:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,"./_cloneDataView":1189,"./_cloneMap":1190,"./_cloneRegExp":1191,"./_cloneSet":1192,"./_cloneSymbol":1193,"./_cloneTypedArray":1194,dup:406}],1221:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1172,"./_getPrototype":1207,"./_isPrototype":1227,dup:407}],1222:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1223:[function(e,t,n){arguments[4][410][0].apply(n,arguments)},{"./_isIndex":1222,"./eq":1262,"./isArrayLike":1267,"./isObject":1271,dup:410}],1224:[function(e,t,n){arguments[4][411][0].apply(n,arguments)},{"./isArray":1266,"./isSymbol":1273,dup:411}],1225:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1226:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1199,dup:413}],1227:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1228:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1229:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:417}],1230:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:418}],1231:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:419}],1232:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:420}],1233:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1147,"./_ListCache":1148,"./_Map":1149,dup:421}],1234:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1205,dup:422}],1235:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1205,dup:423}],1236:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1205,dup:424}],1237:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1205,dup:425}],1238:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1239:[function(e,t,n){arguments[4][428][0].apply(n,arguments)},{"./memoize":1277,dup:428}],1240:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1206,dup:429}],1241:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1245,dup:430}],1242:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1243:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1202,dup:432}],1244:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1245:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1246:[function(e,t,n){arguments[4][435][0].apply(n,arguments)},{"./_apply":1159,dup:435}],1247:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1202,dup:436}],1248:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1249:[function(e,t,n){arguments[4][440][0].apply(n,arguments)},{"./_baseSetToString":1182,"./_shortOut":1250,dup:440}],1250:[function(e,t,n){arguments[4][441][0].apply(n,arguments)},{dup:441}],1251:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1148,dup:442}],1252:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1253:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1254:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1255:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1148,"./_Map":1149,"./_MapCache":1150,dup:446}],1256:[function(e,t,n){arguments[4][449][0].apply(n,arguments)},{"./_memoizeCapped":1239,dup:449}],1257:[function(e,t,n){arguments[4][450][0].apply(n,arguments)},{"./isSymbol":1273,dup:450}],1258:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1259:[function(e,t,n){arguments[4][453][0].apply(n,arguments)},{"./_assignValue":1166,"./_copyObject":1196,"./_createAssigner":1200,"./_isPrototype":1227,"./isArrayLike":1267,"./keys":1275,dup:453}],1260:[function(e,t,n){arguments[4][456][0].apply(n,arguments)},{"./_baseClone":1171,dup:456}],1261:[function(e,t,n){arguments[4][459][0].apply(n,arguments)},{dup:459}],1262:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1263:[function(e,t,n){arguments[4][470][0].apply(n,arguments)},{"./_baseHas":1175,"./_hasPath":1213,dup:470}],1264:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1265:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1176,"./isObjectLike":1272,dup:474}],1266:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1267:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1269,"./isLength":1270,dup:476}],1268:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1247,"./stubFalse":1279,dup:479}],1269:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObject":1271,dup:480}],1270:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1271:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1272:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1273:[function(e,t,n){arguments[4][489][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObjectLike":1272,dup:489}],1274:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1178,"./_baseUnary":1185,"./_nodeUtil":1243,dup:490}],1275:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1162,"./_baseKeys":1179,"./isArrayLike":1267,dup:491}],1276:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1162,"./_baseKeysIn":1180,"./isArrayLike":1267,dup:492}],1277:[function(e,t,n){arguments[4][494][0].apply(n,arguments)},{"./_MapCache":1150,dup:494}],1278:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1279:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1280:[function(e,t,n){arguments[4][507][0].apply(n,arguments)},{"./_baseToString":1184,dup:507}],1281:[function(e,t,n){arguments[4][226][0].apply(n,arguments)},{"babel-runtime/core-js/weak-map":1037,dup:226}],1282:[function(e,t,n){arguments[4][227][0].apply(n,arguments)},{"./path":1291,_process:13,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:227}],1283:[function(e,t,n){arguments[4][228][0].apply(n,arguments)},{"babel-runtime/helpers/classCallCheck":1038,dup:228}],1284:[function(e,t,n){arguments[4][229][0].apply(n,arguments)},{"./cache":1281,"./context":1282,"./hub":1283,"./path":1291,"./scope":1303,"./visitors":1305,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:229,"lodash/includes":1447}],1285:[function(e,t,n){arguments[4][230][0].apply(n,arguments)},{"./index":1291,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:230}],1286:[function(e,t,n){arguments[4][231][0].apply(n,arguments)},{dup:231}],1287:[function(e,t,n){arguments[4][232][0].apply(n,arguments)},{"../index":1284,"babel-runtime/core-js/get-iterator":1026,dup:232}],1288:[function(e,t,n){arguments[4][233][0].apply(n,arguments)},{"babel-types":1480,dup:233}],1289:[function(e,t,n){arguments[4][234][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/map":1028,"babel-runtime/helpers/typeof":1041,dup:234}],1290:[function(e,t,n){arguments[4][235][0].apply(n,arguments)},{"./index":1291,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/create":1030,"babel-types":1480,dup:235}],1291:[function(e,t,n){arguments[4][236][0].apply(n,arguments)},{"../cache":1281,"../index":1284,"../scope":1303,"./ancestry":1285,"./comments":1286,"./context":1287,"./conversion":1288,"./evaluation":1289,"./family":1290,"./inference":1292,"./introspection":1295,"./lib/virtual-types":1298,"./modification":1299,"./removal":1300,"./replacement":1301,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,debug:1322,dup:236,invariant:1326,"lodash/assign":1440}],1292:[function(e,t,n){arguments[4][237][0].apply(n,arguments)},{"./inferers":1294,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:237}],1293:[function(e,t,n){arguments[4][238][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:238}],1294:[function(e,t,n){arguments[4][239][0].apply(n,arguments)},{"./inferer-reference":1293,"babel-types":1480,dup:239}],1295:[function(e,t,n){arguments[4][240][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:240,"lodash/includes":1447}],1296:[function(e,t,n){arguments[4][241][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:241}],1297:[function(e,t,n){arguments[4][242][0].apply(n,arguments)},{dup:242}],1298:[function(e,t,n){arguments[4][243][0].apply(n,arguments)},{"babel-types":1480,dup:243}],1299:[function(e,t,n){arguments[4][244][0].apply(n,arguments)},{"../cache":1281,"./index":1291,"./lib/hoister":1296,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:244}],1300:[function(e,t,n){arguments[4][245][0].apply(n,arguments)},{"./lib/removal-hooks":1297,"babel-runtime/core-js/get-iterator":1026,dup:245}],1301:[function(e,t,n){arguments[4][246][0].apply(n,arguments)},{"../index":1284,"./index":1291,"babel-code-frame":1306,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,babylon:1320,dup:246}],1302:[function(e,t,n){arguments[4][247][0].apply(n,arguments)},{"babel-runtime/helpers/classCallCheck":1038,dup:247}],1303:[function(e,t,n){arguments[4][248][0].apply(n,arguments)},{"../cache":1281,"../index":1284,"./binding":1302,"./lib/renamer":1304,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/map":1028,"babel-runtime/core-js/object/create":1030,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:248,globals:1325,"lodash/defaults":1444,"lodash/includes":1447,"lodash/repeat":1461}],1304:[function(e,t,n){arguments[4][249][0].apply(n,arguments)},{"../binding":1302,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:249}],1305:[function(e,t,n){arguments[4][250][0].apply(n,arguments)},{"./path/lib/virtual-types":1298,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:250,"lodash/clone":1442}],1306:[function(e,t,n){arguments[4][60][0].apply(n,arguments)},{chalk:1307,dup:60,esutils:1318,"js-tokens":1319}],1307:[function(e,t,n){arguments[4][61][0].apply(n,arguments)},{_process:13,"ansi-styles":1308,dup:61,"escape-string-regexp":1309,"has-ansi":1310,"strip-ansi":1312,"supports-color":1314}],1308:[function(e,t,n){arguments[4][62][0].apply(n,arguments)},{dup:62}],1309:[function(e,t,n){arguments[4][63][0].apply(n,arguments)},{dup:63}],1310:[function(e,t,n){arguments[4][64][0].apply(n,arguments)},{"ansi-regex":1311,dup:64}],1311:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],1312:[function(e,t,n){arguments[4][66][0].apply(n,arguments)},{"ansi-regex":1313,dup:66}],1313:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],1314:[function(e,t,n){arguments[4][68][0].apply(n,arguments)},{_process:13,dup:68}],1315:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1316:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1317:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1316,dup:71}],1318:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1315,"./code":1316,"./keyword":1317,dup:72}],1319:[function(e,t,n){arguments[4][73][0].apply(n,arguments)},{dup:73}],1320:[function(e,t,n){arguments[4][274][0].apply(n,arguments)},{dup:274}],1321:[function(e,t,n){arguments[4][277][0].apply(n,arguments)},{dup:277}],1322:[function(e,t,n){arguments[4][278][0].apply(n,arguments)},{"./debug":1323,_process:13,dup:278}],1323:[function(e,t,n){arguments[4][279][0].apply(n,arguments)},{dup:279,ms:1321}],1324:[function(e,t,n){arguments[4][251][0].apply(n,arguments)},{dup:251}],1325:[function(e,t,n){arguments[4][252][0].apply(n,arguments)},{"./globals.json":1324,dup:252}],1326:[function(e,t,n){arguments[4][253][0].apply(n,arguments)},{dup:253}],1327:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:282}],1328:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1398,"./_hashDelete":1399,"./_hashGet":1400,"./_hashHas":1401,"./_hashSet":1402,dup:283}],1329:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1411,"./_listCacheDelete":1412,"./_listCacheGet":1413,"./_listCacheHas":1414,"./_listCacheSet":1415,dup:284}],1330:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:285}],1331:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1416,"./_mapCacheDelete":1417,"./_mapCacheGet":1418,"./_mapCacheHas":1419,"./_mapCacheSet":1420,dup:286}],1332:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:287}],1333:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:288}],1334:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1329,"./_stackClear":1433,"./_stackDelete":1434,"./_stackGet":1435,"./_stackHas":1436,"./_stackSet":1437,dup:290}],1335:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1429,dup:291}],1336:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1429,dup:292}],1337:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:293}],1338:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1339:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1340:[function(e,t,n){arguments[4][296][0].apply(n,arguments)},{dup:296}],1341:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1342:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1343:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1367,"./_isIndex":1406,"./isArguments":1448,"./isArray":1449,"./isBuffer":1451,"./isTypedArray":1458,dup:301}],1344:[function(e,t,n){arguments[4][302][0].apply(n,arguments)},{dup:302}],1345:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1346:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1347:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1351,"./eq":1445,dup:308}],1348:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1445,dup:309}],1349:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1380,"./keys":1459,dup:310}],1350:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1380,"./keysIn":1460,dup:311}],1351:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1386,dup:312}],1352:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1334,"./_arrayEach":1341,"./_assignValue":1347,"./_baseAssign":1349,"./_baseAssignIn":1350,"./_cloneBuffer":1372,"./_copyArray":1379,"./_copySymbols":1381,"./_copySymbolsIn":1382,"./_getAllKeys":1388,"./_getAllKeysIn":1389,"./_getTag":1396,"./_initCloneArray":1403,"./_initCloneByTag":1404,"./_initCloneObject":1405,"./isArray":1449,"./isBuffer":1451,"./isObject":1454,"./keys":1459,dup:314}],1353:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1454,dup:315}],1354:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1355:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1345,"./isArray":1449,dup:322}],1356:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1335,"./_getRawTag":1393,"./_objectToString":1426,dup:323}],1357:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1354,"./_baseIsNaN":1359,"./_strictIndexOf":1438,dup:326}],1358:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObjectLike":1455,dup:327}],1359:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1360:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1409,"./_toSource":1439,"./isFunction":1452,"./isObject":1454,dup:332}],1361:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isLength":1453,"./isObjectLike":1455,dup:334}],1362:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1410,"./_nativeKeys":1423,dup:336}],1363:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1410,"./_nativeKeysIn":1424,"./isObject":1454,dup:337}],1364:[function(e,t,n){arguments[4][346][0].apply(n,arguments)},{dup:346}],1365:[function(e,t,n){arguments[4][347][0].apply(n,arguments)},{"./_overRest":1428,"./_setToString":1431,"./identity":1446,dup:347}],1366:[function(e,t,n){arguments[4][348][0].apply(n,arguments)},{"./_defineProperty":1386,"./constant":1443,"./identity":1446,dup:348}],1367:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1368:[function(e,t,n){arguments[4][352][0].apply(n,arguments)},{"./_Symbol":1335,"./_arrayMap":1344,"./isArray":1449,"./isSymbol":1457,dup:352}],1369:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1370:[function(e,t,n){arguments[4][355][0].apply(n,arguments)},{"./_arrayMap":1344,dup:355}],1371:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1336,dup:361}],1372:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1429,dup:362}],1373:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,dup:363}],1374:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1338,"./_arrayReduce":1346,"./_mapToArray":1421,dup:364}],1375:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1376:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1339,"./_arrayReduce":1346,"./_setToArray":1430,dup:366}],1377:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1335,dup:367}],1378:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,dup:368}],1379:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1380:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1347,"./_baseAssignValue":1351,dup:372}],1381:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1380,"./_getSymbols":1394,dup:373}],1382:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1380,"./_getSymbolsIn":1395,dup:374}],1383:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1429,dup:375}],1384:[function(e,t,n){arguments[4][376][0].apply(n,arguments)},{"./_baseRest":1365,"./_isIterateeCall":1407,dup:376}],1385:[function(e,t,n){arguments[4][381][0].apply(n,arguments)},{"./eq":1445,dup:381}],1386:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1391,dup:382}],1387:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1388:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1355,"./_getSymbols":1394,"./keys":1459,dup:387}],1389:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1355,"./_getSymbolsIn":1395,"./keysIn":1460,dup:388}],1390:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1408,dup:389}],1391:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1360,"./_getValue":1397,dup:391}],1392:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1427,dup:392}],1393:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1335,dup:393}],1394:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1342,"./stubArray":1462,dup:394}],1395:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1345,"./_getPrototype":1392,"./_getSymbols":1394,"./stubArray":1462,dup:395}],1396:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1327,"./_Map":1330,"./_Promise":1332,"./_Set":1333,"./_WeakMap":1337,"./_baseGetTag":1356,"./_toSource":1439,dup:396}],1397:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1398:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:400}],1399:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1400:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:402}],1401:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:403}],1402:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:404}],1403:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1404:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,"./_cloneDataView":1373,"./_cloneMap":1374,"./_cloneRegExp":1375,"./_cloneSet":1376,"./_cloneSymbol":1377,"./_cloneTypedArray":1378,dup:406}],1405:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1353,"./_getPrototype":1392,"./_isPrototype":1410,dup:407}],1406:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1407:[function(e,t,n){arguments[4][410][0].apply(n,arguments)},{"./_isIndex":1406,"./eq":1445,"./isArrayLike":1450,"./isObject":1454,dup:410}],1408:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1409:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1383,dup:413}],1410:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1411:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1412:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:417}],1413:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:418}],1414:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:419}],1415:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:420}],1416:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1328,"./_ListCache":1329,"./_Map":1330,dup:421}],1417:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1390,dup:422}],1418:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1390,dup:423}],1419:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1390,dup:424}],1420:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1390,dup:425}],1421:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1422:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1391,dup:429}],1423:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1427,dup:430}],1424:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1425:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1387,dup:432}],1426:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1427:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1428:[function(e,t,n){arguments[4][435][0].apply(n,arguments)},{"./_apply":1340,dup:435}],1429:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1387,dup:436}],1430:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1431:[function(e,t,n){arguments[4][440][0].apply(n,arguments)},{"./_baseSetToString":1366,"./_shortOut":1432,dup:440}],1432:[function(e,t,n){arguments[4][441][0].apply(n,arguments)},{dup:441}],1433:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1329,dup:442}],1434:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1435:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1436:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1437:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1329,"./_Map":1330,"./_MapCache":1331,dup:446}],1438:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1439:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1440:[function(e,t,n){arguments[4][453][0].apply(n,arguments)},{"./_assignValue":1347,"./_copyObject":1380,"./_createAssigner":1384,"./_isPrototype":1410,"./isArrayLike":1450,"./keys":1459,dup:453}],1441:[function(e,t,n){arguments[4][454][0].apply(n,arguments)},{"./_copyObject":1380,"./_createAssigner":1384,"./keysIn":1460,dup:454}],1442:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1352,dup:455}],1443:[function(e,t,n){arguments[4][459][0].apply(n,arguments)},{dup:459}],1444:[function(e,t,n){arguments[4][460][0].apply(n,arguments)},{"./_apply":1340,"./_baseRest":1365,"./_customDefaultsAssignIn":1385,"./assignInWith":1441,dup:460}],1445:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1446:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1447:[function(e,t,n){arguments[4][473][0].apply(n,arguments)},{"./_baseIndexOf":1357,"./isArrayLike":1450,"./isString":1456,"./toInteger":1465,"./values":1468,dup:473}],1448:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1358,"./isObjectLike":1455,dup:474}],1449:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1450:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1452,"./isLength":1453,dup:476}],1451:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1429,"./stubFalse":1463,dup:479}],1452:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObject":1454,dup:480}],1453:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1454:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1455:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1456:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isArray":1449,"./isObjectLike":1455,dup:488}],1457:[function(e,t,n){arguments[4][489][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObjectLike":1455,dup:489}],1458:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1361,"./_baseUnary":1369,"./_nodeUtil":1425,dup:490}],1459:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1343,"./_baseKeys":1362,"./isArrayLike":1450,dup:491}],1460:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1343,"./_baseKeysIn":1363,"./isArrayLike":1450,dup:492}],1461:[function(e,t,n){arguments[4][498][0].apply(n,arguments)},{"./_baseRepeat":1364,"./_isIterateeCall":1407,"./toInteger":1465,"./toString":1467,dup:498}],1462:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1463:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1464:[function(e,t,n){arguments[4][503][0].apply(n,arguments)},{"./toNumber":1466,dup:503}],1465:[function(e,t,n){arguments[4][504][0].apply(n,arguments)},{"./toFinite":1464,dup:504}],1466:[function(e,t,n){arguments[4][505][0].apply(n,arguments)},{"./isObject":1454,"./isSymbol":1457,dup:505}],1467:[function(e,t,n){arguments[4][507][0].apply(n,arguments)},{"./_baseToString":1368,dup:507}],1468:[function(e,t,n){arguments[4][510][0].apply(n,arguments)},{"./_baseValues":1370,"./keys":1459,dup:510}],1469:[function(e,t,n){arguments[4][254][0].apply(n,arguments)},{"babel-runtime/core-js/symbol/for":1035,dup:254}],1470:[function(e,t,n){arguments[4][255][0].apply(n,arguments)},{"./index":1480,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/json/stringify":1027,"babel-runtime/core-js/number/max-safe-integer":1029,dup:255,"lodash/isNumber":1615,"lodash/isPlainObject":1618,"lodash/isRegExp":1619,"lodash/isString":1620}],1471:[function(e,t,n){arguments[4][256][0].apply(n,arguments)},{"../constants":1469,"../index":1480,"./index":1475,dup:256}],1472:[function(e,t,n){arguments[4][257][0].apply(n,arguments)},{"./index":1475,dup:257}],1473:[function(e,t,n){arguments[4][258][0].apply(n,arguments)},{"./index":1475,dup:258}],1474:[function(e,t,n){arguments[4][259][0].apply(n,arguments)},{"./index":1475,dup:259}],1475:[function(e,t,n){arguments[4][260][0].apply(n,arguments)},{"../index":1480,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/json/stringify":1027,"babel-runtime/helpers/typeof":1041,dup:260}],1476:[function(e,t,n){arguments[4][261][0].apply(n,arguments)},{"./core":1471,"./es2015":1472,"./experimental":1473,"./flow":1474,"./index":1475,"./jsx":1477,"./misc":1478,dup:261}],1477:[function(e,t,n){arguments[4][262][0].apply(n,arguments)},{"./index":1475,dup:262}],1478:[function(e,t,n){arguments[4][263][0].apply(n,arguments)},{"./index":1475,dup:263}],1479:[function(e,t,n){arguments[4][264][0].apply(n,arguments)},{"./index":1480,dup:264}],1480:[function(e,t,n){arguments[4][265][0].apply(n,arguments)},{"./constants":1469,"./converters":1470,"./definitions":1475,"./definitions/init":1476,"./flow":1479,"./react":1481,"./retrievers":1482,"./validators":1483,"babel-runtime/core-js/get-iterator":1026,
-"babel-runtime/core-js/json/stringify":1027,"babel-runtime/core-js/object/get-own-property-symbols":1031,"babel-runtime/core-js/object/keys":1032,dup:265,"lodash/clone":1603,"lodash/compact":1604,"lodash/each":1605,"lodash/uniq":1627,"to-fast-properties":1628}],1481:[function(e,t,n){arguments[4][266][0].apply(n,arguments)},{"./index":1480,dup:266}],1482:[function(e,t,n){arguments[4][267][0].apply(n,arguments)},{"./index":1480,"babel-runtime/core-js/object/create":1030,dup:267}],1483:[function(e,t,n){arguments[4][268][0].apply(n,arguments)},{"./constants":1469,"./index":1480,"./retrievers":1482,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/typeof":1041,dup:268,esutils:1487}],1484:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1485:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1486:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1485,dup:71}],1487:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1484,"./code":1485,"./keyword":1486,dup:72}],1488:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:282}],1489:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1563,"./_hashDelete":1564,"./_hashGet":1565,"./_hashHas":1566,"./_hashSet":1567,dup:283}],1490:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1575,"./_listCacheDelete":1576,"./_listCacheGet":1577,"./_listCacheHas":1578,"./_listCacheSet":1579,dup:284}],1491:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:285}],1492:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1580,"./_mapCacheDelete":1581,"./_mapCacheGet":1582,"./_mapCacheHas":1583,"./_mapCacheSet":1584,dup:286}],1493:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:287}],1494:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:288}],1495:[function(e,t,n){arguments[4][289][0].apply(n,arguments)},{"./_MapCache":1492,"./_setCacheAdd":1593,"./_setCacheHas":1594,dup:289}],1496:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1490,"./_stackClear":1596,"./_stackDelete":1597,"./_stackGet":1598,"./_stackHas":1599,"./_stackSet":1600,dup:290}],1497:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1592,dup:291}],1498:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1592,dup:292}],1499:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:293}],1500:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1501:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1502:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1503:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1504:[function(e,t,n){arguments[4][299][0].apply(n,arguments)},{"./_baseIndexOf":1522,dup:299}],1505:[function(e,t,n){arguments[4][300][0].apply(n,arguments)},{dup:300}],1506:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1530,"./_isIndex":1571,"./isArguments":1609,"./isArray":1610,"./isBuffer":1612,"./isTypedArray":1621,dup:301}],1507:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1508:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1509:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1513,"./eq":1606,dup:308}],1510:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1606,dup:309}],1511:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1544,"./keys":1622,dup:310}],1512:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1544,"./keysIn":1623,dup:311}],1513:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1551,dup:312}],1514:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1496,"./_arrayEach":1502,"./_assignValue":1509,"./_baseAssign":1511,"./_baseAssignIn":1512,"./_cloneBuffer":1536,"./_copyArray":1543,"./_copySymbols":1545,"./_copySymbolsIn":1546,"./_getAllKeys":1553,"./_getAllKeysIn":1554,"./_getTag":1561,"./_initCloneArray":1568,"./_initCloneByTag":1569,"./_initCloneObject":1570,"./isArray":1610,"./isBuffer":1612,"./isObject":1616,"./keys":1622,dup:314}],1515:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1616,dup:315}],1516:[function(e,t,n){arguments[4][316][0].apply(n,arguments)},{"./_baseForOwn":1519,"./_createBaseEach":1548,dup:316}],1517:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1518:[function(e,t,n){arguments[4][319][0].apply(n,arguments)},{"./_createBaseFor":1549,dup:319}],1519:[function(e,t,n){arguments[4][320][0].apply(n,arguments)},{"./_baseFor":1518,"./keys":1622,dup:320}],1520:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1507,"./isArray":1610,dup:322}],1521:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1497,"./_getRawTag":1558,"./_objectToString":1590,dup:323}],1522:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1517,"./_baseIsNaN":1524,"./_strictIndexOf":1601,dup:326}],1523:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:327}],1524:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1525:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1573,"./_toSource":1602,"./isFunction":1613,"./isObject":1616,dup:332}],1526:[function(e,t,n){arguments[4][333][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:333}],1527:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isLength":1614,"./isObjectLike":1617,dup:334}],1528:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1574,"./_nativeKeys":1587,dup:336}],1529:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1574,"./_nativeKeysIn":1588,"./isObject":1616,dup:337}],1530:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1531:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1532:[function(e,t,n){arguments[4][354][0].apply(n,arguments)},{"./_SetCache":1495,"./_arrayIncludes":1504,"./_arrayIncludesWith":1505,"./_cacheHas":1533,"./_createSet":1550,"./_setToArray":1595,dup:354}],1533:[function(e,t,n){arguments[4][356][0].apply(n,arguments)},{dup:356}],1534:[function(e,t,n){arguments[4][357][0].apply(n,arguments)},{"./identity":1608,dup:357}],1535:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1498,dup:361}],1536:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1592,dup:362}],1537:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,dup:363}],1538:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1500,"./_arrayReduce":1508,"./_mapToArray":1585,dup:364}],1539:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1540:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1501,"./_arrayReduce":1508,"./_setToArray":1595,dup:366}],1541:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1497,dup:367}],1542:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,dup:368}],1543:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1544:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1509,"./_baseAssignValue":1513,dup:372}],1545:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1544,"./_getSymbols":1559,dup:373}],1546:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1544,"./_getSymbolsIn":1560,dup:374}],1547:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1592,dup:375}],1548:[function(e,t,n){arguments[4][377][0].apply(n,arguments)},{"./isArrayLike":1611,dup:377}],1549:[function(e,t,n){arguments[4][378][0].apply(n,arguments)},{dup:378}],1550:[function(e,t,n){arguments[4][380][0].apply(n,arguments)},{"./_Set":1494,"./_setToArray":1595,"./noop":1624,dup:380}],1551:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1556,dup:382}],1552:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1553:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1520,"./_getSymbols":1559,"./keys":1622,dup:387}],1554:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1520,"./_getSymbolsIn":1560,"./keysIn":1623,dup:388}],1555:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1572,dup:389}],1556:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1525,"./_getValue":1562,dup:391}],1557:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1591,dup:392}],1558:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1497,dup:393}],1559:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1503,"./stubArray":1625,dup:394}],1560:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1507,"./_getPrototype":1557,"./_getSymbols":1559,"./stubArray":1625,dup:395}],1561:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1488,"./_Map":1491,"./_Promise":1493,"./_Set":1494,"./_WeakMap":1499,"./_baseGetTag":1521,"./_toSource":1602,dup:396}],1562:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1563:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:400}],1564:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1565:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:402}],1566:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:403}],1567:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:404}],1568:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1569:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,"./_cloneDataView":1537,"./_cloneMap":1538,"./_cloneRegExp":1539,"./_cloneSet":1540,"./_cloneSymbol":1541,"./_cloneTypedArray":1542,dup:406}],1570:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1515,"./_getPrototype":1557,"./_isPrototype":1574,dup:407}],1571:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1572:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1573:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1547,dup:413}],1574:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1575:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1576:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:417}],1577:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:418}],1578:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:419}],1579:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:420}],1580:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1489,"./_ListCache":1490,"./_Map":1491,dup:421}],1581:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1555,dup:422}],1582:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1555,dup:423}],1583:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1555,dup:424}],1584:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1555,dup:425}],1585:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1586:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1556,dup:429}],1587:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1591,dup:430}],1588:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1589:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1552,dup:432}],1590:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1591:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1592:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1552,dup:436}],1593:[function(e,t,n){arguments[4][437][0].apply(n,arguments)},{dup:437}],1594:[function(e,t,n){arguments[4][438][0].apply(n,arguments)},{dup:438}],1595:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1596:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1490,dup:442}],1597:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1598:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1599:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1600:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1490,"./_Map":1491,"./_MapCache":1492,dup:446}],1601:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1602:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1603:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1514,dup:455}],1604:[function(e,t,n){arguments[4][458][0].apply(n,arguments)},{dup:458}],1605:[function(e,t,n){arguments[4][461][0].apply(n,arguments)},{"./forEach":1607,dup:461}],1606:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1607:[function(e,t,n){arguments[4][468][0].apply(n,arguments)},{"./_arrayEach":1502,"./_baseEach":1516,"./_castFunction":1534,"./isArray":1610,dup:468}],1608:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1609:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1523,"./isObjectLike":1617,dup:474}],1610:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1611:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1613,"./isLength":1614,dup:476}],1612:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1592,"./stubFalse":1626,dup:479}],1613:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObject":1616,dup:480}],1614:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1615:[function(e,t,n){arguments[4][483][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:483}],1616:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1617:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1618:[function(e,t,n){arguments[4][486][0].apply(n,arguments)},{"./_baseGetTag":1521,"./_getPrototype":1557,"./isObjectLike":1617,dup:486}],1619:[function(e,t,n){arguments[4][487][0].apply(n,arguments)},{"./_baseIsRegExp":1526,"./_baseUnary":1531,"./_nodeUtil":1589,dup:487}],1620:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isArray":1610,"./isObjectLike":1617,dup:488}],1621:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1527,"./_baseUnary":1531,"./_nodeUtil":1589,dup:490}],1622:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1506,"./_baseKeys":1528,"./isArrayLike":1611,dup:491}],1623:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1506,"./_baseKeysIn":1529,"./isArrayLike":1611,dup:492}],1624:[function(e,t,n){arguments[4][496][0].apply(n,arguments)},{dup:496}],1625:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1626:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1627:[function(e,t,n){arguments[4][509][0].apply(n,arguments)},{"./_baseUniq":1532,dup:509}],1628:[function(e,t,n){arguments[4][273][0].apply(n,arguments)},{dup:273}],1629:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(e){function t(e){var t=e.node,n=e.scope,r=[],i=t.right;if(!s.isIdentifier(i)||!n.hasBinding(i.name)){var a=n.generateUidIdentifier("arr");r.push(s.variableDeclaration("var",[s.variableDeclarator(a,i)])),i=a}var u=n.generateUidIdentifier("i"),l=o({BODY:t.body,KEY:u,ARR:i});s.inherits(l,t),s.ensureBlock(l);var c=s.memberExpression(i,u,!0),p=t.left;return s.isVariableDeclaration(p)?(p.declarations[0].init=c,l.body.body.unshift(p)):l.body.body.unshift(s.expressionStatement(s.assignmentExpression("=",p,c))),e.parentPath.isLabeledStatement()&&(l=s.labeledStatement(e.parentPath.node.label,l)),r.push(l),r}function n(e,t){var n=e.node,r=e.scope,a=n.left,o=void 0,l=void 0;if(s.isIdentifier(a)||s.isPattern(a)||s.isMemberExpression(a))l=a;else{if(!s.isVariableDeclaration(a))throw t.buildCodeFrameError(a,i.get("unknownForHead",a.type));l=r.generateUidIdentifier("ref"),o=s.variableDeclaration(a.kind,[s.variableDeclarator(a.declarations[0].id,l)])}var c=r.generateUidIdentifier("iterator"),p=r.generateUidIdentifier("isArray"),f=u({LOOP_OBJECT:c,IS_ARRAY:p,OBJECT:n.right,INDEX:r.generateUidIdentifier("i"),ID:l});return o||f.body.body.shift(),{declar:o,node:f,loop:f}}function r(e,t){var n=e.node,r=e.scope,a=e.parent,o=n.left,u=void 0,c=r.generateUidIdentifier("step"),p=s.memberExpression(c,s.identifier("value"));if(s.isIdentifier(o)||s.isPattern(o)||s.isMemberExpression(o))u=s.expressionStatement(s.assignmentExpression("=",o,p));else{if(!s.isVariableDeclaration(o))throw t.buildCodeFrameError(o,i.get("unknownForHead",o.type));u=s.variableDeclaration(o.kind,[s.variableDeclarator(o.declarations[0].id,p)])}var f=r.generateUidIdentifier("iterator"),h=l({ITERATOR_HAD_ERROR_KEY:r.generateUidIdentifier("didIteratorError"),ITERATOR_COMPLETION:r.generateUidIdentifier("iteratorNormalCompletion"),ITERATOR_ERROR_KEY:r.generateUidIdentifier("iteratorError"),ITERATOR_KEY:f,STEP_KEY:c,OBJECT:n.right,BODY:null}),d=s.isLabeledStatement(a),y=h[3].block.body,m=y[0];return d&&(y[0]=s.labeledStatement(a.label,m)),{replaceParent:d,declar:u,loop:m,node:h}}var i=e.messages,a=e.template,s=e.types,o=a("\n    for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n  "),u=a("\n    for (var LOOP_OBJECT = OBJECT,\n             IS_ARRAY = Array.isArray(LOOP_OBJECT),\n             INDEX = 0,\n             LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n      var ID;\n      if (IS_ARRAY) {\n        if (INDEX >= LOOP_OBJECT.length) break;\n        ID = LOOP_OBJECT[INDEX++];\n      } else {\n        INDEX = LOOP_OBJECT.next();\n        if (INDEX.done) break;\n        ID = INDEX.value;\n      }\n    }\n  "),l=a("\n    var ITERATOR_COMPLETION = true;\n    var ITERATOR_HAD_ERROR_KEY = false;\n    var ITERATOR_ERROR_KEY = undefined;\n    try {\n      for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n      }\n    } catch (err) {\n      ITERATOR_HAD_ERROR_KEY = true;\n      ITERATOR_ERROR_KEY = err;\n    } finally {\n      try {\n        if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n          ITERATOR_KEY.return();\n        }\n      } finally {\n        if (ITERATOR_HAD_ERROR_KEY) {\n          throw ITERATOR_ERROR_KEY;\n        }\n      }\n    }\n  ");return{visitor:{ForOfStatement:function(e,i){if(e.get("right").isArrayExpression())return e.parentPath.isLabeledStatement()?e.parentPath.replaceWithMultiple(t(e)):e.replaceWithMultiple(t(e));var a=r;i.opts.loose&&(a=n);var o=e.node,u=a(e,i),l=u.declar,c=u.loop,p=c.body;e.ensureBlock(),l&&p.body.push(l),p.body=p.body.concat(o.body.body),s.inherits(c,o),s.inherits(c.body,o.body),u.replaceParent?(e.parentPath.replaceWithMultiple(u.node),e.remove()):e.replaceWithMultiple(u.node)}}}},t.exports=n.default},{}],1630:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){d.default.ok(this instanceof a),m.assertIdentifier(e),this.nextTempId=0,this.contextId=e,this.listing=[],this.marked=[!0],this.finalLoc=s(),this.tryEntries=[],this.leapManager=new g.LeapManager(this)}function s(){return m.numericLiteral(-1)}function o(e){return new Error("all declarations should have been transformed into assignments before the Exploder began its work: "+(0,f.default)(e))}function u(e){var t=e.type;return"normal"===t?!A.call(e,"target"):"break"===t||"continue"===t?!A.call(e,"value")&&m.isLiteral(e.target):("return"===t||"throw"===t)&&(A.call(e,"value")&&!A.call(e,"target"))}var l=e("babel-runtime/helpers/typeof"),c=i(l),p=e("babel-runtime/core-js/json/stringify"),f=i(p),h=e("assert"),d=i(h),y=e("babel-types"),m=r(y),b=e("./leap"),g=r(b),v=e("./meta"),x=r(v),_=e("./util"),E=r(_),A=Object.prototype.hasOwnProperty,D=a.prototype;n.Emitter=a,D.mark=function(e){m.assertLiteral(e);var t=this.listing.length;return e.value===-1?e.value=t:d.default.strictEqual(e.value,t),this.marked[t]=!0,e},D.emit=function(e){m.isExpression(e)&&(e=m.expressionStatement(e)),m.assertStatement(e),this.listing.push(e)},D.emitAssign=function(e,t){return this.emit(this.assign(e,t)),e},D.assign=function(e,t){return m.expressionStatement(m.assignmentExpression("=",e,t))},D.contextProperty=function(e,t){return m.memberExpression(this.contextId,t?m.stringLiteral(e):m.identifier(e),!!t)},D.stop=function(e){e&&this.setReturnValue(e),this.jump(this.finalLoc)},D.setReturnValue=function(e){m.assertExpression(e.value),this.emitAssign(this.contextProperty("rval"),this.explodeExpression(e))},D.clearPendingException=function(e,t){m.assertLiteral(e);var n=m.callExpression(this.contextProperty("catch",!0),[e]);t?this.emitAssign(t,n):this.emit(n)},D.jump=function(e){this.emitAssign(this.contextProperty("next"),e),this.emit(m.breakStatement())},D.jumpIf=function(e,t){m.assertExpression(e),m.assertLiteral(t),this.emit(m.ifStatement(e,m.blockStatement([this.assign(this.contextProperty("next"),t),m.breakStatement()])))},D.jumpIfNot=function(e,t){m.assertExpression(e),m.assertLiteral(t);var n=void 0;n=m.isUnaryExpression(e)&&"!"===e.operator?e.argument:m.unaryExpression("!",e),this.emit(m.ifStatement(n,m.blockStatement([this.assign(this.contextProperty("next"),t),m.breakStatement()])))},D.makeTempVar=function(){return this.contextProperty("t"+this.nextTempId++)},D.getContextFunction=function(e){return m.functionExpression(e||null,[this.contextId],m.blockStatement([this.getDispatchLoop()]),!1,!1)},D.getDispatchLoop=function(){var e=this,t=[],n=void 0,r=!1;return e.listing.forEach(function(i,a){e.marked.hasOwnProperty(a)&&(t.push(m.switchCase(m.numericLiteral(a),n=[])),r=!1),r||(n.push(i),m.isCompletionStatement(i)&&(r=!0))}),this.finalLoc.value=this.listing.length,t.push(m.switchCase(this.finalLoc,[]),m.switchCase(m.stringLiteral("end"),[m.returnStatement(m.callExpression(this.contextProperty("stop"),[]))])),m.whileStatement(m.numericLiteral(1),m.switchStatement(m.assignmentExpression("=",this.contextProperty("prev"),this.contextProperty("next")),t))},D.getTryLocsList=function(){if(0===this.tryEntries.length)return null;var e=0;return m.arrayExpression(this.tryEntries.map(function(t){var n=t.firstLoc.value;d.default.ok(n>=e,"try entries out of order"),e=n;var r=t.catchEntry,i=t.finallyEntry,a=[t.firstLoc,r?r.firstLoc:null];return i&&(a[2]=i.firstLoc,a[3]=i.afterLoc),m.arrayExpression(a)}))},D.explode=function(e,t){var n=e.node,r=this;if(m.assertNode(n),m.isDeclaration(n))throw o(n);if(m.isStatement(n))return r.explodeStatement(e);if(m.isExpression(n))return r.explodeExpression(e,t);switch(n.type){case"Program":return e.get("body").map(r.explodeStatement,r);case"VariableDeclarator":throw o(n);case"Property":case"SwitchCase":case"CatchClause":throw new Error(n.type+" nodes should be handled by their parents");default:throw new Error("unknown Node of type "+(0,f.default)(n.type))}},D.explodeStatement=function(e,t){var n=e.node,r=this,i=void 0,a=void 0,o=void 0;if(m.assertStatement(n),t?m.assertIdentifier(t):t=null,m.isBlockStatement(n))return void e.get("body").forEach(function(e){r.explodeStatement(e)});if(!x.containsLeap(n))return void r.emit(n);var u=function(){switch(n.type){case"ExpressionStatement":r.explodeExpression(e.get("expression"),!0);break;case"LabeledStatement":a=s(),r.leapManager.withEntry(new g.LabeledEntry(a,n.label),function(){r.explodeStatement(e.get("body"),n.label)}),r.mark(a);break;case"WhileStatement":i=s(),a=s(),r.mark(i),r.jumpIfNot(r.explodeExpression(e.get("test")),a),r.leapManager.withEntry(new g.LoopEntry(a,i,t),function(){r.explodeStatement(e.get("body"))}),r.jump(i),r.mark(a);break;case"DoWhileStatement":var u=s(),l=s();a=s(),r.mark(u),r.leapManager.withEntry(new g.LoopEntry(a,l,t),function(){r.explode(e.get("body"))}),r.mark(l),r.jumpIf(r.explodeExpression(e.get("test")),u),r.mark(a);break;case"ForStatement":o=s();var c=s();a=s(),n.init&&r.explode(e.get("init"),!0),r.mark(o),n.test&&r.jumpIfNot(r.explodeExpression(e.get("test")),a),r.leapManager.withEntry(new g.LoopEntry(a,c,t),function(){r.explodeStatement(e.get("body"))}),r.mark(c),n.update&&r.explode(e.get("update"),!0),r.jump(o),r.mark(a);break;case"TypeCastExpression":return{v:r.explodeExpression(e.get("expression"))};case"ForInStatement":o=s(),a=s();var p=r.makeTempVar();r.emitAssign(p,m.callExpression(E.runtimeProperty("keys"),[r.explodeExpression(e.get("right"))])),r.mark(o);var h=r.makeTempVar();r.jumpIf(m.memberExpression(m.assignmentExpression("=",h,m.callExpression(p,[])),m.identifier("done"),!1),a),r.emitAssign(n.left,m.memberExpression(h,m.identifier("value"),!1)),r.leapManager.withEntry(new g.LoopEntry(a,o,t),function(){r.explodeStatement(e.get("body"))}),r.jump(o),r.mark(a);break;case"BreakStatement":r.emitAbruptCompletion({type:"break",target:r.leapManager.getBreakLoc(n.label)});break;case"ContinueStatement":r.emitAbruptCompletion({type:"continue",target:r.leapManager.getContinueLoc(n.label)});break;case"SwitchStatement":var y=r.emitAssign(r.makeTempVar(),r.explodeExpression(e.get("discriminant")));a=s();for(var b=s(),v=b,x=[],_=n.cases||[],A=_.length-1;A>=0;--A){var D=_[A];m.assertSwitchCase(D),D.test?v=m.conditionalExpression(m.binaryExpression("===",y,D.test),x[A]=s(),v):x[A]=b}var S=e.get("discriminant");S.replaceWith(v),r.jump(r.explodeExpression(S)),r.leapManager.withEntry(new g.SwitchEntry(a),function(){e.get("cases").forEach(function(e){var t=e.key;r.mark(x[t]),e.get("consequent").forEach(function(e){r.explodeStatement(e)})})}),r.mark(a),b.value===-1&&(r.mark(b),d.default.strictEqual(a.value,b.value));break;case"IfStatement":var w=n.alternate&&s();a=s(),r.jumpIfNot(r.explodeExpression(e.get("test")),w||a),r.explodeStatement(e.get("consequent")),w&&(r.jump(a),r.mark(w),r.explodeStatement(e.get("alternate"))),r.mark(a);break;case"ReturnStatement":r.emitAbruptCompletion({type:"return",value:r.explodeExpression(e.get("argument"))});break;case"WithStatement":throw new Error("WithStatement not supported in generator functions.");case"TryStatement":a=s();var k=n.handler,F=k&&s(),T=F&&new g.CatchEntry(F,k.param),P=n.finalizer&&s(),j=P&&new g.FinallyEntry(P,a),B=new g.TryEntry(r.getUnmarkedCurrentLoc(),T,j);r.tryEntries.push(B),r.updateContextPrevLoc(B.firstLoc),r.leapManager.withEntry(B,function(){r.explodeStatement(e.get("block")),F&&!function(){P?r.jump(P):r.jump(a),r.updateContextPrevLoc(r.mark(F));var t=e.get("handler.body"),n=r.makeTempVar();r.clearPendingException(B.firstLoc,n),t.traverse(C,{safeParam:n,catchParamName:k.param.name}),r.leapManager.withEntry(T,function(){r.explodeStatement(t)})}(),P&&(r.updateContextPrevLoc(r.mark(P)),r.leapManager.withEntry(j,function(){r.explodeStatement(e.get("finalizer"))}),r.emit(m.returnStatement(m.callExpression(r.contextProperty("finish"),[j.firstLoc]))))}),r.mark(a);break;case"ThrowStatement":r.emit(m.throwStatement(r.explodeExpression(e.get("argument"))));break;default:throw new Error("unknown Statement of type "+(0,f.default)(n.type))}}();return"object"===("undefined"==typeof u?"undefined":(0,c.default)(u))?u.v:void 0};var C={Identifier:function(e,t){e.node.name===t.catchParamName&&E.isReference(e)&&e.replaceWith(t.safeParam)},Scope:function(e,t){e.scope.hasOwnBinding(t.catchParamName)&&e.skip()}};D.emitAbruptCompletion=function(e){u(e)||d.default.ok(!1,"invalid completion record: "+(0,f.default)(e)),d.default.notStrictEqual(e.type,"normal","normal completions are not abrupt");var t=[m.stringLiteral(e.type)];"break"===e.type||"continue"===e.type?(m.assertLiteral(e.target),t[1]=e.target):"return"!==e.type&&"throw"!==e.type||e.value&&(m.assertExpression(e.value),t[1]=e.value),this.emit(m.returnStatement(m.callExpression(this.contextProperty("abrupt"),t)))},D.getUnmarkedCurrentLoc=function(){return m.numericLiteral(this.listing.length)},D.updateContextPrevLoc=function(e){e?(m.assertLiteral(e),e.value===-1?e.value=this.listing.length:d.default.strictEqual(e.value,this.listing.length)):e=this.getUnmarkedCurrentLoc(),this.emitAssign(this.contextProperty("prev"),e)},D.explodeExpression=function(e,t){function n(e){return m.assertExpression(e),t?void a.emit(e):e}function r(e,t,n){d.default.ok(!n||!e,"Ignoring the result of a child expression but forcing it to be assigned to a temporary variable?");var r=a.explodeExpression(t,n);return n||(e||l&&!m.isLiteral(r))&&(r=a.emitAssign(e||a.makeTempVar(),r)),r}var i=e.node;if(!i)return i;m.assertExpression(i);var a=this,o=void 0,u=void 0;if(!x.containsLeap(i))return n(i);var l=x.containsLeap.onlyChildren(i),p=function(){switch(i.type){case"MemberExpression":return{v:n(m.memberExpression(a.explodeExpression(e.get("object")),i.computed?r(null,e.get("property")):i.property,i.computed))};case"CallExpression":var l=e.get("callee"),c=e.get("arguments"),p=void 0,h=[],y=!1;if(c.forEach(function(e){y=y||x.containsLeap(e.node)}),m.isMemberExpression(l.node))if(y){var b=r(a.makeTempVar(),l.get("object")),g=l.node.computed?r(null,l.get("property")):l.node.property;h.unshift(b),p=m.memberExpression(m.memberExpression(b,g,l.node.computed),m.identifier("call"),!1)}else p=a.explodeExpression(l);else p=r(null,l),m.isMemberExpression(p)&&(p=m.sequenceExpression([m.numericLiteral(0),p]));return c.forEach(function(e){h.push(r(null,e))}),{v:n(m.callExpression(p,h))};case"NewExpression":return{v:n(m.newExpression(r(null,e.get("callee")),e.get("arguments").map(function(e){return r(null,e)})))};case"ObjectExpression":return{v:n(m.objectExpression(e.get("properties").map(function(e){return e.isObjectProperty()?m.objectProperty(e.node.key,r(null,e.get("value")),e.node.computed):e.node})))};case"ArrayExpression":return{v:n(m.arrayExpression(e.get("elements").map(function(e){return r(null,e)})))};case"SequenceExpression":var v=i.expressions.length-1;return e.get("expressions").forEach(function(e){e.key===v?o=a.explodeExpression(e,t):a.explodeExpression(e,!0)}),{v:o};case"LogicalExpression":u=s(),t||(o=a.makeTempVar());var _=r(o,e.get("left"));return"&&"===i.operator?a.jumpIfNot(_,u):(d.default.strictEqual(i.operator,"||"),a.jumpIf(_,u)),r(o,e.get("right"),t),a.mark(u),{v:o};case"ConditionalExpression":var E=s();u=s();var A=a.explodeExpression(e.get("test"));return a.jumpIfNot(A,E),t||(o=a.makeTempVar()),r(o,e.get("consequent"),t),a.jump(u),a.mark(E),r(o,e.get("alternate"),t),a.mark(u),{v:o};case"UnaryExpression":return{v:n(m.unaryExpression(i.operator,a.explodeExpression(e.get("argument")),!!i.prefix))};case"BinaryExpression":return{v:n(m.binaryExpression(i.operator,r(null,e.get("left")),r(null,e.get("right"))))};case"AssignmentExpression":return{v:n(m.assignmentExpression(i.operator,a.explodeExpression(e.get("left")),a.explodeExpression(e.get("right"))))};case"UpdateExpression":return{v:n(m.updateExpression(i.operator,a.explodeExpression(e.get("argument")),i.prefix))};case"YieldExpression":
-u=s();var D=i.argument&&a.explodeExpression(e.get("argument"));if(D&&i.delegate){var C=a.makeTempVar();return a.emit(m.returnStatement(m.callExpression(a.contextProperty("delegateYield"),[D,m.stringLiteral(C.property.name),u]))),a.mark(u),{v:C}}return a.emitAssign(a.contextProperty("next"),u),a.emit(m.returnStatement(D||null)),a.mark(u),{v:a.contextProperty("sent")};default:throw new Error("unknown Expression of type "+(0,f.default)(i.type))}}();return"object"===("undefined"==typeof p?"undefined":(0,c.default)(p))?p.v:void 0}},{"./leap":1633,"./meta":1634,"./util":1635,assert:2,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/helpers/typeof":1646,"babel-types":1737}],1631:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}var a=e("babel-runtime/core-js/object/keys"),s=i(a),o=e("babel-types"),u=r(o),l=Object.prototype.hasOwnProperty;n.hoist=function(e){function t(e,t){u.assertVariableDeclaration(e);var r=[];return e.declarations.forEach(function(e){n[e.id.name]=u.identifier(e.id.name),e.init?r.push(u.assignmentExpression("=",e.id,e.init)):t&&r.push(e.id)}),0===r.length?null:1===r.length?r[0]:u.sequenceExpression(r)}u.assertFunction(e.node);var n={};e.get("body").traverse({VariableDeclaration:{exit:function(e){var n=t(e.node,!1);null===n?e.remove():e.replaceWith(u.expressionStatement(n)),e.skip()}},ForStatement:function(e){var n=e.node.init;u.isVariableDeclaration(n)&&e.get("init").replaceWith(t(n,!1))},ForXStatement:function(e){var n=e.get("left");n.isVariableDeclaration()&&n.replaceWith(t(n.node,!0))},FunctionDeclaration:function(e){var t=e.node;n[t.id.name]=t.id;var r=u.expressionStatement(u.assignmentExpression("=",t.id,u.functionExpression(t.id,t.params,t.body,t.generator,t.expression)));e.parentPath.isBlockStatement()?(e.parentPath.unshiftContainer("body",r),e.remove()):e.replaceWith(r),e.skip()},FunctionExpression:function(e){e.skip()}});var r={};e.get("params").forEach(function(e){var t=e.node;u.isIdentifier(t)&&(r[t.name]=t)});var i=[];return(0,s.default)(n).forEach(function(e){l.call(r,e)||i.push(u.variableDeclarator(n[e],null))}),0===i.length?null:u.variableDeclaration("var",i)}},{"babel-runtime/core-js/object/keys":1642,"babel-types":1737}],1632:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return e("./visit")}},{"./visit":1636}],1633:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){y.default.ok(this instanceof a)}function s(e){a.call(this),b.assertLiteral(e),this.returnLoc=e}function o(e,t,n){a.call(this),b.assertLiteral(e),b.assertLiteral(t),n?b.assertIdentifier(n):n=null,this.breakLoc=e,this.continueLoc=t,this.label=n}function u(e){a.call(this),b.assertLiteral(e),this.breakLoc=e}function l(e,t,n){a.call(this),b.assertLiteral(e),t?y.default.ok(t instanceof c):t=null,n?y.default.ok(n instanceof p):n=null,y.default.ok(t||n),this.firstLoc=e,this.catchEntry=t,this.finallyEntry=n}function c(e,t){a.call(this),b.assertLiteral(e),b.assertIdentifier(t),this.firstLoc=e,this.paramId=t}function p(e,t){a.call(this),b.assertLiteral(e),b.assertLiteral(t),this.firstLoc=e,this.afterLoc=t}function f(e,t){a.call(this),b.assertLiteral(e),b.assertIdentifier(t),this.breakLoc=e,this.label=t}function h(t){y.default.ok(this instanceof h);var n=e("./emit").Emitter;y.default.ok(t instanceof n),this.emitter=t,this.entryStack=[new s(t.finalLoc)]}var d=e("assert"),y=i(d),m=e("babel-types"),b=r(m),g=e("util");(0,g.inherits)(s,a),n.FunctionEntry=s,(0,g.inherits)(o,a),n.LoopEntry=o,(0,g.inherits)(u,a),n.SwitchEntry=u,(0,g.inherits)(l,a),n.TryEntry=l,(0,g.inherits)(c,a),n.CatchEntry=c,(0,g.inherits)(p,a),n.FinallyEntry=p,(0,g.inherits)(f,a),n.LabeledEntry=f;var v=h.prototype;n.LeapManager=h,v.withEntry=function(e,t){y.default.ok(e instanceof a),this.entryStack.push(e);try{t.call(this.emitter)}finally{var n=this.entryStack.pop();y.default.strictEqual(n,e)}},v._findLeapLocation=function(e,t){for(var n=this.entryStack.length-1;n>=0;--n){var r=this.entryStack[n],i=r[e];if(i)if(t){if(r.label&&r.label.name===t.name)return i}else if(!(r instanceof f))return i}return null},v.getBreakLoc=function(e){return this._findLeapLocation("breakLoc",e)},v.getContinueLoc=function(e){return this._findLeapLocation("continueLoc",e)}},{"./emit":1630,assert:2,"babel-types":1737,util:35}],1634:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){function n(e){function t(e){return n||(Array.isArray(e)?e.some(t):l.isNode(e)&&(o.default.strictEqual(n,!1),n=r(e))),n}l.assertNode(e);var n=!1,i=l.VISITOR_KEYS[e.type];if(i)for(var a=0;a0&&(s.node.body=l);var c=a(e);p.assertIdentifier(n.id);var d=p.identifier(n.id.name+"$"),m=(0,f.hoist)(e),b=o(e,i);b&&(m=m||p.variableDeclaration("var",[]),m.declarations.push(p.variableDeclarator(i,p.identifier("arguments"))));var x=new h.Emitter(r);x.explode(e.get("body")),m&&m.declarations.length>0&&u.push(m);var _=[x.getContextFunction(d),n.generator?c:p.nullLiteral(),p.thisExpression()],E=x.getTryLocsList();E&&_.push(E);var A=p.callExpression(y.runtimeProperty(n.async?"async":"wrap"),_);u.push(p.returnStatement(A)),n.body=p.blockStatement(u);var D=s.node.directives;D&&(n.body.directives=D);var C=n.generator;C&&(n.generator=!1),n.async&&(n.async=!1),C&&p.isExpression(n)&&e.replaceWith(p.callExpression(y.runtimeProperty("mark"),[n])),e.requeue()}}};var b={"FunctionExpression|FunctionDeclaration":function(e){e.skip()},Identifier:function(e,t){"arguments"===e.node.name&&y.isReference(e)&&(e.replaceWith(t.argsId),t.didRenameArguments=!0)}},g={MetaProperty:function(e){var t=e.node;"function"===t.meta.name&&"sent"===t.property.name&&e.replaceWith(p.memberExpression(this.context,p.identifier("_sent")))}},v={Function:function(e){e.skip()},AwaitExpression:function(e){var t=e.node.argument;e.replaceWith(p.yieldExpression(p.callExpression(y.runtimeProperty("awrap"),[t]),!1))}}},{"./emit":1630,"./hoist":1631,"./util":1635,assert:2,"babel-types":1737,private:1886}],1637:[function(e,t,n){arguments[4][100][0].apply(n,arguments)},{"core-js/library/fn/get-iterator":1647,dup:100}],1638:[function(e,t,n){arguments[4][101][0].apply(n,arguments)},{"core-js/library/fn/json/stringify":1648,dup:101}],1639:[function(e,t,n){arguments[4][103][0].apply(n,arguments)},{"core-js/library/fn/number/max-safe-integer":1649,dup:103}],1640:[function(e,t,n){arguments[4][105][0].apply(n,arguments)},{"core-js/library/fn/object/create":1650,dup:105}],1641:[function(e,t,n){arguments[4][106][0].apply(n,arguments)},{"core-js/library/fn/object/get-own-property-symbols":1651,dup:106}],1642:[function(e,t,n){arguments[4][107][0].apply(n,arguments)},{"core-js/library/fn/object/keys":1652,dup:107}],1643:[function(e,t,n){arguments[4][109][0].apply(n,arguments)},{"core-js/library/fn/symbol":1654,dup:109}],1644:[function(e,t,n){arguments[4][110][0].apply(n,arguments)},{"core-js/library/fn/symbol/for":1653,dup:110}],1645:[function(e,t,n){arguments[4][111][0].apply(n,arguments)},{"core-js/library/fn/symbol/iterator":1655,dup:111}],1646:[function(e,t,n){arguments[4][118][0].apply(n,arguments)},{"../core-js/symbol":1643,"../core-js/symbol/iterator":1645,dup:118}],1647:[function(e,t,n){arguments[4][119][0].apply(n,arguments)},{"../modules/core.get-iterator":1715,"../modules/es6.string.iterator":1721,"../modules/web.dom.iterable":1725,dup:119}],1648:[function(e,t,n){arguments[4][120][0].apply(n,arguments)},{"../../modules/_core":1662,dup:120}],1649:[function(e,t,n){arguments[4][122][0].apply(n,arguments)},{"../../modules/es6.number.max-safe-integer":1717,dup:122}],1650:[function(e,t,n){arguments[4][124][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.create":1718,dup:124}],1651:[function(e,t,n){arguments[4][125][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.symbol":1722,dup:125}],1652:[function(e,t,n){arguments[4][126][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.keys":1719,dup:126}],1653:[function(e,t,n){arguments[4][128][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.symbol":1722,dup:128}],1654:[function(e,t,n){arguments[4][129][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.to-string":1720,"../../modules/es6.symbol":1722,"../../modules/es7.symbol.async-iterator":1723,"../../modules/es7.symbol.observable":1724,dup:129}],1655:[function(e,t,n){arguments[4][130][0].apply(n,arguments)},{"../../modules/_wks-ext":1712,"../../modules/es6.string.iterator":1721,"../../modules/web.dom.iterable":1725,dup:130}],1656:[function(e,t,n){arguments[4][133][0].apply(n,arguments)},{dup:133}],1657:[function(e,t,n){arguments[4][134][0].apply(n,arguments)},{dup:134}],1658:[function(e,t,n){arguments[4][136][0].apply(n,arguments)},{"./_is-object":1678,dup:136}],1659:[function(e,t,n){arguments[4][138][0].apply(n,arguments)},{"./_to-index":1704,"./_to-iobject":1706,"./_to-length":1707,dup:138}],1660:[function(e,t,n){arguments[4][142][0].apply(n,arguments)},{"./_cof":1661,"./_wks":1713,dup:142}],1661:[function(e,t,n){arguments[4][143][0].apply(n,arguments)},{dup:143}],1662:[function(e,t,n){arguments[4][148][0].apply(n,arguments)},{dup:148}],1663:[function(e,t,n){arguments[4][149][0].apply(n,arguments)},{"./_a-function":1656,dup:149}],1664:[function(e,t,n){arguments[4][150][0].apply(n,arguments)},{dup:150}],1665:[function(e,t,n){arguments[4][151][0].apply(n,arguments)},{"./_fails":1670,dup:151}],1666:[function(e,t,n){arguments[4][152][0].apply(n,arguments)},{"./_global":1671,"./_is-object":1678,dup:152}],1667:[function(e,t,n){arguments[4][153][0].apply(n,arguments)},{dup:153}],1668:[function(e,t,n){arguments[4][154][0].apply(n,arguments)},{"./_object-gops":1692,"./_object-keys":1695,"./_object-pie":1696,dup:154}],1669:[function(e,t,n){arguments[4][155][0].apply(n,arguments)},{"./_core":1662,"./_ctx":1663,"./_global":1671,"./_hide":1673,dup:155}],1670:[function(e,t,n){arguments[4][156][0].apply(n,arguments)},{dup:156}],1671:[function(e,t,n){arguments[4][158][0].apply(n,arguments)},{dup:158}],1672:[function(e,t,n){arguments[4][159][0].apply(n,arguments)},{dup:159}],1673:[function(e,t,n){arguments[4][160][0].apply(n,arguments)},{"./_descriptors":1665,"./_object-dp":1687,"./_property-desc":1698,dup:160}],1674:[function(e,t,n){arguments[4][161][0].apply(n,arguments)},{"./_global":1671,dup:161}],1675:[function(e,t,n){arguments[4][162][0].apply(n,arguments)},{"./_descriptors":1665,"./_dom-create":1666,"./_fails":1670,dup:162}],1676:[function(e,t,n){arguments[4][163][0].apply(n,arguments)},{"./_cof":1661,dup:163}],1677:[function(e,t,n){arguments[4][165][0].apply(n,arguments)},{"./_cof":1661,dup:165}],1678:[function(e,t,n){arguments[4][166][0].apply(n,arguments)},{dup:166}],1679:[function(e,t,n){arguments[4][168][0].apply(n,arguments)},{"./_hide":1673,"./_object-create":1686,"./_property-desc":1698,"./_set-to-string-tag":1700,"./_wks":1713,dup:168}],1680:[function(e,t,n){arguments[4][169][0].apply(n,arguments)},{"./_export":1669,"./_has":1672,"./_hide":1673,"./_iter-create":1679,"./_iterators":1682,"./_library":1684,"./_object-gpo":1693,"./_redefine":1699,"./_set-to-string-tag":1700,"./_wks":1713,dup:169}],1681:[function(e,t,n){arguments[4][170][0].apply(n,arguments)},{dup:170}],1682:[function(e,t,n){arguments[4][171][0].apply(n,arguments)},{dup:171}],1683:[function(e,t,n){arguments[4][172][0].apply(n,arguments)},{"./_object-keys":1695,"./_to-iobject":1706,dup:172}],1684:[function(e,t,n){arguments[4][173][0].apply(n,arguments)},{dup:173}],1685:[function(e,t,n){arguments[4][174][0].apply(n,arguments)},{"./_fails":1670,"./_has":1672,"./_is-object":1678,"./_object-dp":1687,"./_uid":1710,dup:174}],1686:[function(e,t,n){arguments[4][176][0].apply(n,arguments)},{"./_an-object":1658,"./_dom-create":1666,"./_enum-bug-keys":1667,"./_html":1674,"./_object-dps":1688,"./_shared-key":1701,dup:176}],1687:[function(e,t,n){arguments[4][177][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_ie8-dom-define":1675,"./_to-primitive":1709,dup:177}],1688:[function(e,t,n){arguments[4][178][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_object-dp":1687,"./_object-keys":1695,dup:178}],1689:[function(e,t,n){arguments[4][179][0].apply(n,arguments)},{"./_descriptors":1665,"./_has":1672,"./_ie8-dom-define":1675,"./_object-pie":1696,"./_property-desc":1698,"./_to-iobject":1706,"./_to-primitive":1709,dup:179}],1690:[function(e,t,n){arguments[4][180][0].apply(n,arguments)},{"./_object-gopn":1691,"./_to-iobject":1706,dup:180}],1691:[function(e,t,n){arguments[4][181][0].apply(n,arguments)},{"./_enum-bug-keys":1667,"./_object-keys-internal":1694,dup:181}],1692:[function(e,t,n){arguments[4][182][0].apply(n,arguments)},{dup:182}],1693:[function(e,t,n){arguments[4][183][0].apply(n,arguments)},{"./_has":1672,"./_shared-key":1701,"./_to-object":1708,dup:183}],1694:[function(e,t,n){arguments[4][184][0].apply(n,arguments)},{"./_array-includes":1659,"./_has":1672,"./_shared-key":1701,"./_to-iobject":1706,dup:184}],1695:[function(e,t,n){arguments[4][185][0].apply(n,arguments)},{"./_enum-bug-keys":1667,"./_object-keys-internal":1694,dup:185}],1696:[function(e,t,n){arguments[4][186][0].apply(n,arguments)},{dup:186}],1697:[function(e,t,n){arguments[4][187][0].apply(n,arguments)},{"./_core":1662,"./_export":1669,"./_fails":1670,dup:187}],1698:[function(e,t,n){arguments[4][188][0].apply(n,arguments)},{dup:188}],1699:[function(e,t,n){arguments[4][190][0].apply(n,arguments)},{"./_hide":1673,dup:190}],1700:[function(e,t,n){arguments[4][193][0].apply(n,arguments)},{"./_has":1672,"./_object-dp":1687,"./_wks":1713,dup:193}],1701:[function(e,t,n){arguments[4][194][0].apply(n,arguments)},{"./_shared":1702,"./_uid":1710,dup:194}],1702:[function(e,t,n){arguments[4][195][0].apply(n,arguments)},{"./_global":1671,dup:195}],1703:[function(e,t,n){arguments[4][196][0].apply(n,arguments)},{"./_defined":1664,"./_to-integer":1705,dup:196}],1704:[function(e,t,n){arguments[4][197][0].apply(n,arguments)},{"./_to-integer":1705,dup:197}],1705:[function(e,t,n){arguments[4][198][0].apply(n,arguments)},{dup:198}],1706:[function(e,t,n){arguments[4][199][0].apply(n,arguments)},{"./_defined":1664,"./_iobject":1676,dup:199}],1707:[function(e,t,n){arguments[4][200][0].apply(n,arguments)},{"./_to-integer":1705,dup:200}],1708:[function(e,t,n){arguments[4][201][0].apply(n,arguments)},{"./_defined":1664,dup:201}],1709:[function(e,t,n){arguments[4][202][0].apply(n,arguments)},{"./_is-object":1678,dup:202}],1710:[function(e,t,n){arguments[4][203][0].apply(n,arguments)},{dup:203}],1711:[function(e,t,n){arguments[4][204][0].apply(n,arguments)},{"./_core":1662,"./_global":1671,"./_library":1684,"./_object-dp":1687,"./_wks-ext":1712,dup:204}],1712:[function(e,t,n){arguments[4][205][0].apply(n,arguments)},{"./_wks":1713,dup:205}],1713:[function(e,t,n){arguments[4][206][0].apply(n,arguments)},{"./_global":1671,"./_shared":1702,"./_uid":1710,dup:206}],1714:[function(e,t,n){arguments[4][207][0].apply(n,arguments)},{"./_classof":1660,"./_core":1662,"./_iterators":1682,"./_wks":1713,dup:207}],1715:[function(e,t,n){arguments[4][208][0].apply(n,arguments)},{"./_an-object":1658,"./_core":1662,"./core.get-iterator-method":1714,dup:208}],1716:[function(e,t,n){arguments[4][209][0].apply(n,arguments)},{"./_add-to-unscopables":1657,"./_iter-define":1680,"./_iter-step":1681,"./_iterators":1682,"./_to-iobject":1706,dup:209}],1717:[function(e,t,n){arguments[4][211][0].apply(n,arguments)},{"./_export":1669,dup:211}],1718:[function(e,t,n){arguments[4][213][0].apply(n,arguments)},{"./_export":1669,"./_object-create":1686,dup:213}],1719:[function(e,t,n){arguments[4][214][0].apply(n,arguments)},{"./_object-keys":1695,"./_object-sap":1697,"./_to-object":1708,dup:214}],1720:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],1721:[function(e,t,n){arguments[4][217][0].apply(n,arguments)},{"./_iter-define":1680,"./_string-at":1703,dup:217}],1722:[function(e,t,n){arguments[4][218][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_enum-keys":1668,"./_export":1669,"./_fails":1670,"./_global":1671,"./_has":1672,"./_hide":1673,"./_is-array":1677,"./_keyof":1683,"./_library":1684,"./_meta":1685,"./_object-create":1686,"./_object-dp":1687,"./_object-gopd":1689,"./_object-gopn":1691,"./_object-gopn-ext":1690,"./_object-gops":1692,"./_object-keys":1695,"./_object-pie":1696,"./_property-desc":1698,"./_redefine":1699,"./_set-to-string-tag":1700,"./_shared":1702,"./_to-iobject":1706,"./_to-primitive":1709,"./_uid":1710,"./_wks":1713,"./_wks-define":1711,"./_wks-ext":1712,dup:218}],1723:[function(e,t,n){arguments[4][222][0].apply(n,arguments)},{"./_wks-define":1711,dup:222}],1724:[function(e,t,n){arguments[4][223][0].apply(n,arguments)},{"./_wks-define":1711,dup:223}],1725:[function(e,t,n){arguments[4][224][0].apply(n,arguments)},{"./_global":1671,"./_hide":1673,"./_iterators":1682,"./_wks":1713,"./es6.array.iterator":1716,dup:224}],1726:[function(e,t,n){arguments[4][254][0].apply(n,arguments)},{"babel-runtime/core-js/symbol/for":1644,dup:254}],1727:[function(e,t,n){arguments[4][255][0].apply(n,arguments)},{"./index":1737,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/core-js/number/max-safe-integer":1639,dup:255,"lodash/isNumber":1872,"lodash/isPlainObject":1875,"lodash/isRegExp":1876,"lodash/isString":1877}],1728:[function(e,t,n){arguments[4][256][0].apply(n,arguments)},{"../constants":1726,"../index":1737,"./index":1732,dup:256}],1729:[function(e,t,n){arguments[4][257][0].apply(n,arguments)},{"./index":1732,dup:257}],1730:[function(e,t,n){arguments[4][258][0].apply(n,arguments)},{"./index":1732,dup:258}],1731:[function(e,t,n){arguments[4][259][0].apply(n,arguments)},{"./index":1732,dup:259}],1732:[function(e,t,n){arguments[4][260][0].apply(n,arguments)},{"../index":1737,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/helpers/typeof":1646,dup:260}],1733:[function(e,t,n){arguments[4][261][0].apply(n,arguments)},{"./core":1728,"./es2015":1729,"./experimental":1730,"./flow":1731,"./index":1732,"./jsx":1734,"./misc":1735,dup:261}],1734:[function(e,t,n){arguments[4][262][0].apply(n,arguments)},{"./index":1732,dup:262}],1735:[function(e,t,n){arguments[4][263][0].apply(n,arguments)},{"./index":1732,dup:263}],1736:[function(e,t,n){arguments[4][264][0].apply(n,arguments)},{"./index":1737,dup:264}],1737:[function(e,t,n){arguments[4][265][0].apply(n,arguments)},{"./constants":1726,"./converters":1727,"./definitions":1732,"./definitions/init":1733,"./flow":1736,"./react":1738,"./retrievers":1739,"./validators":1740,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/core-js/object/get-own-property-symbols":1641,"babel-runtime/core-js/object/keys":1642,dup:265,"lodash/clone":1860,"lodash/compact":1861,"lodash/each":1862,"lodash/uniq":1884,"to-fast-properties":1885}],1738:[function(e,t,n){arguments[4][266][0].apply(n,arguments)},{"./index":1737,dup:266}],1739:[function(e,t,n){arguments[4][267][0].apply(n,arguments)},{"./index":1737,"babel-runtime/core-js/object/create":1640,dup:267}],1740:[function(e,t,n){arguments[4][268][0].apply(n,arguments)},{"./constants":1726,"./index":1737,"./retrievers":1739,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/object/keys":1642,"babel-runtime/helpers/typeof":1646,dup:268,esutils:1744}],1741:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1742:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1743:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1742,dup:71}],1744:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1741,"./code":1742,"./keyword":1743,dup:72}],1745:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:282}],1746:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1820,"./_hashDelete":1821,"./_hashGet":1822,"./_hashHas":1823,"./_hashSet":1824,dup:283}],1747:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1832,"./_listCacheDelete":1833,"./_listCacheGet":1834,"./_listCacheHas":1835,"./_listCacheSet":1836,dup:284}],1748:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:285}],1749:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1837,"./_mapCacheDelete":1838,"./_mapCacheGet":1839,"./_mapCacheHas":1840,"./_mapCacheSet":1841,dup:286}],1750:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:287}],1751:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:288}],1752:[function(e,t,n){arguments[4][289][0].apply(n,arguments)},{"./_MapCache":1749,"./_setCacheAdd":1850,"./_setCacheHas":1851,dup:289}],1753:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1747,"./_stackClear":1853,"./_stackDelete":1854,"./_stackGet":1855,"./_stackHas":1856,"./_stackSet":1857,dup:290}],1754:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1849,dup:291}],1755:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1849,dup:292}],1756:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:293}],1757:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1758:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1759:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1760:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1761:[function(e,t,n){arguments[4][299][0].apply(n,arguments)},{"./_baseIndexOf":1779,dup:299}],1762:[function(e,t,n){arguments[4][300][0].apply(n,arguments)},{dup:300}],1763:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1787,"./_isIndex":1828,"./isArguments":1866,"./isArray":1867,"./isBuffer":1869,"./isTypedArray":1878,dup:301}],1764:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1765:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1766:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1770,"./eq":1863,dup:308}],1767:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1863,dup:309}],1768:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1801,"./keys":1879,dup:310}],1769:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1801,"./keysIn":1880,dup:311}],1770:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1808,dup:312}],1771:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1753,"./_arrayEach":1759,"./_assignValue":1766,"./_baseAssign":1768,"./_baseAssignIn":1769,"./_cloneBuffer":1793,"./_copyArray":1800,"./_copySymbols":1802,"./_copySymbolsIn":1803,"./_getAllKeys":1810,"./_getAllKeysIn":1811,"./_getTag":1818,"./_initCloneArray":1825,"./_initCloneByTag":1826,"./_initCloneObject":1827,"./isArray":1867,"./isBuffer":1869,"./isObject":1873,"./keys":1879,dup:314}],1772:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1873,dup:315}],1773:[function(e,t,n){arguments[4][316][0].apply(n,arguments)},{"./_baseForOwn":1776,"./_createBaseEach":1805,dup:316}],1774:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1775:[function(e,t,n){arguments[4][319][0].apply(n,arguments)},{"./_createBaseFor":1806,dup:319}],1776:[function(e,t,n){arguments[4][320][0].apply(n,arguments)},{"./_baseFor":1775,"./keys":1879,dup:320}],1777:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1764,"./isArray":1867,dup:322}],1778:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1754,"./_getRawTag":1815,"./_objectToString":1847,dup:323}],1779:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1774,"./_baseIsNaN":1781,"./_strictIndexOf":1858,dup:326}],1780:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:327}],1781:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1782:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1830,"./_toSource":1859,"./isFunction":1870,"./isObject":1873,dup:332}],1783:[function(e,t,n){arguments[4][333][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:333}],1784:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isLength":1871,"./isObjectLike":1874,dup:334}],1785:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1831,"./_nativeKeys":1844,dup:336}],1786:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1831,"./_nativeKeysIn":1845,"./isObject":1873,dup:337}],1787:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1788:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1789:[function(e,t,n){arguments[4][354][0].apply(n,arguments)},{"./_SetCache":1752,"./_arrayIncludes":1761,"./_arrayIncludesWith":1762,"./_cacheHas":1790,"./_createSet":1807,"./_setToArray":1852,dup:354}],1790:[function(e,t,n){arguments[4][356][0].apply(n,arguments)},{dup:356}],1791:[function(e,t,n){arguments[4][357][0].apply(n,arguments)},{"./identity":1865,dup:357}],1792:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1755,dup:361}],1793:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1849,dup:362}],1794:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,dup:363}],1795:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1757,"./_arrayReduce":1765,"./_mapToArray":1842,dup:364}],1796:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1797:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1758,"./_arrayReduce":1765,"./_setToArray":1852,dup:366}],1798:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1754,dup:367}],1799:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,dup:368}],1800:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1801:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1766,"./_baseAssignValue":1770,dup:372}],1802:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1801,"./_getSymbols":1816,dup:373}],1803:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1801,"./_getSymbolsIn":1817,dup:374}],1804:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1849,dup:375}],1805:[function(e,t,n){arguments[4][377][0].apply(n,arguments)},{"./isArrayLike":1868,dup:377}],1806:[function(e,t,n){arguments[4][378][0].apply(n,arguments)},{dup:378}],1807:[function(e,t,n){arguments[4][380][0].apply(n,arguments)},{"./_Set":1751,"./_setToArray":1852,"./noop":1881,dup:380}],1808:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1813,dup:382}],1809:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1810:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1777,"./_getSymbols":1816,"./keys":1879,dup:387}],1811:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1777,"./_getSymbolsIn":1817,"./keysIn":1880,dup:388}],1812:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1829,dup:389}],1813:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1782,"./_getValue":1819,dup:391}],1814:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1848,dup:392}],1815:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1754,dup:393}],1816:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1760,"./stubArray":1882,dup:394}],1817:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1764,"./_getPrototype":1814,"./_getSymbols":1816,"./stubArray":1882,dup:395}],1818:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1745,"./_Map":1748,"./_Promise":1750,"./_Set":1751,"./_WeakMap":1756,"./_baseGetTag":1778,"./_toSource":1859,dup:396}],1819:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1820:[function(e,t,n){
-arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:400}],1821:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1822:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:402}],1823:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:403}],1824:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:404}],1825:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1826:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,"./_cloneDataView":1794,"./_cloneMap":1795,"./_cloneRegExp":1796,"./_cloneSet":1797,"./_cloneSymbol":1798,"./_cloneTypedArray":1799,dup:406}],1827:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1772,"./_getPrototype":1814,"./_isPrototype":1831,dup:407}],1828:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1829:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1830:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1804,dup:413}],1831:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1832:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1833:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:417}],1834:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:418}],1835:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:419}],1836:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:420}],1837:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1746,"./_ListCache":1747,"./_Map":1748,dup:421}],1838:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1812,dup:422}],1839:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1812,dup:423}],1840:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1812,dup:424}],1841:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1812,dup:425}],1842:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1843:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1813,dup:429}],1844:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1848,dup:430}],1845:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1846:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1809,dup:432}],1847:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1848:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1849:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1809,dup:436}],1850:[function(e,t,n){arguments[4][437][0].apply(n,arguments)},{dup:437}],1851:[function(e,t,n){arguments[4][438][0].apply(n,arguments)},{dup:438}],1852:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1853:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1747,dup:442}],1854:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1855:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1856:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1857:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1747,"./_Map":1748,"./_MapCache":1749,dup:446}],1858:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1859:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1860:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1771,dup:455}],1861:[function(e,t,n){arguments[4][458][0].apply(n,arguments)},{dup:458}],1862:[function(e,t,n){arguments[4][461][0].apply(n,arguments)},{"./forEach":1864,dup:461}],1863:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1864:[function(e,t,n){arguments[4][468][0].apply(n,arguments)},{"./_arrayEach":1759,"./_baseEach":1773,"./_castFunction":1791,"./isArray":1867,dup:468}],1865:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1866:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1780,"./isObjectLike":1874,dup:474}],1867:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1868:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1870,"./isLength":1871,dup:476}],1869:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1849,"./stubFalse":1883,dup:479}],1870:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObject":1873,dup:480}],1871:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1872:[function(e,t,n){arguments[4][483][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:483}],1873:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1874:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1875:[function(e,t,n){arguments[4][486][0].apply(n,arguments)},{"./_baseGetTag":1778,"./_getPrototype":1814,"./isObjectLike":1874,dup:486}],1876:[function(e,t,n){arguments[4][487][0].apply(n,arguments)},{"./_baseIsRegExp":1783,"./_baseUnary":1788,"./_nodeUtil":1846,dup:487}],1877:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isArray":1867,"./isObjectLike":1874,dup:488}],1878:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1784,"./_baseUnary":1788,"./_nodeUtil":1846,dup:490}],1879:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1763,"./_baseKeys":1785,"./isArrayLike":1868,dup:491}],1880:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1763,"./_baseKeysIn":1786,"./isArrayLike":1868,dup:492}],1881:[function(e,t,n){arguments[4][496][0].apply(n,arguments)},{dup:496}],1882:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1883:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1884:[function(e,t,n){arguments[4][509][0].apply(n,arguments)},{"./_baseUniq":1789,dup:509}],1885:[function(e,t,n){arguments[4][273][0].apply(n,arguments)},{dup:273}],1886:[function(e,t,n){arguments[4][560][0].apply(n,arguments)},{dup:560}],1887:[function(e,t,n){(function(t){n.path=e("path").join(t,"runtime.js")}).call(this,"/node_modules/regenerator/node_modules/regenerator-runtime")},{path:12}],1888:[function(e,t,n){(function(n){var r="object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this,i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=e("./runtime"),i)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./runtime":1889}],1889:[function(e,t,n){(function(e,n){!function(n){"use strict";function r(e,t,n,r){var i=t&&t.prototype instanceof a?t:a,s=Object.create(i.prototype),o=new h(r||[]);return s._invoke=c(e,n,o),s}function i(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function a(){}function s(){}function o(){}function u(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function l(t){function n(e,r,a,s){var o=i(t[e],t,r);if("throw"!==o.type){var u=o.arg,l=u.value;return l&&"object"==typeof l&&g.call(l,"__await")?Promise.resolve(l.__await).then(function(e){n("next",e,a,s)},function(e){n("throw",e,a,s)}):Promise.resolve(l).then(function(e){u.value=e,a(u)},s)}s(o.arg)}function r(e,t){function r(){return new Promise(function(r,i){n(e,t,r,i)})}return a=a?a.then(r,r):r()}"object"==typeof e&&e.domain&&(n=e.domain.bind(n));var a;this._invoke=r}function c(e,t,n){var r=D;return function(a,s){if(r===S)throw new Error("Generator is already running");if(r===w){if("throw"===a)throw s;return y()}for(;;){var o=n.delegate;if(o){if("return"===a||"throw"===a&&o.iterator[a]===m){n.delegate=null;var u=o.iterator.return;if(u){var l=i(u,o.iterator,s);if("throw"===l.type){a="throw",s=l.arg;continue}}if("return"===a)continue}var l=i(o.iterator[a],o.iterator,s);if("throw"===l.type){n.delegate=null,a="throw",s=l.arg;continue}a="next",s=m;var c=l.arg;if(!c.done)return r=C,c;n[o.resultName]=c.value,n.next=o.nextLoc,n.delegate=null}if("next"===a)n.sent=n._sent=s;else if("throw"===a){if(r===D)throw r=w,s;n.dispatchException(s)&&(a="next",s=m)}else"return"===a&&n.abrupt("return",s);r=S;var l=i(e,t,n);if("normal"===l.type){r=n.done?w:C;var c={value:l.arg,done:n.done};if(l.arg!==k)return c;n.delegate&&"next"===a&&(s=m)}else"throw"===l.type&&(r=w,a="throw",s=l.arg)}}}function p(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function f(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(p,this),this.reset(!0)}function d(e){if(e){var t=e[x];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var s=g.call(i,"catchLoc"),o=g.call(i,"finallyLoc");if(s&&o){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&g.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),f(n),k}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;f(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:d(e),resultName:t,nextLoc:n},k}}}("object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:13}],1890:[function(e,t,n){(function(r){function i(e,t,n){function i(){for(;l.length&&!p.paused;){var e=l.shift();if(null===e)return p.emit("end");p.emit("data",e)}}function s(){p.writable=!1,t.call(p),!p.readable&&p.autoDestroy&&p.destroy()}e=e||function(e){this.queue(e)},t=t||function(){this.queue(null)};var o=!1,u=!1,l=[],c=!1,p=new a;return p.readable=p.writable=!0,p.paused=!1,p.autoDestroy=!(n&&n.autoDestroy===!1),p.write=function(t){return e.call(this,t),!p.paused},p.queue=p.push=function(e){return c?p:(null===e&&(c=!0),l.push(e),i(),p)},p.on("end",function(){p.readable=!1,!p.writable&&p.autoDestroy&&r.nextTick(function(){p.destroy()})}),p.end=function(e){if(!o)return o=!0,arguments.length&&p.write(e),s(),p},p.destroy=function(){if(!u)return u=!0,o=!0,l.length=0,p.writable=p.readable=!1,p.emit("close"),p},p.pause=function(){if(!p.paused)return p.paused=!0,p},p.resume=function(){return p.paused&&(p.paused=!1,p.emit("resume")),i(),p.paused||p.emit("drain"),p},p}var a=e("stream");n=t.exports=i,i.through=i}).call(this,e("_process"))},{_process:13,stream:30}],regenerator:[function(e,t,n){function n(e,t){function n(e){i.push(e)}function r(){try{this.queue(a(i.join(""),t).code),this.queue(null)}catch(e){this.emit("error",e)}}var i=[];return o(n,r)}function r(){regeneratorRuntime=e("regenerator-runtime")}function i(){return p||(p=s.readFileSync(r.path,"utf8"))}function a(t,n){var r;return n=l.defaults(n||{},{includeRuntime:!1}),r=c.test(t)?e("babel-core").transform(t,f):{code:t},n.includeRuntime===!0&&(r.code=i()+"\n"+r.code),r}var s=e("fs"),o=e("through"),u=e("./lib/visit").transform,l=e("./lib/util"),c=/\bfunction\s*\*|\basync\b/;t.exports=n,n.runtime=r,r.path=e("regenerator-runtime/path.js").path;var p,f={presets:[e("regenerator-preset")],parserOpts:{sourceType:"module",allowImportExportEverywhere:!0,allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,strictMode:!1,plugins:["*","jsx","flow"]}};n.types=e("recast").types,n.compile=a,n.transform=u},{"./lib/util":36,"./lib/visit":37,"babel-core":38,fs:1,recast:539,"regenerator-preset":572,"regenerator-runtime":1888,"regenerator-runtime/path.js":1887,through:1890}]},{},[]);
\ No newline at end of file
+require=function e(t,n,r){function i(s,o){if(!n[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(a)return a(s,!0);var l=new Error("Cannot find module '"+s+"'");throw l.code="MODULE_NOT_FOUND",l}var c=n[s]={exports:{}};t[s][0].call(c.exports,function(e){var n=t[s][1][e];return i(n?n:e)},c,c.exports,e,t,n,r)}return n[s].exports}for(var a="function"==typeof require&&require,s=0;s=0;a--)if(s[a]!=o[a])return!1;for(a=s.length-1;a>=0;a--)if(i=s[a],!u(e[i],t[i]))return!1;return!0}function p(e,t){return!(!e||!t)&&("[object RegExp]"==Object.prototype.toString.call(t)?t.test(e):e instanceof t||t.call({},e)===!0)}function f(e,t,n,r){var i;h.isString(n)&&(r=n,n=null);try{t()}catch(e){i=e}if(r=(n&&n.name?" ("+n.name+").":".")+(r?" "+r:"."),e&&!i&&s(i,n,"Missing expected exception"+r),!e&&p(i,n)&&s(i,n,"Got unwanted exception"+r),e&&i&&n&&!p(i,n)||!e&&i)throw i}var h=e("util/"),d=Array.prototype.slice,y=Object.prototype.hasOwnProperty,m=t.exports=o;m.AssertionError=function(e){this.name="AssertionError",this.actual=e.actual,this.expected=e.expected,this.operator=e.operator,e.message?(this.message=e.message,this.generatedMessage=!1):(this.message=a(this),this.generatedMessage=!0);var t=e.stackStartFunction||s;if(Error.captureStackTrace)Error.captureStackTrace(this,t);else{var n=new Error;if(n.stack){var r=n.stack,i=t.name,o=r.indexOf("\n"+i);if(o>=0){var u=r.indexOf("\n",o+1);r=r.substring(u+1)}this.stack=r}}},h.inherits(m.AssertionError,Error),m.fail=s,m.ok=o,m.equal=function(e,t,n){e!=t&&s(e,t,n,"==",m.equal)},m.notEqual=function(e,t,n){e==t&&s(e,t,n,"!=",m.notEqual)},m.deepEqual=function(e,t,n){u(e,t)||s(e,t,n,"deepEqual",m.deepEqual)},m.notDeepEqual=function(e,t,n){u(e,t)&&s(e,t,n,"notDeepEqual",m.notDeepEqual)},m.strictEqual=function(e,t,n){e!==t&&s(e,t,n,"===",m.strictEqual)},m.notStrictEqual=function(e,t,n){e===t&&s(e,t,n,"!==",m.notStrictEqual)},m.throws=function(e,t,n){f.apply(this,[!0].concat(d.call(arguments)))},m.doesNotThrow=function(e,t){f.apply(this,[!1].concat(d.call(arguments)))},m.ifError=function(e){if(e)throw e};var b=Object.keys||function(e){var t=[];for(var n in e)y.call(e,n)&&t.push(n);return t}},{"util/":35}],3:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],4:[function(e,t,n){(function(t){"use strict";function r(){try{var e=new Uint8Array(1);return e.__proto__={__proto__:Uint8Array.prototype,foo:function(){return 42}},42===e.foo()&&"function"==typeof e.subarray&&0===e.subarray(1,1).byteLength}catch(e){return!1}}function i(){return s.TYPED_ARRAY_SUPPORT?2147483647:1073741823}function a(e,t){if(i()=i())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i().toString(16)+" bytes");return 0|e}function m(e){return+e!=e&&(e=0),s.alloc(+e)}function b(e,t){if(s.isBuffer(e))return e.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(e)||e instanceof ArrayBuffer))return e.byteLength;"string"!=typeof e&&(e=""+e);var n=e.length;if(0===n)return 0;for(var r=!1;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":case void 0:return X(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return z(e).length;default:if(r)return X(e).length;t=(""+t).toLowerCase(),r=!0}}function g(e,t,n){var r=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if(n>>>=0,t>>>=0,n<=t)return"";for(e||(e="utf8");;)switch(e){case"hex":return B(this,t,n);case"utf8":case"utf-8":return F(this,t,n);case"ascii":return P(this,t,n);case"latin1":case"binary":return j(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return O(this,t,n);default:if(r)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),r=!0}}function v(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function x(e,t,n,r,i){if(0===e.length)return-1;if("string"==typeof n?(r=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),n=+n,isNaN(n)&&(n=i?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(i)return-1;n=e.length-1}else if(n<0){if(!i)return-1;n=0}if("string"==typeof t&&(t=s.from(t,r)),s.isBuffer(t))return 0===t.length?-1:_(e,t,n,r,i);if("number"==typeof t)return t&=255,s.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):_(e,[t],n,r,i);throw new TypeError("val must be string, number or Buffer")}function _(e,t,n,r,i){function a(e,t){return 1===s?e[t]:e.readUInt16BE(t*s)}var s=1,o=e.length,u=t.length;if(void 0!==r&&(r=String(r).toLowerCase(),"ucs2"===r||"ucs-2"===r||"utf16le"===r||"utf-16le"===r)){if(e.length<2||t.length<2)return-1;s=2,o/=2,u/=2,n/=2}var l;if(i){var c=-1;for(l=n;lo&&(n=o-u),l=n;l>=0;l--){for(var p=!0,f=0;fi&&(r=i)):r=i;var a=t.length;if(a%2!==0)throw new TypeError("Invalid hex string");r>a/2&&(r=a/2);for(var s=0;s239?4:a>223?3:a>191?2:1;if(i+o<=n){var u,l,c,p;switch(o){case 1:a<128&&(s=a);break;case 2:u=e[i+1],128===(192&u)&&(p=(31&a)<<6|63&u,p>127&&(s=p));break;case 3:u=e[i+1],l=e[i+2],128===(192&u)&&128===(192&l)&&(p=(15&a)<<12|(63&u)<<6|63&l,p>2047&&(p<55296||p>57343)&&(s=p));break;case 4:u=e[i+1],l=e[i+2],c=e[i+3],128===(192&u)&&128===(192&l)&&128===(192&c)&&(p=(15&a)<<18|(63&u)<<12|(63&l)<<6|63&c,p>65535&&p<1114112&&(s=p))}}null===s?(s=65533,o=1):s>65535&&(s-=65536,r.push(s>>>10&1023|55296),s=56320|1023&s),r.push(s),i+=o}return T(r)}function T(e){var t=e.length;if(t<=ee)return String.fromCharCode.apply(String,e);for(var n="",r=0;rr)&&(n=r);for(var i="",a=t;an)throw new RangeError("Trying to access beyond buffer length")}function N(e,t,n,r,i,a){if(!s.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||te.length)throw new RangeError("Index out of range")}function L(e,t,n,r){t<0&&(t=65535+t+1);for(var i=0,a=Math.min(e.length-n,2);i>>8*(r?i:1-i)}function M(e,t,n,r){t<0&&(t=4294967295+t+1);for(var i=0,a=Math.min(e.length-n,4);i>>8*(r?i:3-i)&255}function R(e,t,n,r,i,a){if(n+r>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function U(e,t,n,r,i){return i||R(e,t,n,4,3.4028234663852886e38,-3.4028234663852886e38),Q.write(e,t,n,r,23,4),n+4}function V(e,t,n,r,i){return i||R(e,t,n,8,1.7976931348623157e308,-1.7976931348623157e308),Q.write(e,t,n,r,52,8),n+8}function G(e){if(e=q(e).replace(te,""),e.length<2)return"";for(;e.length%4!==0;)e+="=";return e}function q(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")}function K(e){return e<16?"0"+e.toString(16):e.toString(16)}function X(e,t){t=t||1/0;for(var n,r=e.length,i=null,a=[],s=0;s55295&&n<57344){if(!i){if(n>56319){(t-=3)>-1&&a.push(239,191,189);continue}if(s+1===r){(t-=3)>-1&&a.push(239,191,189);continue}i=n;continue}if(n<56320){(t-=3)>-1&&a.push(239,191,189),i=n;continue}n=(i-55296<<10|n-56320)+65536}else i&&(t-=3)>-1&&a.push(239,191,189);if(i=null,n<128){if((t-=1)<0)break;a.push(n)}else if(n<2048){if((t-=2)<0)break;a.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;a.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;a.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return a}function J(e){for(var t=[],n=0;n>8,i=n%256,a.push(i),a.push(r);return a}function z(e){return $.toByteArray(G(e))}function Y(e,t,n,r){for(var i=0;i=t.length||i>=e.length);++i)t[i+n]=e[i];return i}function H(e){return e!==e}var $=e("base64-js"),Q=e("ieee754"),Z=e("isarray");n.Buffer=s,n.SlowBuffer=m,n.INSPECT_MAX_BYTES=50,s.TYPED_ARRAY_SUPPORT=void 0!==t.TYPED_ARRAY_SUPPORT?t.TYPED_ARRAY_SUPPORT:r(),n.kMaxLength=i(),s.poolSize=8192,s._augment=function(e){return e.__proto__=s.prototype,e},s.from=function(e,t,n){return o(null,e,t,n)},s.TYPED_ARRAY_SUPPORT&&(s.prototype.__proto__=Uint8Array.prototype,s.__proto__=Uint8Array,"undefined"!=typeof Symbol&&Symbol.species&&s[Symbol.species]===s&&Object.defineProperty(s,Symbol.species,{value:null,configurable:!0})),s.alloc=function(e,t,n){return l(null,e,t,n)},s.allocUnsafe=function(e){return c(null,e)},s.allocUnsafeSlow=function(e){return c(null,e)},s.isBuffer=function(e){return!(null==e||!e._isBuffer)},s.compare=function(e,t){if(!s.isBuffer(e)||!s.isBuffer(t))throw new TypeError("Arguments must be Buffers");if(e===t)return 0;for(var n=e.length,r=t.length,i=0,a=Math.min(n,r);i0&&(e=this.toString("hex",0,t).match(/.{2}/g).join(" "),this.length>t&&(e+=" ... ")),""},s.prototype.compare=function(e,t,n,r,i){if(!s.isBuffer(e))throw new TypeError("Argument must be a Buffer");if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===r&&(r=0),void 0===i&&(i=this.length),t<0||n>e.length||r<0||i>this.length)throw new RangeError("out of range index");if(r>=i&&t>=n)return 0;if(r>=i)return-1;if(t>=n)return 1;if(t>>>=0,n>>>=0,r>>>=0,i>>>=0,this===e)return 0;for(var a=i-r,o=n-t,u=Math.min(a,o),l=this.slice(r,i),c=e.slice(t,n),p=0;pi)&&(n=i),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");r||(r="utf8");for(var a=!1;;)switch(r){case"hex":return E(this,e,t,n);case"utf8":case"utf-8":return A(this,e,t,n);case"ascii":return D(this,e,t,n);case"latin1":case"binary":return C(this,e,t,n);case"base64":return S(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return w(this,e,t,n);default:if(a)throw new TypeError("Unknown encoding: "+r);r=(""+r).toLowerCase(),a=!0}},s.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var ee=4096;s.prototype.slice=function(e,t){var n=this.length;e=~~e,t=void 0===t?n:~~t,e<0?(e+=n,e<0&&(e=0)):e>n&&(e=n),t<0?(t+=n,t<0&&(t=0)):t>n&&(t=n),t0&&(i*=256);)r+=this[e+--t]*i;return r},s.prototype.readUInt8=function(e,t){return t||I(e,1,this.length),this[e]},s.prototype.readUInt16LE=function(e,t){return t||I(e,2,this.length),this[e]|this[e+1]<<8},s.prototype.readUInt16BE=function(e,t){return t||I(e,2,this.length),this[e]<<8|this[e+1]},s.prototype.readUInt32LE=function(e,t){return t||I(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},s.prototype.readUInt32BE=function(e,t){return t||I(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},s.prototype.readIntLE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=this[e],i=1,a=0;++a=i&&(r-=Math.pow(2,8*t)),r},s.prototype.readIntBE=function(e,t,n){e|=0,t|=0,n||I(e,t,this.length);for(var r=t,i=1,a=this[e+--r];r>0&&(i*=256);)a+=this[e+--r]*i;return i*=128,a>=i&&(a-=Math.pow(2,8*t)),a},s.prototype.readInt8=function(e,t){return t||I(e,1,this.length),128&this[e]?(255-this[e]+1)*-1:this[e]},s.prototype.readInt16LE=function(e,t){t||I(e,2,this.length);var n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt16BE=function(e,t){t||I(e,2,this.length);var n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},s.prototype.readInt32LE=function(e,t){return t||I(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},s.prototype.readInt32BE=function(e,t){return t||I(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},s.prototype.readFloatLE=function(e,t){return t||I(e,4,this.length),Q.read(this,e,!0,23,4)},s.prototype.readFloatBE=function(e,t){return t||I(e,4,this.length),Q.read(this,e,!1,23,4)},s.prototype.readDoubleLE=function(e,t){return t||I(e,8,this.length),Q.read(this,e,!0,52,8)},s.prototype.readDoubleBE=function(e,t){return t||I(e,8,this.length),Q.read(this,e,!1,52,8)},s.prototype.writeUIntLE=function(e,t,n,r){if(e=+e,t|=0,n|=0,!r){N(this,e,t,n,Math.pow(2,8*n)-1,0)}var i=1,a=0;for(this[t]=255&e;++a=0&&(a*=256);)this[t+i]=e/a&255;return t+n},s.prototype.writeUInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,255,0),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),this[t]=255&e,t+1},s.prototype.writeUInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},s.prototype.writeUInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,65535,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},s.prototype.writeUInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e):M(this,e,t,!0),t+4},s.prototype.writeUInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,4294967295,0),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},s.prototype.writeIntLE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var a=0,s=1,o=0;for(this[t]=255&e;++a>0)-o&255;return t+n},s.prototype.writeIntBE=function(e,t,n,r){if(e=+e,t|=0,!r){var i=Math.pow(2,8*n-1);N(this,e,t,n,i-1,-i)}var a=n-1,s=1,o=0;for(this[t+a]=255&e;--a>=0&&(s*=256);)e<0&&0===o&&0!==this[t+a+1]&&(o=1),this[t+a]=(e/s>>0)-o&255;return t+n},s.prototype.writeInt8=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,1,127,-128),s.TYPED_ARRAY_SUPPORT||(e=Math.floor(e)),e<0&&(e=255+e+1),this[t]=255&e,t+1},s.prototype.writeInt16LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8):L(this,e,t,!0),t+2},s.prototype.writeInt16BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,2,32767,-32768),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>8,this[t+1]=255&e):L(this,e,t,!1),t+2},s.prototype.writeInt32LE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),s.TYPED_ARRAY_SUPPORT?(this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24):M(this,e,t,!0),t+4},s.prototype.writeInt32BE=function(e,t,n){return e=+e,t|=0,n||N(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),s.TYPED_ARRAY_SUPPORT?(this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e):M(this,e,t,!1),t+4},s.prototype.writeFloatLE=function(e,t,n){return U(this,e,t,!0,n)},s.prototype.writeFloatBE=function(e,t,n){return U(this,e,t,!1,n)},s.prototype.writeDoubleLE=function(e,t,n){return V(this,e,t,!0,n)},s.prototype.writeDoubleBE=function(e,t,n){return V(this,e,t,!1,n)},s.prototype.copy=function(e,t,n,r){if(n||(n=0),r||0===r||(r=this.length),t>=e.length&&(t=e.length),t||(t=0),r>0&&r=this.length)throw new RangeError("sourceStart out of bounds");if(r<0)throw new RangeError("sourceEnd out of bounds");r>this.length&&(r=this.length),e.length-t=0;--i)e[i+t]=this[i+n];else if(a<1e3||!s.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,n=void 0===n?this.length:n>>>0,e||(e=0);var a;if("number"==typeof e)for(a=t;a0)throw new Error("Invalid string. Length must be a multiple of 4");return"="===e[t-2]?2:"="===e[t-1]?1:0}function i(e){return 3*e.length/4-r(e)}function a(e){var t,n,i,a,s,o,u=e.length;s=r(e),o=new p(3*u/4-s),i=s>0?u-4:u;var l=0;for(t=0,n=0;t>16&255,o[l++]=a>>8&255,o[l++]=255&a;return 2===s?(a=c[e.charCodeAt(t)]<<2|c[e.charCodeAt(t+1)]>>4,o[l++]=255&a):1===s&&(a=c[e.charCodeAt(t)]<<10|c[e.charCodeAt(t+1)]<<4|c[e.charCodeAt(t+2)]>>2,o[l++]=a>>8&255,o[l++]=255&a),o}function s(e){return l[e>>18&63]+l[e>>12&63]+l[e>>6&63]+l[63&e]}function o(e,t,n){for(var r,i=[],a=t;ac?c:u+s));return 1===r?(t=e[n-1],i+=l[t>>2],i+=l[t<<4&63],i+="=="):2===r&&(t=(e[n-2]<<8)+e[n-1],i+=l[t>>10],i+=l[t>>4&63],i+=l[t<<2&63],i+="="),a.push(i),a.join("")}n.byteLength=i,n.toByteArray=a,n.fromByteArray=u;for(var l=[],c=[],p="undefined"!=typeof Uint8Array?Uint8Array:Array,f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",h=0,d=f.length;h>1,c=-7,p=n?i-1:0,f=n?-1:1,h=e[t+p];for(p+=f,a=h&(1<<-c)-1,h>>=-c,c+=o;c>0;a=256*a+e[t+p],p+=f,c-=8);for(s=a&(1<<-c)-1,a>>=-c,c+=r;c>0;s=256*s+e[t+p],p+=f,c-=8);if(0===a)a=1-l;else{if(a===u)return s?NaN:(h?-1:1)*(1/0);s+=Math.pow(2,r),a-=l}return(h?-1:1)*s*Math.pow(2,a-r)},n.write=function(e,t,n,r,i,a){var s,o,u,l=8*a-i-1,c=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,h=r?0:a-1,d=r?1:-1,y=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(o=isNaN(t)?1:0,s=c):(s=Math.floor(Math.log(t)/Math.LN2),t*(u=Math.pow(2,-s))<1&&(s--,u*=2),t+=s+p>=1?f/u:f*Math.pow(2,1-p),t*u>=2&&(s++,u/=2),s+p>=c?(o=0,s=c):s+p>=1?(o=(t*u-1)*Math.pow(2,i),s+=p):(o=t*Math.pow(2,p-1)*Math.pow(2,i),s=0));i>=8;e[n+h]=255&o,h+=d,o/=256,i-=8);for(s=s<0;e[n+h]=255&s,h+=d,s/=256,l-=8);e[n+h-d]|=128*y}},{}],7:[function(e,t,n){var r={}.toString;t.exports=Array.isArray||function(e){return"[object Array]"==r.call(e)}},{}],8:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function a(e){return"number"==typeof e}function s(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!a(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,a,u,l;if(this._events||(this._events={}),"error"===e&&(!this._events.error||s(this._events.error)&&!this._events.error.length)){if(t=arguments[1],t instanceof Error)throw t;var c=new Error('Uncaught, unspecified "error" event. ('+t+")");throw c.context=t,c}if(n=this._events[e],o(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:a=Array.prototype.slice.call(arguments,1),n.apply(this,a)}else if(s(n))for(a=Array.prototype.slice.call(arguments,1),l=n.slice(),r=l.length,u=0;u0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace())),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function n(){this.removeListener(e,n),r||(r=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var r=!1;return n.listener=t,this.on(e,n),this},r.prototype.removeListener=function(e,t){var n,r,a,o;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(n=this._events[e],a=n.length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(s(n)){for(o=a;o-- >0;)if(n[o]===t||n[o].listener&&n[o].listener===t){r=o;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(n=this._events[e],i(n))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],9:[function(e,t,n){"function"==typeof Object.create?t.exports=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}},{}],10:[function(e,t,n){function r(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function i(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&r(e.slice(0,0))}t.exports=function(e){return null!=e&&(r(e)||i(e)||!!e._isBuffer)}},{}],11:[function(e,t,n){n.endianness=function(){return"LE"},n.hostname=function(){return"undefined"!=typeof location?location.hostname:""},n.loadavg=function(){return[]},n.uptime=function(){return 0},n.freemem=function(){return Number.MAX_VALUE},n.totalmem=function(){return Number.MAX_VALUE},n.cpus=function(){return[]},n.type=function(){return"Browser"},n.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},n.networkInterfaces=n.getNetworkInterfaces=function(){return{}},n.arch=function(){return"javascript"},n.platform=function(){return"browser"},n.tmpdir=n.tmpDir=function(){return"/tmp"},n.EOL="\n"},{}],12:[function(e,t,n){(function(e){function t(e,t){for(var n=0,r=e.length-1;r>=0;r--){var i=e[r];"."===i?e.splice(r,1):".."===i?(e.splice(r,1),n++):n&&(e.splice(r,1),n--)}if(t)for(;n--;n)e.unshift("..");return e}function r(e,t){if(e.filter)return e.filter(t);for(var n=[],r=0;r=-1&&!i;a--){var s=a>=0?arguments[a]:e.cwd();if("string"!=typeof s)throw new TypeError("Arguments to path.resolve must be strings");s&&(n=s+"/"+n,i="/"===s.charAt(0))}return n=t(r(n.split("/"),function(e){return!!e}),!i).join("/"),(i?"/":"")+n||"."},n.normalize=function(e){var i=n.isAbsolute(e),a="/"===s(e,-1);return e=t(r(e.split("/"),function(e){return!!e}),!i).join("/"),e||i||(e="."),e&&a&&(e+="/"),(i?"/":"")+e},n.isAbsolute=function(e){return"/"===e.charAt(0)},n.join=function(){var e=Array.prototype.slice.call(arguments,0);return n.normalize(r(e,function(e,t){
+if("string"!=typeof e)throw new TypeError("Arguments to path.join must be strings");return e}).join("/"))},n.relative=function(e,t){function r(e){for(var t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n-t+1)}e=n.resolve(e).substr(1),t=n.resolve(t).substr(1);for(var i=r(e.split("/")),a=r(t.split("/")),s=Math.min(i.length,a.length),o=s,u=0;u1)for(var n=1;n0)if(t.ended&&!i){var s=new Error("stream.push() after EOF");e.emit("error",s)}else if(t.endEmitted&&i){var u=new Error("stream.unshift() after end event");e.emit("error",u)}else{var l;!t.decoder||i||r||(n=t.decoder.write(n),l=!t.objectMode&&0===n.length),i||(t.reading=!1),l||(t.flowing&&0===t.length&&!t.sync?(e.emit("data",n),e.read(0)):(t.length+=t.objectMode?1:n.length,i?t.buffer.unshift(n):t.buffer.push(n),t.needReadable&&f(e))),d(e,t)}else i||(t.reading=!1);return o(t)}function o(e){return!e.ended&&(e.needReadable||e.length=V?e=V:(e--,e|=e>>>1,e|=e>>>2,e|=e>>>4,e|=e>>>8,e|=e>>>16,e++),e}function l(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!==e?t.flowing&&t.length?t.buffer.head.data.length:t.length:(e>t.highWaterMark&&(t.highWaterMark=u(e)),e<=t.length?e:t.ended?t.length:(t.needReadable=!0,0))}function c(e,t){var n=null;return O.isBuffer(t)||"string"==typeof t||null===t||void 0===t||e.objectMode||(n=new TypeError("Invalid non-string/buffer chunk")),n}function p(e,t){if(!t.ended){if(t.decoder){var n=t.decoder.end();n&&n.length&&(t.buffer.push(n),t.length+=t.objectMode?1:n.length)}t.ended=!0,f(e)}}function f(e){var t=e._readableState;t.needReadable=!1,t.emittedReadable||(M("emitReadable",t.flowing),t.emittedReadable=!0,t.sync?T(h,e):h(e))}function h(e){M("emit readable"),e.emit("readable"),x(e)}function d(e,t){t.readingMore||(t.readingMore=!0,T(y,e,t))}function y(e,t){for(var n=t.length;!t.reading&&!t.flowing&&!t.ended&&t.length=t.length?(n=t.decoder?t.buffer.join(""):1===t.buffer.length?t.buffer.head.data:t.buffer.concat(t.length),t.buffer.clear()):n=E(e,t.buffer,t.decoder),n}function E(e,t,n){var r;return ea.length?a.length:e;if(i+=s===a.length?a:a.slice(0,e),e-=s,0===e){s===a.length?(++r,n.next?t.head=n.next:t.head=t.tail=null):(t.head=n,n.data=a.slice(s));break}++r}return t.length-=r,i}function D(e,t){var n=I.allocUnsafe(e),r=t.head,i=1;for(r.data.copy(n),e-=r.data.length;r=r.next;){var a=r.data,s=e>a.length?a.length:e;if(a.copy(n,n.length-e,0,s),e-=s,0===e){s===a.length?(++i,r.next?t.head=r.next:t.head=t.tail=null):(t.head=r,r.data=a.slice(s));break}++i}return t.length-=i,n}function C(e){var t=e._readableState;if(t.length>0)throw new Error('"endReadable()" called on non-empty stream');t.endEmitted||(t.ended=!0,T(S,t,e))}function S(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable=!1,t.emit("end"))}function w(e,t){for(var n=0,r=e.length;n=t.highWaterMark||t.ended))return M("read: emitReadable",t.length,t.ended),0===t.length&&t.ended?C(this):f(this),null;if(e=l(e,t),0===e&&t.ended)return 0===t.length&&C(this),null;var r=t.needReadable;M("need readable",r),(0===t.length||t.length-e0?_(e,t):null,null===i?(t.needReadable=!0,e=0):t.length-=e,0===t.length&&(t.ended||(t.needReadable=!0),n!==e&&t.ended&&C(this)),null!==i&&this.emit("data",i),i},a.prototype._read=function(e){this.emit("error",new Error("_read() is not implemented"))},a.prototype.pipe=function(e,t){function i(e){M("onunpipe"),e===f&&s()}function a(){M("onend"),e.end()}function s(){M("cleanup"),e.removeListener("close",l),e.removeListener("finish",c),e.removeListener("drain",b),e.removeListener("error",u),e.removeListener("unpipe",i),f.removeListener("end",a),f.removeListener("end",s),f.removeListener("data",o),g=!0,!h.awaitDrain||e._writableState&&!e._writableState.needDrain||b()}function o(t){M("ondata"),v=!1,!1!==e.write(t)||v||((1===h.pipesCount&&h.pipes===e||h.pipesCount>1&&k(h.pipes,e)!==-1)&&!g&&(M("false write response, pause",f._readableState.awaitDrain),f._readableState.awaitDrain++,v=!0),f.pause())}function u(t){M("onerror",t),p(),e.removeListener("error",u),0===B(e,"error")&&e.emit("error",t)}function l(){e.removeListener("finish",c),p()}function c(){M("onfinish"),e.removeListener("close",l),p()}function p(){M("unpipe"),f.unpipe(e)}var f=this,h=this._readableState;switch(h.pipesCount){case 0:h.pipes=e;break;case 1:h.pipes=[h.pipes,e];break;default:h.pipes.push(e)}h.pipesCount+=1,M("pipe count=%d opts=%j",h.pipesCount,t);var d=(!t||t.end!==!1)&&e!==n.stdout&&e!==n.stderr,y=d?a:s;h.endEmitted?T(y):f.once("end",y),e.on("unpipe",i);var b=m(f);e.on("drain",b);var g=!1,v=!1;return f.on("data",o),r(e,"error",u),e.once("close",l),e.once("finish",c),e.emit("pipe",f),h.flowing||(M("pipe resume"),f.resume()),e},a.prototype.unpipe=function(e){var t=this._readableState;if(0===t.pipesCount)return this;if(1===t.pipesCount)return e&&e!==t.pipes?this:(e||(e=t.pipes),t.pipes=null,t.pipesCount=0,t.flowing=!1,e&&e.emit("unpipe",this),this);if(!e){var n=t.pipes,r=t.pipesCount;t.pipes=null,t.pipesCount=0,t.flowing=!1;for(var i=0;i-1?setImmediate:D;s.WritableState=a;var S=e("core-util-is");S.inherits=e("inherits");var w,k={deprecate:e("util-deprecate")};!function(){try{w=e("stream")}catch(e){}finally{w||(w=e("events").EventEmitter)}}();var F=e("buffer").Buffer,T=e("buffer-shims");S.inherits(s,w),a.prototype.getBuffer=function(){for(var e=this.bufferedRequest,t=[];e;)t.push(e),e=e.next;return t},function(){try{Object.defineProperty(a.prototype,"buffer",{get:k.deprecate(function(){return this.getBuffer()},"_writableState.buffer is deprecated. Use _writableState.getBuffer instead.")})}catch(e){}}();var P;"function"==typeof Symbol&&Symbol.hasInstance&&"function"==typeof Function.prototype[Symbol.hasInstance]?(P=Function.prototype[Symbol.hasInstance],Object.defineProperty(s,Symbol.hasInstance,{value:function(e){return!!P.call(this,e)||e&&e._writableState instanceof a}})):P=function(e){return e instanceof this},s.prototype.pipe=function(){this.emit("error",new Error("Cannot pipe, not readable"))},s.prototype.write=function(e,t,n){var i=this._writableState,a=!1;return"function"==typeof t&&(n=t,t=null),F.isBuffer(e)?t="buffer":t||(t=i.defaultEncoding),"function"!=typeof n&&(n=r),i.ended?o(this,n):u(this,i,e,n)&&(i.pendingcb++,a=c(this,i,e,t,n)),a},s.prototype.cork=function(){this._writableState.corked++},s.prototype.uncork=function(){var e=this._writableState;e.corked&&(e.corked--,e.writing||e.corked||e.finished||e.bufferProcessing||!e.bufferedRequest||b(this,e))},s.prototype.setDefaultEncoding=function(e){if("string"==typeof e&&(e=e.toLowerCase()),!(["hex","utf8","utf-8","ascii","binary","base64","ucs2","ucs-2","utf16le","utf-16le","raw"].indexOf((e+"").toLowerCase())>-1))throw new TypeError("Unknown encoding: "+e);return this._writableState.defaultEncoding=e,this},s.prototype._write=function(e,t,n){n(new Error("_write() is not implemented"))},s.prototype._writev=null,s.prototype.end=function(e,t,n){var r=this._writableState;"function"==typeof e?(n=e,e=null,t=null):"function"==typeof t&&(n=t,t=null),null!==e&&void 0!==e&&this.write(e,t),r.corked&&(r.corked=1,this.uncork()),r.ending||r.finished||_(this,r,n)}}).call(this,e("_process"))},{"./_stream_duplex":15,_process:13,buffer:4,"buffer-shims":21,"core-util-is":22,events:8,inherits:9,"process-nextick-args":24,"util-deprecate":25}],20:[function(e,t,n){"use strict";function r(){this.head=null,this.tail=null,this.length=0}var i=(e("buffer").Buffer,e("buffer-shims"));t.exports=r,r.prototype.push=function(e){var t={data:e,next:null};this.length>0?this.tail.next=t:this.head=t,this.tail=t,++this.length},r.prototype.unshift=function(e){var t={data:e,next:this.head};0===this.length&&(this.tail=t),this.head=t,++this.length},r.prototype.shift=function(){if(0!==this.length){var e=this.head.data;return 1===this.length?this.head=this.tail=null:this.head=this.head.next,--this.length,e}},r.prototype.clear=function(){this.head=this.tail=null,this.length=0},r.prototype.join=function(e){if(0===this.length)return"";for(var t=this.head,n=""+t.data;t=t.next;)n+=e+t.data;return n},r.prototype.concat=function(e){if(0===this.length)return i.alloc(0);if(1===this.length)return this.head.data;for(var t=i.allocUnsafe(e>>>0),n=this.head,r=0;n;)n.data.copy(t,r),r+=n.data.length,n=n.next;return t}},{buffer:4,"buffer-shims":21}],21:[function(e,t,n){(function(t){"use strict";var r=e("buffer"),i=r.Buffer,a=r.SlowBuffer,s=r.kMaxLength||2147483647;n.alloc=function(e,t,n){if("function"==typeof i.alloc)return i.alloc(e,t,n);if("number"==typeof n)throw new TypeError("encoding must not be number");if("number"!=typeof e)throw new TypeError("size must be a number");if(e>s)throw new RangeError("size is too large");var r=n,a=t;void 0===a&&(r=void 0,a=0);var o=new i(e);if("string"==typeof a)for(var u=new i(a,r),l=u.length,c=-1;++cs)throw new RangeError("size is too large");return new i(e)},n.from=function(e,n,r){if("function"==typeof i.from&&(!t.Uint8Array||Uint8Array.from!==i.from))return i.from(e,n,r);if("number"==typeof e)throw new TypeError('"value" argument must not be a number');if("string"==typeof e)return new i(e,n);if("undefined"!=typeof ArrayBuffer&&e instanceof ArrayBuffer){var a=n;if(1===arguments.length)return new i(e);void 0===a&&(a=0);var s=r;if(void 0===s&&(s=e.byteLength-a),a>=e.byteLength)throw new RangeError("'offset' is out of bounds");if(s>e.byteLength-a)throw new RangeError("'length' is out of bounds");return new i(e.slice(a,a+s))}if(i.isBuffer(e)){var o=new i(e.length);return e.copy(o,0,0,e.length),o}if(e){if(Array.isArray(e)||"undefined"!=typeof ArrayBuffer&&e.buffer instanceof ArrayBuffer||"length"in e)return new i(e);if("Buffer"===e.type&&Array.isArray(e.data))return new i(e.data)}throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.")},n.allocUnsafeSlow=function(e){if("function"==typeof i.allocUnsafeSlow)return i.allocUnsafeSlow(e);if("number"!=typeof e)throw new TypeError("size must be a number");if(e>=s)throw new RangeError("size is too large");return new a(e)}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{buffer:4}],22:[function(e,t,n){(function(e){function t(e){return Array.isArray?Array.isArray(e):"[object Array]"===m(e)}function r(e){return"boolean"==typeof e}function i(e){return null===e}function a(e){return null==e}function s(e){return"number"==typeof e}function o(e){return"string"==typeof e}function u(e){return"symbol"==typeof e}function l(e){return void 0===e}function c(e){return"[object RegExp]"===m(e)}function p(e){return"object"==typeof e&&null!==e}function f(e){return"[object Date]"===m(e)}function h(e){return"[object Error]"===m(e)||e instanceof Error}function d(e){return"function"==typeof e}function y(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function m(e){return Object.prototype.toString.call(e)}n.isArray=t,n.isBoolean=r,n.isNull=i,n.isNullOrUndefined=a,n.isNumber=s,n.isString=o,n.isSymbol=u,n.isUndefined=l,n.isRegExp=c,n.isObject=p,n.isDate=f,n.isError=h,n.isFunction=d,n.isPrimitive=y,n.isBuffer=e.isBuffer}).call(this,{isBuffer:e("../../../../insert-module-globals/node_modules/is-buffer/index.js")})},{"../../../../insert-module-globals/node_modules/is-buffer/index.js":10}],23:[function(e,t,n){arguments[4][7][0].apply(n,arguments)},{dup:7}],24:[function(e,t,n){(function(e){"use strict";function n(t,n,r,i){if("function"!=typeof t)throw new TypeError('"callback" argument must be a function');var a,s,o=arguments.length;switch(o){case 0:case 1:return e.nextTick(t);case 2:return e.nextTick(function(){t.call(null,n)});case 3:return e.nextTick(function(){t.call(null,n,r)});case 4:return e.nextTick(function(){t.call(null,n,r,i)});default:for(a=new Array(o-1),s=0;s=this.charLength-this.charReceived?this.charLength-this.charReceived:e.length;if(e.copy(this.charBuffer,this.charReceived,0,n),this.charReceived+=n,this.charReceived=55296&&r<=56319)){if(this.charReceived=this.charLength=0,0===e.length)return t;break}this.charLength+=this.surrogateSize,t=""}this.detectIncompleteChar(e);var i=e.length;this.charLength&&(e.copy(this.charBuffer,0,e.length-this.charReceived,i),i-=this.charReceived),t+=e.toString(this.encoding,0,i);var i=t.length-1,r=t.charCodeAt(i);if(r>=55296&&r<=56319){var a=this.surrogateSize;return this.charLength+=a,this.charReceived+=a,this.charBuffer.copy(this.charBuffer,a,0,a),e.copy(this.charBuffer,0,0,a),t.substring(0,i)}return t},l.prototype.detectIncompleteChar=function(e){for(var t=e.length>=3?3:e.length;t>0;t--){var n=e[e.length-t];if(1==t&&n>>5==6){this.charLength=2;break}if(t<=2&&n>>4==14){this.charLength=3;break}if(t<=3&&n>>3==30){this.charLength=4;break}}this.charReceived=t},l.prototype.end=function(e){
+var t="";if(e&&e.length&&(t=this.write(e)),this.charReceived){var n=this.charReceived,r=this.charBuffer,i=this.encoding;t+=r.slice(0,n).toString(i)}return t}},{buffer:4}],32:[function(e,t,n){function r(){throw new Error("tty.ReadStream is not implemented")}function i(){throw new Error("tty.ReadStream is not implemented")}n.isatty=function(){return!1},n.ReadStream=r,n.WriteStream=i},{}],33:[function(e,t,n){arguments[4][9][0].apply(n,arguments)},{dup:9}],34:[function(e,t,n){t.exports=function(e){return e&&"object"==typeof e&&"function"==typeof e.copy&&"function"==typeof e.fill&&"function"==typeof e.readUInt8}},{}],35:[function(e,t,n){(function(t,r){function i(e,t){var r={seen:[],stylize:s};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),y(t)?r.showHidden=t:t&&n._extend(r,t),_(r.showHidden)&&(r.showHidden=!1),_(r.depth)&&(r.depth=2),_(r.colors)&&(r.colors=!1),_(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),u(r,e,r.depth)}function a(e,t){var n=i.styles[t];return n?"["+i.colors[n][0]+"m"+e+"["+i.colors[n][1]+"m":e}function s(e,t){return e}function o(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function u(e,t,r){if(e.customInspect&&t&&S(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return v(i)||(i=u(e,i,r)),i}var a=l(e,t);if(a)return a;var s=Object.keys(t),y=o(s);if(e.showHidden&&(s=Object.getOwnPropertyNames(t)),C(t)&&(s.indexOf("message")>=0||s.indexOf("description")>=0))return c(t);if(0===s.length){if(S(t)){var m=t.name?": "+t.name:"";return e.stylize("[Function"+m+"]","special")}if(E(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(D(t))return e.stylize(Date.prototype.toString.call(t),"date");if(C(t))return c(t)}var b="",g=!1,x=["{","}"];if(d(t)&&(g=!0,x=["[","]"]),S(t)){b=" [Function"+(t.name?": "+t.name:"")+"]"}if(E(t)&&(b=" "+RegExp.prototype.toString.call(t)),D(t)&&(b=" "+Date.prototype.toUTCString.call(t)),C(t)&&(b=" "+c(t)),0===s.length&&(!g||0==t.length))return x[0]+b+x[1];if(r<0)return E(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var _;return _=g?p(e,t,r,y,s):s.map(function(n){return f(e,t,r,y,n,g)}),e.seen.pop(),h(_,b,x)}function l(e,t){if(_(t))return e.stylize("undefined","undefined");if(v(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return g(t)?e.stylize(""+t,"number"):y(t)?e.stylize(""+t,"boolean"):m(t)?e.stylize("null","null"):void 0}function c(e){return"["+Error.prototype.toString.call(e)+"]"}function p(e,t,n,r,i){for(var a=[],s=0,o=t.length;s-1&&(o=a?o.split("\n").map(function(e){return"  "+e}).join("\n").substr(2):"\n"+o.split("\n").map(function(e){return"   "+e}).join("\n"))):o=e.stylize("[Circular]","special")),_(s)){if(a&&i.match(/^\d+$/))return o;s=JSON.stringify(""+i),s.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(s=s.substr(1,s.length-2),s=e.stylize(s,"name")):(s=s.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),s=e.stylize(s,"string"))}return s+": "+o}function h(e,t,n){var r=0;return e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0)>60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n  ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function d(e){return Array.isArray(e)}function y(e){return"boolean"==typeof e}function m(e){return null===e}function b(e){return null==e}function g(e){return"number"==typeof e}function v(e){return"string"==typeof e}function x(e){return"symbol"==typeof e}function _(e){return void 0===e}function E(e){return A(e)&&"[object RegExp]"===k(e)}function A(e){return"object"==typeof e&&null!==e}function D(e){return A(e)&&"[object Date]"===k(e)}function C(e){return A(e)&&("[object Error]"===k(e)||e instanceof Error)}function S(e){return"function"==typeof e}function w(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function k(e){return Object.prototype.toString.call(e)}function F(e){return e<10?"0"+e.toString(10):e.toString(10)}function T(){var e=new Date,t=[F(e.getHours()),F(e.getMinutes()),F(e.getSeconds())].join(":");return[e.getDate(),I[e.getMonth()],t].join(" ")}function P(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var j=/%[sdj%]/g;n.format=function(e){if(!v(e)){for(var t=[],n=0;n=a)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(e){return"[Circular]"}default:return e}}),o=r[n];n1&&void 0!==arguments[1]?arguments[1]:{};return t.filename=e,T(m.default.readFileSync(e,"utf8"),t)}n.__esModule=!0,n.transformFromAst=n.transform=n.analyse=n.Pipeline=n.OptionManager=n.traverse=n.types=n.messages=n.util=n.version=n.template=n.buildExternalHelpers=n.options=n.File=void 0;var u=e("../transformation/file");Object.defineProperty(n,"File",{enumerable:!0,get:function(){return i(u).default}});var l=e("../transformation/file/options/config");Object.defineProperty(n,"options",{enumerable:!0,get:function(){return i(l).default}});var c=e("../tools/build-external-helpers");Object.defineProperty(n,"buildExternalHelpers",{enumerable:!0,get:function(){return i(c).default}});var p=e("babel-template");Object.defineProperty(n,"template",{enumerable:!0,get:function(){return i(p).default}});var f=e("../../package");Object.defineProperty(n,"version",{enumerable:!0,get:function(){return f.version}}),n.Plugin=a,n.transformFile=s,n.transformFileSync=o;var h=e("lodash/isFunction"),d=i(h),y=e("fs"),m=i(y),b=e("../util"),g=r(b),v=e("babel-messages"),x=r(v),_=e("babel-types"),E=r(_),A=e("babel-traverse"),D=i(A),C=e("../transformation/file/options/option-manager"),S=i(C),w=e("../transformation/pipeline"),k=i(w);n.util=g,n.messages=x,n.types=E,n.traverse=D.default,n.OptionManager=S.default,n.Pipeline=k.default;var F=new k.default,T=(n.analyse=F.analyse.bind(F),n.transform=F.transform.bind(F));n.transformFromAst=F.transformFromAst.bind(F)},{"../../package":528,"../tools/build-external-helpers":44,"../transformation/file":45,"../transformation/file/options/config":49,"../transformation/file/options/option-manager":51,"../transformation/pipeline":56,"../util":59,"babel-messages":99,"babel-template":225,"babel-traverse":229,"babel-types":265,fs:1,"lodash/isFunction":480}],40:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/core-js/get-iterator"),a=r(i);n.default=function(e,t){if(e&&t)return(0,o.default)(e,t,function(e,t){if(t&&Array.isArray(e)){for(var n=t.slice(0),r=e,i=Array.isArray(r),s=0,r=i?r:(0,a.default)(r);;){var o;if(i){if(s>=r.length)break;o=r[s++]}else{if(s=r.next(),s.done)break;o=s.value}var u=o;n.indexOf(u)<0&&n.push(u)}return n}})};var s=e("lodash/mergeWith"),o=r(s);t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"lodash/mergeWith":495}],41:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}n.__esModule=!0,n.default=function(e,t,n){if(e){if("Program"===e.type)return a.file(e,t||[],n||[]);if("File"===e.type)return e}throw new Error("Not a valid ast?")};var i=e("babel-types"),a=r(i);t.exports=n.default},{"babel-types":265}],42:[function(e,t,n){(function(r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/typeof"),s=i(a);n.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:r.cwd();if("object"===(void 0===u.default?"undefined":(0,s.default)(u.default)))return null;var n=p[t];if(!n){n=new u.default;var i=c.default.join(t,".babelrc");n.id=i,n.filename=i,n.paths=u.default._nodeModulePaths(t),p[t]=n}try{return u.default._resolveFilename(e,n)}catch(e){return null}};var o=e("module"),u=i(o),l=e("path"),c=i(l),p={};t.exports=n.default}).call(this,e("_process"))},{_process:13,"babel-runtime/helpers/typeof":118,module:1,path:12}],43:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/core-js/map"),a=r(i),s=e("babel-runtime/helpers/classCallCheck"),o=r(s),u=e("babel-runtime/helpers/possibleConstructorReturn"),l=r(u),c=e("babel-runtime/helpers/inherits"),p=r(c),f=function(e){function t(){(0,o.default)(this,t);var n=(0,l.default)(this,e.call(this));return n.dynamicData={},n}return(0,p.default)(t,e),t.prototype.setDynamic=function(e,t){this.dynamicData[e]=t},t.prototype.get=function(t){if(this.has(t))return e.prototype.get.call(this,t);if(Object.prototype.hasOwnProperty.call(this.dynamicData,t)){var n=this.dynamicData[t]();return this.set(t,n),n}},t}(a.default);n.default=f,t.exports=n.default},{"babel-runtime/core-js/map":102,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117}],44:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(e,t){var n=[],r=x.functionExpression(null,[x.identifier("global")],x.blockStatement(n)),i=x.program([x.expressionStatement(x.callExpression(r,[c.get("selfGlobal")]))]);return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.assignmentExpression("=",x.memberExpression(x.identifier("global"),e),x.objectExpression([])))])),t(n),i}function s(e,t){var n=[];return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.identifier("global"))])),t(n),x.program([_({FACTORY_PARAMETERS:x.identifier("global"),BROWSER_ARGUMENTS:x.assignmentExpression("=",x.memberExpression(x.identifier("root"),e),x.objectExpression([])),COMMON_ARGUMENTS:x.identifier("exports"),AMD_ARGUMENTS:x.arrayExpression([x.stringLiteral("exports")]),FACTORY_BODY:n,UMD_ROOT:x.identifier("this")})])}function o(e,t){var n=[];return n.push(x.variableDeclaration("var",[x.variableDeclarator(e,x.objectExpression([]))])),t(n),n.push(x.expressionStatement(e)),x.program(n)}function u(e,t,n){(0,g.default)(c.list,function(r){if(!(n&&n.indexOf(r)<0)){var i=x.identifier(r);e.push(x.expressionStatement(x.assignmentExpression("=",x.memberExpression(t,i),c.get(r))))}})}n.__esModule=!0,n.default=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"global",n=x.identifier("babelHelpers"),r=function(t){return u(t,n,e)},i=void 0,l={global:a,umd:s,var:o}[t];if(!l)throw new Error(d.get("unsupportedOutputType",t));return i=l(n,r),(0,f.default)(i).code};var l=e("babel-helpers"),c=i(l),p=e("babel-generator"),f=r(p),h=e("babel-messages"),d=i(h),y=e("babel-template"),m=r(y),b=e("lodash/each"),g=r(b),v=e("babel-types"),x=i(v),_=(0,m.default)('\n  (function (root, factory) {\n    if (typeof define === "function" && define.amd) {\n      define(AMD_ARGUMENTS, factory);\n    } else if (typeof exports === "object") {\n      factory(COMMON_ARGUMENTS);\n    } else {\n      factory(BROWSER_ARGUMENTS);\n    }\n  })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n    FACTORY_BODY\n  });\n');t.exports=n.default},{"babel-generator":85,"babel-helpers":98,"babel-messages":99,"babel-template":225,"babel-types":265,"lodash/each":461}],45:[function(e,t,n){(function(t){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0,n.File=void 0;var a=e("babel-runtime/helpers/typeof"),s=i(a),o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("babel-runtime/core-js/object/create"),c=i(l),p=e("babel-runtime/core-js/object/assign"),f=i(p),h=e("babel-runtime/helpers/classCallCheck"),d=i(h),y=e("babel-runtime/helpers/possibleConstructorReturn"),m=i(y),b=e("babel-runtime/helpers/inherits"),g=i(b),v=e("babel-helpers"),x=i(v),_=e("./metadata"),E=r(_),A=e("convert-source-map"),D=i(A),C=e("./options/option-manager"),S=i(C),w=e("../plugin-pass"),k=i(w),F=e("babel-traverse"),T=i(F),P=e("source-map"),j=i(P),B=e("babel-generator"),O=i(B),I=e("babel-code-frame"),N=i(I),L=e("lodash/defaults"),M=i(L),R=e("./logger"),U=i(R),V=e("../../store"),G=i(V),q=e("babylon"),K=e("../../util"),X=r(K),J=e("path"),W=i(J),z=e("babel-types"),Y=r(z),H=e("../../helpers/resolve"),$=i(H),Q=e("../internal-plugins/block-hoist"),Z=i(Q),ee=e("../internal-plugins/shadow-functions"),te=i(ee),ne=/^#!.*/,re=[[Z.default],[te.default]],ie={enter:function(e,t){var n=e.node.loc;n&&(t.loc=n,e.stop())}},ae=function(n){function r(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];(0,d.default)(this,r);var i=(0,m.default)(this,n.call(this));return i.pipeline=t,i.log=new U.default(i,e.filename||"unknown"),i.opts=i.initOptions(e),i.parserOpts={sourceType:i.opts.sourceType,sourceFileName:i.opts.filename,plugins:[]},i.pluginVisitors=[],i.pluginPasses=[],i.buildPluginsForOptions(i.opts),i.opts.passPerPreset&&(i.perPresetOpts=[],i.opts.presets.forEach(function(e){var t=(0,f.default)((0,c.default)(i.opts),e);i.perPresetOpts.push(t),i.buildPluginsForOptions(t)})),i.metadata={usedHelpers:[],marked:[],modules:{imports:[],exports:{exported:[],specifiers:[]}}},i.dynamicImportTypes={},i.dynamicImportIds={},i.dynamicImports=[],i.declarations={},i.usedHelpers={},i.path=null,i.ast={},i.code="",i.shebang="",i.hub=new F.Hub(i),i}return(0,g.default)(r,n),r.prototype.getMetadata=function(){for(var e=!1,t=this.ast.program.body,n=Array.isArray(t),r=0,t=n?t:(0,u.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(Y.isModuleDeclaration(a)){e=!0;break}}e&&this.path.traverse(E,this)},r.prototype.initOptions=function(e){e=new S.default(this.log,this.pipeline).init(e),e.inputSourceMap&&(e.sourceMaps=!0),e.moduleId&&(e.moduleIds=!0),e.basename=W.default.basename(e.filename,W.default.extname(e.filename)),e.ignore=X.arrayify(e.ignore,X.regexify),e.only&&(e.only=X.arrayify(e.only,X.regexify)),(0,M.default)(e,{moduleRoot:e.sourceRoot}),(0,M.default)(e,{sourceRoot:e.moduleRoot}),(0,M.default)(e,{filenameRelative:e.filename});var t=W.default.basename(e.filenameRelative);return(0,M.default)(e,{sourceFileName:t,sourceMapTarget:t}),e},r.prototype.buildPluginsForOptions=function(e){if(Array.isArray(e.plugins)){for(var t=e.plugins.concat(re),n=[],r=[],i=t,a=Array.isArray(i),s=0,i=a?i:(0,u.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var l=o,c=l[0],p=l[1];n.push(c.visitor),r.push(new k.default(this,c,p)),c.manipulateOptions&&c.manipulateOptions(e,this.parserOpts,this)}this.pluginVisitors.push(n),this.pluginPasses.push(r)}},r.prototype.getModuleName=function(){var e=this.opts;if(!e.moduleIds)return null;if(null!=e.moduleId&&!e.getModuleId)return e.moduleId;var t=e.filenameRelative,n="";if(null!=e.moduleRoot&&(n=e.moduleRoot+"/"),!e.filenameRelative)return n+e.filename.replace(/^\//,"");if(null!=e.sourceRoot){var r=new RegExp("^"+e.sourceRoot+"/?");t=t.replace(r,"")}return t=t.replace(/\.(\w*?)$/,""),n+=t,n=n.replace(/\\/g,"/"),e.getModuleId?e.getModuleId(n)||n:n},r.prototype.resolveModuleSource=function e(t){var e=this.opts.resolveModuleSource;return e&&(t=e(t,this.opts.filename)),t},r.prototype.addImport=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t,r=e+":"+t,i=this.dynamicImportIds[r];if(!i){e=this.resolveModuleSource(e),i=this.dynamicImportIds[r]=this.scope.generateUidIdentifier(n);var a=[];"*"===t?a.push(Y.importNamespaceSpecifier(i)):"default"===t?a.push(Y.importDefaultSpecifier(i)):a.push(Y.importSpecifier(i,Y.identifier(t)));var s=Y.importDeclaration(a,Y.stringLiteral(e));s._blockHoist=3,this.path.unshiftContainer("body",s)}return i},r.prototype.addHelper=function(e){var t=this.declarations[e];if(t)return t;this.usedHelpers[e]||(this.metadata.usedHelpers.push(e),this.usedHelpers[e]=!0);var n=this.get("helperGenerator"),r=this.get("helpersNamespace");if(n){var i=n(e);if(i)return i}else if(r)return Y.memberExpression(r,Y.identifier(e));var a=(0,x.default)(e),s=this.declarations[e]=this.scope.generateUidIdentifier(e);return Y.isFunctionExpression(a)&&!a.id?(a.body._compact=!0,a._generated=!0,a.id=s,a.type="FunctionDeclaration",this.path.unshiftContainer("body",a)):(a._compact=!0,this.scope.push({id:s,init:a,unique:!0})),s},r.prototype.addTemplateObject=function(e,t,n){var r=n.elements.map(function(e){return e.value}),i=e+"_"+n.elements.length+"_"+r.join(","),a=this.declarations[i];if(a)return a;var s=this.declarations[i]=this.scope.generateUidIdentifier("templateObject"),o=this.addHelper(e),u=Y.callExpression(o,[t,n]);return u._compact=!0,this.scope.push({id:s,init:u,_blockHoist:1.9}),s},r.prototype.buildCodeFrameError=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:SyntaxError,r=e&&(e.loc||e._loc),i=new n(t);return r?i.loc=r.start:((0,T.default)(e,ie,this.scope,i),i.message+=" (This is an error on an internal node. Probably an internal error",i.loc&&(i.message+=". Location has been estimated."),i.message+=")"),i},r.prototype.mergeSourceMap=function(e){var t=this.opts.inputSourceMap;if(!t)return e;var n=function(){var n=new j.default.SourceMapConsumer(t),r=new j.default.SourceMapConsumer(e),i=new j.default.SourceMapGenerator({file:n.file,sourceRoot:n.sourceRoot}),a=r.sources[0];n.eachMapping(function(e){var t=r.generatedPositionFor({line:e.generatedLine,column:e.generatedColumn,source:a});null!=t.column&&i.addMapping({source:e.source,original:null==e.source?null:{line:e.originalLine,column:e.originalColumn},generated:t})});var s=i.toJSON();return t.mappings=s.mappings,{v:t}}();return"object"===(void 0===n?"undefined":(0,s.default)(n))?n.v:void 0},r.prototype.parse=function(n){var r=q.parse,i=this.opts.parserOpts;if(i&&(i=(0,f.default)({},this.parserOpts,i),i.parser)){if("string"==typeof i.parser){var a=W.default.dirname(this.opts.filename)||t.cwd(),s=(0,$.default)(i.parser,a);if(!s)throw new Error("Couldn't find parser "+i.parser+' with "parse" method relative to directory '+a);r=e(s).parse}else r=i.parser;i.parser={parse:function(e){return(0,q.parse)(e,i)}}}this.log.debug("Parse start");var o=r(n,i||this.parserOpts);return this.log.debug("Parse stop"),o},r.prototype._addAst=function(e){this.path=F.NodePath.get({hub:this.hub,parentPath:null,parent:e,container:e,key:"program"}).setContext(),this.scope=this.path.scope,this.ast=e,this.getMetadata()},r.prototype.addAst=function(e){this.log.debug("Start set AST"),this._addAst(e),this.log.debug("End set AST")},r.prototype.transform=function(){for(var e=0;e=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a,o=s.plugin,l=o[e];l&&l.call(s,this)}},r.prototype.parseInputSourceMap=function(e){var t=this.opts;if(t.inputSourceMap!==!1){var n=D.default.fromSource(e);n&&(t.inputSourceMap=n.toObject(),e=D.default.removeComments(e))}return e},r.prototype.parseShebang=function(){var e=ne.exec(this.code);e&&(this.shebang=e[0],this.code=this.code.replace(ne,""))},r.prototype.makeResult=function(e){var t=e.code,n=e.map,r=e.ast,i=e.ignored,a={metadata:null,options:this.opts,ignored:!!i,code:null,ast:null,map:n||null};return this.opts.code&&(a.code=t),this.opts.ast&&(a.ast=r),this.opts.metadata&&(a.metadata=this.metadata),a},r.prototype.generate=function(){var n=this.opts,r=this.ast,i={ast:r};if(!n.code)return this.makeResult(i);var a=O.default;if(n.generatorOpts.generator&&(a=n.generatorOpts.generator,"string"==typeof a)){var s=W.default.dirname(this.opts.filename)||t.cwd(),o=(0,$.default)(a,s);if(!o)throw new Error("Couldn't find generator "+a+' with "print" method relative to directory '+s);a=e(o).print}this.log.debug("Generation start");var u=a(r,n.generatorOpts?(0,f.default)(n,n.generatorOpts):n,this.code);return i.code=u.code,i.map=u.map,this.log.debug("Generation end"),this.shebang&&(i.code=this.shebang+"\n"+i.code),i.map&&(i.map=this.mergeSourceMap(i.map)),"inline"!==n.sourceMaps&&"both"!==n.sourceMaps||(i.code+="\n"+D.default.fromObject(i.map).toComment()),"inline"===n.sourceMaps&&(i.map=null),this.makeResult(i)},r}(G.default);n.default=ae,n.File=ae}).call(this,e("_process"))},{"../../helpers/resolve":42,"../../store":43,"../../util":59,"../internal-plugins/block-hoist":54,"../internal-plugins/shadow-functions":55,"../plugin-pass":57,"./logger":46,"./metadata":47,"./options/option-manager":51,_process:13,"babel-code-frame":60,"babel-generator":85,"babel-helpers":98,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/object/assign":104,"babel-runtime/core-js/object/create":105,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"babel-runtime/helpers/typeof":118,"babel-traverse":229,"babel-types":265,babylon:274,"convert-source-map":275,"lodash/defaults":460,path:12,"source-map":527}],46:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("debug/node"),o=r(s),u=(0,o.default)("babel:verbose"),l=(0,o.default)("babel"),c=[],p=function(){function e(t,n){(0,a.default)(this,e),this.filename=n,this.file=t}return e.prototype._buildMessage=function(e){var t="[BABEL] "+this.filename;return e&&(t+=": "+e),t},e.prototype.warn=function(e){console.warn(this._buildMessage(e))},e.prototype.error=function(e){throw new(arguments.length>1&&void 0!==arguments[1]?arguments[1]:Error)(this._buildMessage(e))},e.prototype.deprecate=function(e){this.file.opts&&this.file.opts.suppressDeprecationMessages||(e=this._buildMessage(e),c.indexOf(e)>=0||(c.push(e),console.error(e)))},e.prototype.verbose=function(e){u.enabled&&u(this._buildMessage(e))},e.prototype.debug=function(e){l.enabled&&l(this._buildMessage(e))},e.prototype.deopt=function(e,t){this.debug(t)},e}();n.default=p,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114,"debug/node":276}],47:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=e.node,r=n.source?n.source.value:null,i=t.metadata.modules.exports,a=e.get("declaration");if(a.isStatement()){var s=a.getBindingIdentifiers();for(var o in s)i.exported.push(o),i.specifiers.push({kind:"local",local:o,exported:e.isExportDefaultDeclaration()?"default":o})}if(e.isExportNamedDeclaration()&&n.specifiers)for(var l=n.specifiers,p=Array.isArray(l),f=0,l=p?l:(0,u.default)(l);;){var h;if(p){if(f>=l.length)break;h=l[f++]}else{if(f=l.next(),f.done)break;h=f.value}var d=h,y=d.exported.name;i.exported.push(y),c.isExportDefaultSpecifier(d)&&i.specifiers.push({kind:"external",local:y,exported:y,source:r}),c.isExportNamespaceSpecifier(d)&&i.specifiers.push({kind:"external-namespace",exported:y,source:r});var m=d.local;m&&(r&&i.specifiers.push({kind:"external",local:m.name,exported:y,source:r}),r||i.specifiers.push({kind:"local",local:m.name,exported:y}))}e.isExportAllDeclaration()&&i.specifiers.push({kind:"external-all",source:r})}function s(e){e.skip()}n.__esModule=!0,n.ImportDeclaration=n.ModuleDeclaration=void 0;var o=e("babel-runtime/core-js/get-iterator"),u=i(o);n.ExportDeclaration=a,n.Scope=s;var l=e("babel-types"),c=r(l);n.ModuleDeclaration={enter:function(e,t){var n=e.node;n.source&&(n.source.value=t.resolveModuleSource(n.source.value))}},n.ImportDeclaration={exit:function(e,t){var n=e.node,r=[],i=[];t.metadata.modules.imports.push({source:n.source.value,imported:i,specifiers:r});for(var a=e.get("specifiers"),s=Array.isArray(a),o=0,a=s?a:(0,u.default)(a);;){var l;if(s){if(o>=a.length)break;l=a[o++]}else{if(o=a.next(),o.done)break;l=o.value}var c=l,p=c.node.local.name;if(c.isImportDefaultSpecifier()&&(i.push("default"),r.push({kind:"named",imported:"default",local:p})),c.isImportSpecifier()){var f=c.node.imported.name;i.push(f),r.push({kind:"named",imported:f,local:p})}c.isImportNamespaceSpecifier()&&(i.push("*"),r.push({kind:"namespace",local:p}))}}}},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],48:[function(e,t,n){(function(r){"use strict";function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=_[e];return null==t?_[e]=x.default.existsSync(e):t}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1],n=e.filename,r=new S(t);return e.babelrc!==!1&&r.findConfigs(n),r.mergeConfig({options:e,alias:"base",dirname:n&&g.default.dirname(n)}),r.configs}n.__esModule=!0;var o=e("babel-runtime/core-js/object/assign"),u=i(o),l=e("babel-runtime/helpers/classCallCheck"),c=i(l);n.default=s;var p=e("../../../helpers/resolve"),f=i(p),h=e("json5"),d=i(h),y=e("path-is-absolute"),m=i(y),b=e("path"),g=i(b),v=e("fs"),x=i(v),_={},E={},A=".babelignore",D=".babelrc",C="package.json",S=function(){function e(t){(0,c.default)(this,e),this.resolvedConfigs=[],this.configs=[],this.log=t}return e.prototype.findConfigs=function(e){if(e){(0,m.default)(e)||(e=g.default.join(r.cwd(),e));for(var t=!1,n=!1;e!==(e=g.default.dirname(e));){if(!t){var i=g.default.join(e,D);a(i)&&(this.addConfig(i),t=!0);var s=g.default.join(e,C);!t&&a(s)&&(t=this.addConfig(s,"babel",JSON))}if(!n){var o=g.default.join(e,A);a(o)&&(this.addIgnoreConfig(o),n=!0)}if(n&&t)return}}},e.prototype.addIgnoreConfig=function(e){var t=x.default.readFileSync(e,"utf8"),n=t.split("\n");n=n.map(function(e){return e.replace(/#(.*?)$/,"").trim()}).filter(function(e){return!!e}),n.length&&this.mergeConfig({options:{ignore:n},alias:e,dirname:g.default.dirname(e)})},e.prototype.addConfig=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d.default;if(this.resolvedConfigs.indexOf(e)>=0)return!1;this.resolvedConfigs.push(e);var r=x.default.readFileSync(e,"utf8"),i=void 0;try{i=E[r]=E[r]||n.parse(r),t&&(i=i[t])}catch(t){throw t.message=e+": Error while parsing JSON - "+t.message,t}return this.mergeConfig({options:i,alias:e,dirname:g.default.dirname(e)}),!!i},e.prototype.mergeConfig=function(e){var t=e.options,n=e.alias,i=e.loc,a=e.dirname;if(!t)return!1
+;if(t=(0,u.default)({},t),a=a||r.cwd(),i=i||n,t.extends){var s=(0,f.default)(t.extends,a);s?this.addConfig(s):this.log&&this.log.error("Couldn't resolve extends clause of "+t.extends+" in "+n),delete t.extends}this.configs.push({options:t,alias:n,loc:i,dirname:a});var o=void 0,l=r.env.BABEL_ENV||r.env.NODE_ENV||"development";t.env&&(o=t.env[l],delete t.env),this.mergeConfig({options:o,alias:n+".env."+l,dirname:a})},e}();t.exports=n.default}).call(this,e("_process"))},{"../../../helpers/resolve":42,_process:13,"babel-runtime/core-js/object/assign":104,"babel-runtime/helpers/classCallCheck":114,fs:1,json5:281,path:12,"path-is-absolute":515}],49:[function(e,t,n){"use strict";t.exports={filename:{type:"filename",description:"filename to use when reading from stdin - this will be used in source-maps, errors etc",default:"unknown",shorthand:"f"},filenameRelative:{hidden:!0,type:"string"},inputSourceMap:{hidden:!0},env:{hidden:!0,default:{}},mode:{description:"",hidden:!0},retainLines:{type:"boolean",default:!1,description:"retain line numbers - will result in really ugly code"},highlightCode:{description:"enable/disable ANSI syntax highlighting of code frames (on by default)",type:"boolean",default:!0},suppressDeprecationMessages:{type:"boolean",default:!1,hidden:!0},presets:{type:"list",description:"",default:[]},plugins:{type:"list",default:[],description:""},ignore:{type:"list",description:"list of glob paths to **not** compile",default:[]},only:{type:"list",description:"list of glob paths to **only** compile"},code:{hidden:!0,default:!0,type:"boolean"},metadata:{hidden:!0,default:!0,type:"boolean"},ast:{hidden:!0,default:!0,type:"boolean"},extends:{type:"string",hidden:!0},comments:{type:"boolean",default:!0,description:"write comments to generated output (true by default)"},shouldPrintComment:{hidden:!0,description:"optional callback to control whether a comment should be inserted, when this is used the comments option is ignored"},wrapPluginVisitorMethod:{hidden:!0,description:"optional callback to wrap all visitor methods"},compact:{type:"booleanString",default:"auto",description:"do not include superfluous whitespace characters and line terminators [true|false|auto]"},minified:{type:"boolean",default:!1,description:"save as much bytes when printing [true|false]"},sourceMap:{alias:"sourceMaps",hidden:!0},sourceMaps:{type:"booleanString",description:"[true|false|inline]",default:!1,shorthand:"s"},sourceMapTarget:{type:"string",description:"set `file` on returned source map"},sourceFileName:{type:"string",description:"set `sources[0]` on returned source map"},sourceRoot:{type:"filename",description:"the root from which all sources are relative"},babelrc:{description:"Whether or not to look up .babelrc and .babelignore files",type:"boolean",default:!0},sourceType:{description:"",default:"module"},auxiliaryCommentBefore:{type:"string",description:"print a comment before any injected non-user code"},auxiliaryCommentAfter:{type:"string",description:"print a comment after any injected non-user code"},resolveModuleSource:{hidden:!0},getModuleId:{hidden:!0},moduleRoot:{type:"filename",description:"optional prefix for the AMD module formatter that will be prepend to the filename on module definitions"},moduleIds:{type:"boolean",default:!1,shorthand:"M",description:"insert an explicit id for modules"},moduleId:{description:"specify a custom name for module ids",type:"string"},passPerPreset:{description:"Whether to spawn a traversal pass per a preset. By default all presets are merged.",type:"boolean",default:!1,hidden:!0},parserOpts:{description:"Options to pass into the parser, or to change parsers (parserOpts.parser)",default:!1},generatorOpts:{description:"Options to pass into the generator, or to change generators (generatorOpts.generator)",default:!1}}},{}],50:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};for(var t in e){var n=e[t];if(null!=n){var r=l.default[t];if(r&&r.alias&&(r=l.default[r.alias]),r){var i=o[r.type];i&&(n=i(n)),e[t]=n}}}return e}n.__esModule=!0,n.config=void 0,n.normaliseOptions=a;var s=e("./parsers"),o=i(s),u=e("./config"),l=r(u);n.config=l.default},{"./config":49,"./parsers":52}],51:[function(e,t,n){(function(r){"use strict";function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function a(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var s=e("babel-runtime/helpers/objectWithoutProperties"),o=a(s),u=e("babel-runtime/core-js/json/stringify"),l=a(u),c=e("babel-runtime/core-js/object/assign"),p=a(c),f=e("babel-runtime/core-js/get-iterator"),h=a(f),d=e("babel-runtime/helpers/typeof"),y=a(d),m=e("babel-runtime/helpers/classCallCheck"),b=a(m),g=e("../../../api/node"),v=i(g),x=e("../../plugin"),_=a(x),E=e("babel-messages"),A=i(E),D=e("./index"),C=e("../../../helpers/resolve"),S=a(C),w=e("lodash/cloneDeepWith"),k=a(w),F=e("lodash/clone"),T=a(F),P=e("../../../helpers/merge"),j=a(P),B=e("./config"),O=a(B),I=e("./removed"),N=a(I),L=e("./build-config-chain"),M=a(L),R=e("path"),U=a(R),V=function(){function t(e){(0,b.default)(this,t),this.resolvedConfigs=[],this.options=t.createBareOptions(),this.log=e}return t.memoisePluginContainer=function(e,n,r,i){for(var a=t.memoisedPlugins,s=Array.isArray(a),o=0,a=s?a:(0,h.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(l.container===e)return l.plugin}var c=void 0;if(c="function"==typeof e?e(v):e,"object"===(void 0===c?"undefined":(0,y.default)(c))){var p=new _.default(c,i);return t.memoisedPlugins.push({container:e,plugin:p}),p}throw new TypeError(A.get("pluginNotObject",n,r,void 0===c?"undefined":(0,y.default)(c))+n+r)},t.createBareOptions=function(){var e={};for(var t in O.default){var n=O.default[t];e[t]=(0,T.default)(n.default)}return e},t.normalisePlugin=function(e,n,r,i){if(e=e.__esModule?e.default:e,!(e instanceof _.default)){if("function"!=typeof e&&"object"!==(void 0===e?"undefined":(0,y.default)(e)))throw new TypeError(A.get("pluginNotFunction",n,r,void 0===e?"undefined":(0,y.default)(e)));e=t.memoisePluginContainer(e,n,r,i)}return e.init(n,r),e},t.normalisePlugins=function(n,r,i){return i.map(function(i,a){var s=void 0,o=void 0;if(!i)throw new TypeError("Falsy value found in plugins");Array.isArray(i)?(s=i[0],o=i[1]):s=i;var u="string"==typeof s?s:n+"$"+a;if("string"==typeof s){var l=(0,S.default)("babel-plugin-"+s,r)||(0,S.default)(s,r);if(!l)throw new ReferenceError(A.get("pluginUnknown",s,n,a,r));s=e(l)}return s=t.normalisePlugin(s,n,a,u),[s,o]})},t.prototype.mergeOptions=function(e){var n=this,i=e.options,a=e.extending,s=e.alias,o=e.loc,u=e.dirname;if(s=s||"foreign",i){("object"!==(void 0===i?"undefined":(0,y.default)(i))||Array.isArray(i))&&this.log.error("Invalid options type for "+s,TypeError);var l=(0,k.default)(i,function(e){if(e instanceof _.default)return e});u=u||r.cwd(),o=o||s;for(var c in l){if(!O.default[c]&&this.log)if(N.default[c])this.log.error("Using removed Babel 5 option: "+s+"."+c+" - "+N.default[c].message,ReferenceError);else{var f="Unknown option: "+s+"."+c+". Check out http://babeljs.io/docs/usage/options/ for more information about options.",h="A common cause of this error is the presence of a configuration options object without the corresponding preset name. Example:\n\nInvalid:\n  `{ presets: [{option: value}] }`\nValid:\n  `{ presets: [['presetName', {option: value}]] }`\n\nFor more detailed information on preset configuration, please see http://babeljs.io/docs/plugins/#pluginpresets-options.";this.log.error(f+"\n\n"+h,ReferenceError)}}(0,D.normaliseOptions)(l),l.plugins&&(l.plugins=t.normalisePlugins(o,u,l.plugins)),l.presets&&(l.passPerPreset?l.presets=this.resolvePresets(l.presets,u,function(e,t){n.mergeOptions({options:e,extending:e,alias:t,loc:t,dirname:u})}):(this.mergePresets(l.presets,u),delete l.presets)),i===a?(0,p.default)(a,l):(0,j.default)(a||this.options,l)}},t.prototype.mergePresets=function(e,t){var n=this;this.resolvePresets(e,t,function(e,t){n.mergeOptions({options:e,alias:t,loc:t,dirname:U.default.dirname(t||"")})})},t.prototype.resolvePresets=function(t,n,r){return t.map(function(t){var i=void 0;if(Array.isArray(t)){if(t.length>2)throw new Error("Unexpected extra options "+(0,l.default)(t.slice(2))+" passed to preset.");var a=t;t=a[0],i=a[1]}var s=void 0;try{if("string"==typeof t){if(s=(0,S.default)("babel-preset-"+t,n)||(0,S.default)(t,n),!s){var u=t.match(/^(@[^\/]+)\/(.+)$/);if(u){t=u[1]+"/babel-preset-"+u[2],s=(0,S.default)(t,n)}}if(!s)throw new Error("Couldn't find preset "+(0,l.default)(t)+" relative to directory "+(0,l.default)(n));t=e(s)}if("object"===(void 0===t?"undefined":(0,y.default)(t))&&t.__esModule)if(t.default)t=t.default;else{var c=t,p=(c.__esModule,(0,o.default)(c,["__esModule"]));t=p}if("object"===(void 0===t?"undefined":(0,y.default)(t))&&t.buildPreset&&(t=t.buildPreset),"function"!=typeof t&&void 0!==i)throw new Error("Options "+(0,l.default)(i)+" passed to "+(s||"a preset")+" which does not accept options.");if("function"==typeof t&&(t=t(v,i)),"object"!==(void 0===t?"undefined":(0,y.default)(t)))throw new Error("Unsupported preset format: "+t+".");r&&r(t,s)}catch(e){throw s&&(e.message+=" (While processing preset: "+(0,l.default)(s)+")"),e}return t})},t.prototype.normaliseOptions=function(){var e=this.options;for(var t in O.default){var n=O.default[t],r=e[t];!r&&n.optional||(n.alias?e[n.alias]=e[n.alias]||r:e[t]=r)}},t.prototype.init=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=(0,M.default)(e,this.log),n=Array.isArray(t),r=0,t=n?t:(0,h.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this.mergeOptions(a)}return this.normaliseOptions(e),this.options},t}();n.default=V,V.memoisedPlugins=[],t.exports=n.default}).call(this,e("_process"))},{"../../../api/node":39,"../../../helpers/merge":40,"../../../helpers/resolve":42,"../../plugin":58,"./build-config-chain":48,"./config":49,"./index":50,"./removed":53,_process:13,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/object/assign":104,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/objectWithoutProperties":116,"babel-runtime/helpers/typeof":118,"lodash/clone":455,"lodash/cloneDeepWith":457,path:12}],52:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return!!e}function s(e){return p.booleanify(e)}function o(e){return p.list(e)}n.__esModule=!0,n.filename=void 0,n.boolean=a,n.booleanString=s,n.list=o;var u=e("slash"),l=i(u),c=e("../../../util"),p=r(c);n.filename=l.default},{"../../../util":59,slash:516}],53:[function(e,t,n){"use strict";t.exports={auxiliaryComment:{message:"Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"},blacklist:{message:"Put the specific transforms you want in the `plugins` option"},breakConfig:{message:"This is not a necessary option in Babel 6"},experimental:{message:"Put the specific transforms you want in the `plugins` option"},externalHelpers:{message:"Use the `external-helpers` plugin instead. Check out http://babeljs.io/docs/plugins/external-helpers/"},extra:{message:""},jsxPragma:{message:"use the `pragma` option in the `react-jsx` plugin . Check out http://babeljs.io/docs/plugins/transform-react-jsx/"},loose:{message:"Specify the `loose` option for the relevant plugin you are using or use a preset that sets the option."},metadataUsedHelpers:{message:"Not required anymore as this is enabled by default"},modules:{message:"Use the corresponding module transform plugin in the `plugins` option. Check out http://babeljs.io/docs/plugins/#modules"},nonStandard:{message:"Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"},optional:{message:"Put the specific transforms you want in the `plugins` option"},sourceMapName:{message:"Use the `sourceMapTarget` option"},stage:{message:"Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"},whitelist:{message:"Put the specific transforms you want in the `plugins` option"}}},{}],54:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../plugin"),a=r(i),s=e("lodash/sortBy"),o=r(s);n.default=new a.default({name:"internal.blockHoist",visitor:{Block:{exit:function(e){for(var t=e.node,n=!1,r=0;r1&&void 0!==arguments[1]?arguments[1]:{};return t.code=!1,t.mode="lint",this.transform(e,t)},e.prototype.pretransform=function(e,t){var n=new p.default(t,this);return n.wrap(e,function(){return n.addCode(e),n.parseCode(e),n})},e.prototype.transform=function(e,t){var n=new p.default(t,this);return n.wrap(e,function(){return n.addCode(e),n.parseCode(e),n.transform()})},e.prototype.analyse=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];return t.code=!1,n&&(t.plugins=t.plugins||[],t.plugins.push(new l.default({visitor:n}))),this.transform(e,t).metadata},e.prototype.transformFromAst=function(e,t,n){e=(0,o.default)(e);var r=new p.default(n,this);return r.wrap(t,function(){return r.addCode(t),r.addAst(e),r.transform()})},e}();n.default=f,t.exports=n.default},{"../helpers/normalize-ast":41,"./file":45,"./plugin":58,"babel-runtime/helpers/classCallCheck":114}],57:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("babel-runtime/helpers/possibleConstructorReturn"),o=r(s),u=e("babel-runtime/helpers/inherits"),l=r(u),c=e("../store"),p=r(c),f=e("./file"),h=(r(f),function(e){function t(n,r){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};(0,a.default)(this,t);var s=(0,o.default)(this,e.call(this));return s.plugin=r,s.key=r.key,s.file=n,s.opts=i,s}return(0,l.default)(t,e),t.prototype.addHelper=function(){var e;return(e=this.file).addHelper.apply(e,arguments)},t.prototype.addImport=function(){var e;return(e=this.file).addImport.apply(e,arguments)},t.prototype.getModuleName=function(){var e;return(e=this.file).getModuleName.apply(e,arguments)},t.prototype.buildCodeFrameError=function(){var e;return(e=this.file).buildCodeFrameError.apply(e,arguments)},t}(p.default));n.default=h,t.exports=n.default},{"../store":43,"./file":45,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117}],58:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/core-js/get-iterator"),s=i(a),o=e("babel-runtime/helpers/classCallCheck"),u=i(o),l=e("babel-runtime/helpers/possibleConstructorReturn"),c=i(l),p=e("babel-runtime/helpers/inherits"),f=i(p),h=e("./file/options/option-manager"),d=i(h),y=e("babel-messages"),m=r(y),b=e("../store"),g=i(b),v=e("babel-traverse"),x=i(v),_=e("lodash/assign"),E=i(_),A=e("lodash/clone"),D=i(A),C=["enter","exit"],S=function(e){function t(n,r){(0,u.default)(this,t);var i=(0,c.default)(this,e.call(this));return i.initialized=!1,i.raw=(0,E.default)({},n),i.key=i.take("name")||r,i.manipulateOptions=i.take("manipulateOptions"),i.post=i.take("post"),i.pre=i.take("pre"),i.visitor=i.normaliseVisitor((0,D.default)(i.take("visitor"))||{}),i}return(0,f.default)(t,e),t.prototype.take=function(e){var t=this.raw[e];return delete this.raw[e],t},t.prototype.chain=function(e,t){if(!e[t])return this[t];if(!this[t])return e[t];var n=[e[t],this[t]];return function(){for(var e=void 0,t=arguments.length,r=Array(t),i=0;i=a.length)break;l=a[u++]}else{if(u=a.next(),u.done)break;l=u.value}var c=l;if(c){var p=c.apply(this,r);null!=p&&(e=p)}}return e}},t.prototype.maybeInherit=function(e){var t=this.take("inherits");t&&(t=d.default.normalisePlugin(t,e,"inherits"),this.manipulateOptions=this.chain(t,"manipulateOptions"),this.post=this.chain(t,"post"),this.pre=this.chain(t,"pre"),this.visitor=x.default.visitors.merge([t.visitor,this.visitor]))},t.prototype.init=function(e,t){if(!this.initialized){this.initialized=!0,this.maybeInherit(e);for(var n in this.raw)throw new Error(m.get("pluginInvalidProperty",e,t,n))}},t.prototype.normaliseVisitor=function(e){for(var t=C,n=Array.isArray(t),r=0,t=n?t:(0,s.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}if(e[i])throw new Error("Plugins aren't allowed to specify catch-all enter/exit handlers. Please target individual nodes.")}return x.default.explode(e),e},t}(g.default);n.default=S,t.exports=n.default},{"../store":43,"./file/options/option-manager":51,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"babel-traverse":229,"lodash/assign":453,"lodash/clone":455}],59:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e,t){var n=t||i.EXTENSIONS,r=F.default.extname(e);return(0,A.default)(n,r)}function a(e){return e?Array.isArray(e)?e:"string"==typeof e?e.split(","):[e]:[]}function s(e){if(!e)return new RegExp(/.^/);if(Array.isArray(e)&&(e=new RegExp(e.map(y.default).join("|"),"i")),"string"==typeof e){e=(0,P.default)(e),((0,b.default)(e,"./")||(0,b.default)(e,"*/"))&&(e=e.slice(2)),(0,b.default)(e,"**/")&&(e=e.slice(3));var t=_.default.makeRe(e,{nocase:!0});return new RegExp(t.source.slice(1,-1),"i")}if((0,w.default)(e))return e;throw new TypeError("illegal type for regexify")}function o(e,t){return e?(0,v.default)(e)?o([e],t):(0,C.default)(e)?o(a(e),t):Array.isArray(e)?(t&&(e=e.map(t)),e):[e]:[]}function u(e){return"true"===e||1==e||!("false"===e||0==e||!e)&&e}function l(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2];if(e=e.replace(/\\/g,"/"),n){for(var r=n,i=Array.isArray(r),a=0,r=i?r:(0,f.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}if(c(s,e))return!1}return!0}if(t.length)for(var o=t,u=Array.isArray(o),l=0,o=u?o:(0,f.default)(o);;){var p;if(u){if(l>=o.length)break;p=o[l++]}else{if(l=o.next(),l.done)break;p=l.value}var h=p;if(c(h,e))return!0}return!1}function c(e,t){return"function"==typeof e?e(t):e.test(t)}n.__esModule=!0,n.inspect=n.inherits=void 0;var p=e("babel-runtime/core-js/get-iterator"),f=r(p),h=e("util");Object.defineProperty(n,"inherits",{enumerable:!0,get:function(){return h.inherits}}),Object.defineProperty(n,"inspect",{enumerable:!0,get:function(){return h.inspect}}),n.canCompile=i,n.list=a,n.regexify=s,n.arrayify=o,n.booleanify=u,n.shouldIgnore=l;var d=e("lodash/escapeRegExp"),y=r(d),m=e("lodash/startsWith"),b=r(m),g=e("lodash/isBoolean"),v=r(g),x=e("minimatch"),_=r(x),E=e("lodash/includes"),A=r(E),D=e("lodash/isString"),C=r(D),S=e("lodash/isRegExp"),w=r(S),k=e("path"),F=r(k),T=e("slash"),P=r(T);i.EXTENSIONS=[".js",".jsx",".es6",".es"]},{"babel-runtime/core-js/get-iterator":100,"lodash/escapeRegExp":463,"lodash/includes":473,"lodash/isBoolean":478,"lodash/isRegExp":487,"lodash/isString":488,"lodash/startsWith":500,minimatch:511,path:12,slash:516,util:35}],60:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){return{keyword:e.cyan,capitalized:e.yellow,jsx_tag:e.yellow,punctuator:e.yellow,number:e.magenta,string:e.green,regex:e.magenta,comment:e.grey,invalid:e.white.bgRed.bold,gutter:e.grey,marker:e.red.bold}}function a(e){var t=e.slice(-2),n=t[0],r=t[1],i=u.default.matchToToken(e);if("name"===i.type){if(c.default.keyword.isReservedWordES6(i.value))return"keyword";if(d.test(i.value)&&("<"===r[n-1]||"3&&void 0!==arguments[3]?arguments[3]:{};n=Math.max(n,0);var a=r.highlightCode&&f.default.supportsColor||r.forceColor,o=f.default;r.forceColor&&(o=new f.default.constructor({enabled:!0}));var u=function(e,t){return a?e(t):t},l=i(o);a&&(e=s(l,e));var c=r.linesAbove||2,p=r.linesBelow||3,d=e.split(h),y=Math.max(t-(c+1),0),m=Math.min(d.length,t+p);t||n||(y=0,m=d.length);var b=String(m).length,g=d.slice(y,m).map(function(e,r){var i=y+1+r,a=(" "+i).slice(-b),s=" "+a+" | ";if(i===t){var o="";if(n){var c=e.slice(0,n-1).replace(/[^\t]/g," ");o=["\n ",u(l.gutter,s.replace(/\d/g," ")),c,u(l.marker,"^")].join("")}return[u(l.marker,">"),u(l.gutter,s),e,o].join("")}return" "+u(l.gutter,s)+e}).join("\n");return a?o.reset(g):g};var o=e("js-tokens"),u=r(o),l=e("esutils"),c=r(l),p=e("chalk"),f=r(p),h=/\r\n|[\n\r\u2028\u2029]/,d=/^[a-z][\w-]*$/i,y=/^[()\[\]{}]$/;t.exports=n.default},{chalk:61,esutils:72,"js-tokens":73}],61:[function(e,t,n){(function(n){"use strict";function r(e){this.enabled=e&&void 0!==e.enabled?e.enabled:p}function i(e){var t=function(){return a.apply(t,arguments)};return t._styles=e,t.enabled=this.enabled,t.__proto__=y,t}function a(){var e=arguments,t=e.length,n=0!==t&&String(arguments[0]);if(t>1)for(var r=1;r<]/g}},{}],66:[function(e,t,n){"use strict";var r=e("ansi-regex")();t.exports=function(e){return"string"==typeof e?e.replace(r,""):e}},{"ansi-regex":67}],67:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],68:[function(e,t,n){(function(e){"use strict";var n=e.argv,r=n.indexOf("--"),i=function(e){e="--"+e;var t=n.indexOf(e);return t!==-1&&(r===-1||t=48&&e<=55}function i(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&h.indexOf(e)>=0}function a(e){return 10===e||13===e||8232===e||8233===e}function s(e){return e<=65535?String.fromCharCode(e):String.fromCharCode(Math.floor((e-65536)/1024)+55296)+String.fromCharCode((e-65536)%1024+56320)}function o(e){return e<128?d[e]:f.NonAsciiIdentifierStart.test(s(e))}function u(e){return e<128?y[e]:f.NonAsciiIdentifierPart.test(s(e))}function l(e){return e<128?d[e]:p.NonAsciiIdentifierStart.test(s(e))}function c(e){return e<128?y[e]:p.NonAsciiIdentifierPart.test(s(e))}var p,f,h,d,y,m;for(f={
+NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/,NonAsciiIdentifierPart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19D9\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u2E2F\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099\u309A\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]/},p={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B2\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDE00-\uDE11\uDE13-\uDE2B\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDE00-\uDE2F\uDE44\uDE80-\uDEAA]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B2\u08E4-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58\u0C59\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D60-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA69D\uA69F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA7AD\uA7B0\uA7B1\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB5F\uAB64\uAB65\uABC0-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2D\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDD0-\uDDDA\uDE00-\uDE11\uDE13-\uDE37\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF01-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF98]|\uD809[\uDC00-\uDC6E]|[\uD80C\uD840-\uD868\uD86A-\uD86C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/},h=[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279],d=new Array(128),m=0;m<128;++m)d[m]=m>=97&&m<=122||m>=65&&m<=90||36===m||95===m;for(y=new Array(128),m=0;m<128;++m)y[m]=m>=97&&m<=122||m>=65&&m<=90||m>=48&&m<=57||36===m||95===m;t.exports={isDecimalDigit:e,isHexDigit:n,isOctalDigit:r,isWhiteSpace:i,isLineTerminator:a,isIdentifierStartES5:o,isIdentifierPartES5:u,isIdentifierStartES6:l,isIdentifierPartES6:c}}()},{}],71:[function(e,t,n){!function(){"use strict";function n(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"let":return!0;default:return!1}}function r(e,t){return!(!t&&"yield"===e)&&i(e,t)}function i(e,t){if(t&&n(e))return!0;switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}}function a(e,t){return"null"===e||"true"===e||"false"===e||r(e,t)}function s(e,t){return"null"===e||"true"===e||"false"===e||i(e,t)}function o(e){return"eval"===e||"arguments"===e}function u(e){var t,n,r;if(0===e.length)return!1;if(r=e.charCodeAt(0),!h.isIdentifierStartES5(r))return!1;for(t=1,n=e.length;t=n)return!1;if(i=e.charCodeAt(t),!(56320<=i&&i<=57343))return!1;r=l(r,i)}if(!a(r))return!1;a=h.isIdentifierPartES6}return!0}function p(e,t){return u(e)&&!a(e,t)}function f(e,t){return c(e)&&!s(e,t)}var h=e("./code");t.exports={isKeywordES5:r,isKeywordES6:i,isReservedWordES5:a,isReservedWordES6:s,isRestrictedWord:o,isIdentifierNameES5:u,isIdentifierNameES6:c,isIdentifierES5:p,isIdentifierES6:f}}()},{"./code":70}],72:[function(e,t,n){!function(){"use strict";n.ast=e("./ast"),n.code=e("./code"),n.keyword=e("./keyword")}()},{"./ast":69,"./code":70,"./keyword":71}],73:[function(e,t,n){t.exports=/((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g,t.exports.matchToToken=function(e){var t={type:"invalid",value:e[0]};return e[1]?(t.type="string",t.closed=!(!e[3]&&!e[4])):e[5]?t.type="comment":e[6]?(t.type="comment",t.closed=!!e[7]):e[8]?t.type="regex":e[9]?t.type="number":e[10]?t.type="name":e[11]?t.type="punctuator":e[12]&&(t.type="whitespace"),t}},{}],74:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=e("lodash/trimEnd"),o=r(s),u=/^[ \t]+$/,l=function(){function e(t){(0,a.default)(this,e),this._map=null,this._buf=[],this._last="",this._queue=[],this._position={line:1,column:0},this._sourcePosition={identifierName:null,line:null,column:null,filename:null},this._map=t}return e.prototype.get=function(){this._flush();var e=this._map,t={code:(0,o.default)(this._buf.join("")),map:null,rawMappings:e&&e.getRawMappings()};return e&&Object.defineProperty(t,"map",{configurable:!0,enumerable:!0,get:function(){return this.map=e.get()},set:function(e){Object.defineProperty(this,"map",{value:e,writable:!0})}}),t},e.prototype.append=function(e){this._flush();var t=this._sourcePosition,n=t.line,r=t.column,i=t.filename,a=t.identifierName;this._append(e,n,r,a,i)},e.prototype.queue=function(e){if("\n"===e)for(;this._queue.length>0&&u.test(this._queue[0][0]);)this._queue.shift();var t=this._sourcePosition,n=t.line,r=t.column,i=t.filename,a=t.identifierName;this._queue.unshift([e,n,r,a,i])},e.prototype._flush=function(){for(var e=void 0;e=this._queue.pop();)this._append.apply(this,e)},e.prototype._append=function(e,t,n,r,i){this._map&&"\n"!==e[0]&&this._map.mark(this._position.line,this._position.column,t,n,r,i),this._buf.push(e),this._last=e[e.length-1];for(var a=0;a0&&"\n"===this._queue[0][0]&&this._queue.shift()},e.prototype.removeLastSemicolon=function(){this._queue.length>0&&";"===this._queue[0][0]&&this._queue.shift()},e.prototype.endsWith=function(e){if(1===e.length){var t=void 0;if(this._queue.length>0){var n=this._queue[0][0];t=n[n.length-1]}else t=this._last;return t===e}var r=this._last+this._queue.reduce(function(e,t){return t[0]+e},"");return e.length<=r.length&&r.slice(-e.length)===e},e.prototype.hasContent=function(){return this._queue.length>0||!!this._last},e.prototype.source=function(e,t){if(!e||t){var n=t?t[e]:null;this._sourcePosition.identifierName=t&&t.identifierName||null,this._sourcePosition.line=n?n.line:null,this._sourcePosition.column=n?n.column:null,this._sourcePosition.filename=t&&t.filename||null}},e.prototype.withSource=function(e,t,n){if(!this._map)return n();var r=this._sourcePosition.line,i=this._sourcePosition.column,a=this._sourcePosition.filename,s=this._sourcePosition.identifierName;this.source(e,t),n(),this._sourcePosition.line=r,this._sourcePosition.column=i,this._sourcePosition.filename=a,this._sourcePosition.identifierName=s},e.prototype.getCurrentColumn=function(){var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=e.lastIndexOf("\n");return t===-1?this._position.column+e.length:e.length-1-t},e.prototype.getCurrentLine=function(){for(var e=this._queue.reduce(function(e,t){return t[0]+e},""),t=0,n=0;n")),this.space(),this.print(e.returnType,e)}function b(e){this.print(e.name,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.typeAnnotation,e)}function g(e){this.print(e.id,e),this.print(e.typeParameters,e)}function v(e){this.print(e.id,e),this.print(e.typeParameters,e),e.extends.length&&(this.space(),this.word("extends"),this.space(),this.printList(e.extends,e)),e.mixins&&e.mixins.length&&(this.space(),this.word("mixins"),this.space(),this.printList(e.mixins,e)),this.space(),this.print(e.body,e)}function x(e){"plus"===e.variance?this.token("+"):"minus"===e.variance&&this.token("-")}function _(e){this.word("interface"),this.space(),this._interfaceish(e)}function E(){this.space(),this.token("&"),this.space()}function A(e){this.printJoin(e.types,e,{separator:E})}function D(){this.word("mixed")}function C(){this.word("empty")}function S(e){this.token("?"),this.print(e.typeAnnotation,e)}function w(){this.word("number")}function k(){this.word("string")}function F(){this.word("this")}function T(e){this.token("["),this.printList(e.types,e),this.token("]")}function P(e){this.word("typeof"),this.space(),this.print(e.argument,e)}function j(e){this.word("type"),this.space(),this.print(e.id,e),this.print(e.typeParameters,e),this.space(),this.token("="),this.space(),this.print(e.right,e),this.semicolon()}function B(e){this.token(":"),this.space(),e.optional&&this.token("?"),this.print(e.typeAnnotation,e)}function O(e){this._variance(e),this.word(e.name),e.bound&&this.print(e.bound,e),e.default&&(this.space(),this.token("="),this.space(),this.print(e.default,e))}function I(e){this.token("<"),this.printList(e.params,e,{}),this.token(">")}function N(e){var t=this;e.exact?this.token("{|"):this.token("{");var n=e.properties.concat(e.callProperties,e.indexers);n.length&&(this.space(),this.printJoin(n,e,{addNewlines:function(e){if(e&&!n[0])return 1},indent:!0,statement:!0,iterator:function(){1!==n.length&&(t.format.flowCommaSeparator?t.token(","):t.semicolon(),t.space())}}),this.space()),e.exact?this.token("|}"):this.token("}")}function L(e){e.static&&(this.word("static"),this.space()),this.print(e.value,e)}function M(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.token("["),this.print(e.id,e),this.token(":"),this.space(),this.print(e.key,e),this.token("]"),this.token(":"),this.space(),this.print(e.value,e)}function R(e){e.static&&(this.word("static"),this.space()),this._variance(e),this.print(e.key,e),e.optional&&this.token("?"),this.token(":"),this.space(),this.print(e.value,e)}function U(e){this.print(e.qualification,e),this.token("."),this.print(e.id,e)}function V(){this.space(),this.token("|"),this.space()}function G(e){this.printJoin(e.types,e,{separator:V})}function q(e){this.token("("),this.print(e.expression,e),this.print(e.typeAnnotation,e),this.token(")")}function K(){this.word("void")}n.__esModule=!0,n.AnyTypeAnnotation=r,n.ArrayTypeAnnotation=i,n.BooleanTypeAnnotation=a,n.BooleanLiteralTypeAnnotation=s,n.NullLiteralTypeAnnotation=o,n.DeclareClass=u,n.DeclareFunction=l,n.DeclareInterface=c,n.DeclareModule=p,n.DeclareModuleExports=f,n.DeclareTypeAlias=h,n.DeclareVariable=d,n.ExistentialTypeParam=y,n.FunctionTypeAnnotation=m,n.FunctionTypeParam=b,n.InterfaceExtends=g,n._interfaceish=v,n._variance=x,n.InterfaceDeclaration=_,n.IntersectionTypeAnnotation=A,n.MixedTypeAnnotation=D,n.EmptyTypeAnnotation=C,n.NullableTypeAnnotation=S;var X=e("./types");Object.defineProperty(n,"NumericLiteralTypeAnnotation",{enumerable:!0,get:function(){return X.NumericLiteral}}),Object.defineProperty(n,"StringLiteralTypeAnnotation",{enumerable:!0,get:function(){return X.StringLiteral}}),n.NumberTypeAnnotation=w,n.StringTypeAnnotation=k,n.ThisTypeAnnotation=F,n.TupleTypeAnnotation=T,n.TypeofTypeAnnotation=P,n.TypeAlias=j,n.TypeAnnotation=B,n.TypeParameter=O,n.TypeParameterInstantiation=I,n.ObjectTypeAnnotation=N,n.ObjectTypeCallProperty=L,n.ObjectTypeIndexer=M,n.ObjectTypeProperty=R,n.QualifiedTypeIdentifier=U,n.UnionTypeAnnotation=G,n.TypeCastExpression=q,n.VoidTypeAnnotation=K,n.ClassImplements=g,n.GenericTypeAnnotation=g,n.TypeParameterDeclaration=I},{"./types":84}],79:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){this.print(e.name,e),e.value&&(this.token("="),this.print(e.value,e))}function a(e){this.word(e.name)}function s(e){this.print(e.namespace,e),this.token(":"),this.print(e.name,e)}function o(e){this.print(e.object,e),this.token("."),this.print(e.property,e)}function u(e){this.token("{"),this.token("..."),this.print(e.argument,e),this.token("}")}function l(e){this.token("{"),this.print(e.expression,e),this.token("}")}function c(e){this.token("{"),this.token("..."),this.print(e.expression,e),this.token("}")}function p(e){this.token(e.value)}function f(e){var t=e.openingElement;if(this.print(t,e),!t.selfClosing){this.indent();for(var n=e.children,r=Array.isArray(n),i=0,n=r?n:(0,g.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;this.print(s,e)}this.dedent(),this.print(e.closingElement,e)}}function h(){this.space()}function d(e){this.token("<"),this.print(e.name,e),e.attributes.length>0&&(this.space(),this.printJoin(e.attributes,e,{separator:h})),e.selfClosing?(this.space(),this.token("/>")):this.token(">")}function y(e){this.token("")}function m(){}n.__esModule=!0;var b=e("babel-runtime/core-js/get-iterator"),g=r(b);n.JSXAttribute=i,n.JSXIdentifier=a,n.JSXNamespacedName=s,n.JSXMemberExpression=o,n.JSXSpreadAttribute=u,n.JSXExpressionContainer=l,n.JSXSpreadChild=c,n.JSXText=p,n.JSXElement=f,n.JSXOpeningElement=d,n.JSXClosingElement=y,n.JSXEmptyExpression=m},{"babel-runtime/core-js/get-iterator":100}],80:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){var t=this;this.print(e.typeParameters,e),this.token("("),this.printList(e.params,e,{iterator:function(e){e.optional&&t.token("?"),t.print(e.typeAnnotation,e)}}),this.token(")"),e.returnType&&this.print(e.returnType,e)}function a(e){var t=e.kind,n=e.key;"method"!==t&&"init"!==t||e.generator&&this.token("*"),"get"!==t&&"set"!==t||(this.word(t),this.space()),e.async&&(this.word("async"),this.space()),e.computed?(this.token("["),this.print(n,e),this.token("]")):this.print(n,e),this._params(e),this.space(),this.print(e.body,e)}function s(e){e.async&&(this.word("async"),this.space()),this.word("function"),e.generator&&this.token("*"),e.id?(this.space(),this.print(e.id,e)):this.space(),this._params(e),this.space(),this.print(e.body,e)}function o(e){e.async&&(this.word("async"),this.space());var t=e.params[0];1===e.params.length&&c.isIdentifier(t)&&!u(e,t)?this.print(t,e):this._params(e),this.space(),this.token("=>"),this.space(),this.print(e.body,e)}function u(e,t){return e.typeParameters||e.returnType||t.typeAnnotation||t.optional||t.trailingComments}n.__esModule=!0,n.FunctionDeclaration=void 0,n._params=i,n._method=a,n.FunctionExpression=s,n.ArrowFunctionExpression=o;var l=e("babel-types"),c=r(l);n.FunctionDeclaration=s},{"babel-types":265}],81:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){this.print(e.imported,e),e.local&&e.local.name!==e.imported.name&&(this.space(),this.word("as"),this.space(),this.print(e.local,e))}function a(e){this.print(e.local,e)}function s(e){this.print(e.exported,e)}function o(e){this.print(e.local,e),e.exported&&e.local.name!==e.exported.name&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e))}function u(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.exported,e)}function l(e){this.word("export"),this.space(),this.token("*"),e.exported&&(this.space(),this.word("as"),this.space(),this.print(e.exported,e)),this.space(),this.word("from"),this.space(),this.print(e.source,e),this.semicolon()}function c(){this.word("export"),this.space(),f.apply(this,arguments)}function p(){this.word("export"),this.space(),this.word("default"),this.space(),f.apply(this,arguments)}function f(e){if(e.declaration){var t=e.declaration;this.print(t,e),m.isStatement(t)||this.semicolon()}else{"type"===e.exportKind&&(this.word("type"),this.space());for(var n=e.specifiers.slice(0),r=!1;;){var i=n[0];if(!m.isExportDefaultSpecifier(i)&&!m.isExportNamespaceSpecifier(i))break;r=!0,this.print(n.shift(),e),n.length&&(this.token(","),this.space())}(n.length||!n.length&&!r)&&(this.token("{"),n.length&&(this.space(),this.printList(n,e),this.space()),this.token("}")),e.source&&(this.space(),this.word("from"),this.space(),this.print(e.source,e)),this.semicolon()}}function h(e){this.word("import"),this.space(),"type"!==e.importKind&&"typeof"!==e.importKind||(this.word(e.importKind),this.space());var t=e.specifiers.slice(0);if(t&&t.length){for(;;){var n=t[0];if(!m.isImportDefaultSpecifier(n)&&!m.isImportNamespaceSpecifier(n))break;this.print(t.shift(),e),t.length&&(this.token(","),this.space())}t.length&&(this.token("{"),this.space(),this.printList(t,e),this.space(),this.token("}")),this.space(),this.word("from"),this.space()}this.print(e.source,e),this.semicolon()}function d(e){this.token("*"),this.space(),this.word("as"),this.space(),this.print(e.local,e)}n.__esModule=!0,n.ImportSpecifier=i,n.ImportDefaultSpecifier=a,n.ExportDefaultSpecifier=s,n.ExportSpecifier=o,n.ExportNamespaceSpecifier=u,n.ExportAllDeclaration=l,n.ExportNamedDeclaration=c,n.ExportDefaultDeclaration=p,n.ImportDeclaration=h,n.ImportNamespaceSpecifier=d;var y=e("babel-types"),m=r(y)},{"babel-types":265}],82:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){this.word("with"),this.space(),this.token("("),this.print(e.object,e),this.token(")"),this.printBlock(e)}function s(e){this.word("if"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.space();var t=e.alternate&&C.isIfStatement(o(e.consequent));t&&(this.token("{"),this.newline(),this.indent()),this.printAndIndentOnComments(e.consequent,e),t&&(this.dedent(),this.newline(),this.token("}")),e.alternate&&(this.endsWith("}")&&this.space(),this.word("else"),this.space(),this.printAndIndentOnComments(e.alternate,e))}function o(e){return C.isStatement(e.body)?o(e.body):e}function u(e){this.word("for"),this.space(),this.token("("),this.inForStatementInitCounter++,this.print(e.init,e),this.inForStatementInitCounter--,this.token(";"),e.test&&(this.space(),this.print(e.test,e)),this.token(";"),e.update&&(this.space(),this.print(e.update,e)),this.token(")"),this.printBlock(e)}function l(e){this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.printBlock(e)}function c(e){this.word("do"),this.space(),this.print(e.body,e),this.space(),this.word("while"),this.space(),this.token("("),this.print(e.test,e),this.token(")"),this.semicolon()}function p(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"label";return function(n){this.word(e);var r=n[t];if(r){this.space();var i=this.startTerminatorless();this.print(r,n),this.endTerminatorless(i)}this.semicolon()}}function f(e){this.print(e.label,e),this.token(":"),this.space(),this.print(e.body,e)}function h(e){this.word("try"),this.space(),this.print(e.block,e),this.space(),e.handlers?this.print(e.handlers[0],e):this.print(e.handler,e),e.finalizer&&(this.space(),this.word("finally"),this.space(),this.print(e.finalizer,e))}function d(e){this.word("catch"),this.space(),this.token("("),this.print(e.param,e),this.token(")"),this.space(),this.print(e.body,e)}function y(e){this.word("switch"),this.space(),this.token("("),this.print(e.discriminant,e),this.token(")"),this.space(),this.token("{"),this.printSequence(e.cases,e,{indent:!0,addNewlines:function(t,n){if(!t&&e.cases[e.cases.length-1]===n)return-1}}),this.token("}")}function m(e){e.test?(this.word("case"),this.space(),this.print(e.test,e),this.token(":")):(this.word("default"),this.token(":")),e.consequent.length&&(this.newline(),this.printSequence(e.consequent,e,{indent:!0}))}function b(){this.word("debugger"),this.semicolon()}function g(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<4;e++)this.space(!0)}function v(){if(this.token(","),this.newline(),this.endsWith("\n"))for(var e=0;e<6;e++)this.space(!0)}function x(e,t){this.word(e.kind),this.space();var n=!1;if(!C.isFor(t))for(var r=e.declarations,i=Array.isArray(r),a=0,r=i?r:(0,A.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;o.init&&(n=!0)}var u=void 0;n&&(u="const"===e.kind?v:g),this.printList(e.declarations,e,{separator:u}),(!C.isFor(t)||t.left!==e&&t.init!==e)&&this.semicolon()}function _(e){this.print(e.id,e),this.print(e.id.typeAnnotation,e),e.init&&(this.space(),this.token("="),this.space(),this.print(e.init,e))}n.__esModule=!0,n.ThrowStatement=n.BreakStatement=n.ReturnStatement=n.ContinueStatement=n.ForAwaitStatement=n.ForOfStatement=n.ForInStatement=void 0;var E=e("babel-runtime/core-js/get-iterator"),A=i(E);n.WithStatement=a,n.IfStatement=s,n.ForStatement=u,n.WhileStatement=l,n.DoWhileStatement=c,n.LabeledStatement=f,n.TryStatement=h,n.CatchClause=d,n.SwitchStatement=y,n.SwitchCase=m,n.DebuggerStatement=b,n.VariableDeclaration=x,n.VariableDeclarator=_;var D=e("babel-types"),C=r(D),S=function(e){return function(t){this.word("for"),this.space(),"await"===e&&(this.word("await"),this.space(),e="of"),this.token("("),this.print(t.left,t),this.space(),this.word(e),this.space(),this.print(t.right,t),this.token(")"),this.printBlock(t)}};n.ForInStatement=S("in"),n.ForOfStatement=S("of"),n.ForAwaitStatement=S("await"),n.ContinueStatement=p("continue"),n.ReturnStatement=p("return","argument"),n.BreakStatement=p("break"),n.ThrowStatement=p("throw","argument")},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],83:[function(e,t,n){"use strict";function r(e){this.print(e.tag,e),this.print(e.quasi,e)}function i(e,t){var n=t.quasis[0]===e,r=t.quasis[t.quasis.length-1]===e,i=(n?"`":"}")+e.value.raw+(r?"`":"${");n||this.space(),this.token(i),r||this.space()}function a(e){for(var t=e.quasis,n=0;n0&&this.space(),this.print(i,e),r=0||e.indexOf("@preserve")>=0},"auto"===a.compact&&(a.compact=e.length>5e5,a.compact&&console.error("[BABEL] "+g.get("codeGeneratorDeopt",t.filename,"500KB"))),a.compact&&(a.indent.adjustMultilineComment=!1),a}function s(e,t){if(!e)return"double";for(var n={single:0,double:0},r=0,i=0;i=3)break}}return n.single>n.double?"single":"double"}n.__esModule=!0,n.CodeGenerator=void 0;var o=e("babel-runtime/helpers/classCallCheck"),u=i(o),l=e("babel-runtime/helpers/possibleConstructorReturn"),c=i(l),p=e("babel-runtime/helpers/inherits"),f=i(p);n.default=function(e,t,n){return new _(e,t,n).generate()};var h=e("detect-indent"),d=i(h),y=e("./source-map"),m=i(y),b=e("babel-messages"),g=r(b),v=e("./printer"),x=i(v),_=function(e){function t(n,r,i){(0,u.default)(this,t),r=r||{};var s=n.tokens||[],o=a(i,r,s),l=r.sourceMaps?new m.default(r,i):null,p=(0,c.default)(this,e.call(this,o,l,s));return p.ast=n,p}return(0,f.default)(t,e),t.prototype.generate=function(){return e.prototype.generate.call(this,this.ast)},t}(x.default);n.CodeGenerator=function(){function e(t,n,r){(0,u.default)(this,e),this._generator=new _(t,n,r)}return e.prototype.generate=function(){return this._generator.generate()},e}()},{"./printer":89,"./source-map":90,"babel-messages":99,"babel-runtime/helpers/classCallCheck":114,"babel-runtime/helpers/inherits":115,"babel-runtime/helpers/possibleConstructorReturn":117,"detect-indent":92}],86:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){function t(e,t){var r=n[e];n[e]=r?function(e,n,i){var a=r(e,n,i);return null==a?t(e,n,i):a}:t}for(var n={},r=(0,y.default)(e),i=Array.isArray(r),a=0,r=i?r:(0,h.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s,u=_.FLIPPED_ALIAS_KEYS[o];if(u)for(var l=u,c=Array.isArray(l),p=0,l=c?l:(0,h.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var d=f;t(d,e[o])}else t(o,e[o])}return n}function s(e,t,n,r){var i=e[t.type];return i?i(t,n,r):null}function o(e){return!!_.isCallExpression(e)||!!_.isMemberExpression(e)&&(o(e.object)||!e.computed&&o(e.property))}function u(e,t,n){if(!e)return 0;_.isExpressionStatement(e)&&(e=e.expression);var r=s(A,e,t);if(!r){var i=s(D,e,t);if(i)for(var a=0;aa)return!0;if(r===a&&t.right===e&&!v.isLogicalExpression(t))return!0}return!1}function u(e,t){if("in"===e.operator){if(v.isVariableDeclarator(t))return!0;if(v.isFor(t))return!0}return!1}function l(e,t){return!v.isForStatement(t)&&((!v.isExpressionStatement(t)||t.expression!==e)&&(!v.isReturnStatement(t)&&(!v.isThrowStatement(t)&&((!v.isSwitchStatement(t)||t.discriminant!==e)&&((!v.isWhileStatement(t)||t.test!==e)&&((!v.isIfStatement(t)||t.test!==e)&&(!v.isForInStatement(t)||t.right!==e)))))))}function c(e,t){return v.isBinary(t)||v.isUnaryLike(t)||v.isCallExpression(t)||v.isMemberExpression(t)||v.isNewExpression(t)||v.isConditionalExpression(t)&&e===t.test}function p(e,t,n){return b(n,{considerDefaultExports:!0})}function f(e,t){return!!v.isMemberExpression(t,{object:e})||!(!v.isCallExpression(t,{callee:e})&&!v.isNewExpression(t,{callee:e}))}function h(e,t,n){return b(n,{considerDefaultExports:!0})}function d(e,t){return!!v.isExportDeclaration(t)||(!(!v.isBinaryExpression(t)&&!v.isLogicalExpression(t))||(!!v.isUnaryExpression(t)||f(e,t)))}function y(e,t){return!!v.isUnaryLike(t)||(!!v.isBinary(t)||(!!v.isConditionalExpression(t,{test:e})||f(e,t)))}function m(e){return!!v.isObjectPattern(e.left)||y.apply(void 0,arguments)}function b(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.considerArrow,r=void 0!==n&&n,i=t.considerDefaultExports,a=void 0!==i&&i,s=e.length-1,o=e[s];s--;for(var u=e[s];s>0;){if(v.isExpressionStatement(u,{expression:o}))return!0;if(a&&v.isExportDefaultDeclaration(u,{declaration:o}))return!0;if(r&&v.isArrowFunctionExpression(u,{body:o}))return!0;if(!(v.isCallExpression(u,{callee:o})||v.isSequenceExpression(u)&&u.expressions[0]===o||v.isMemberExpression(u,{object:o})||v.isConditional(u,{test:o})||v.isBinary(u,{left:o})||v.isAssignmentExpression(u,{left:o})))return!1;o=u,s--,u=e[s]}return!1}n.__esModule=!0,n.AwaitExpression=n.FunctionTypeAnnotation=void 0,n.NullableTypeAnnotation=i,n.UpdateExpression=a,n.ObjectExpression=s,n.Binary=o,n.BinaryExpression=u,n.SequenceExpression=l,n.YieldExpression=c,n.ClassExpression=p,n.UnaryLike=f,n.FunctionExpression=h,n.ArrowFunctionExpression=d,n.ConditionalExpression=y,n.AssignmentExpression=m;var g=e("babel-types"),v=r(g),x={"||":0,"&&":1,"|":2,"^":3,"&":4,"==":5,"===":5,"!=":5,"!==":5,"<":6,">":6,"<=":6,">=":6,in:6,instanceof:6,">>":7,"<<":7,">>>":7,"+":8,"-":8,"*":9,"/":9,"%":9,"**":10};n.FunctionTypeAnnotation=i,n.AwaitExpression=c},{"babel-types":265}],88:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return y.isMemberExpression(e)?(a(e.object,t),e.computed&&a(e.property,t)):y.isBinary(e)||y.isAssignmentExpression(e)?(a(e.left,t),a(e.right,t)):y.isCallExpression(e)?(t.hasCall=!0,a(e.callee,t)):y.isFunction(e)?t.hasFunction=!0:y.isIdentifier(e)&&(t.hasHelper=t.hasHelper||s(e.callee)),t}function s(e){return y.isMemberExpression(e)?s(e.object)||s(e.property):y.isIdentifier(e)?"require"===e.name||"_"===e.name[0]:y.isCallExpression(e)?s(e.callee):!(!y.isBinary(e)&&!y.isAssignmentExpression(e))&&(y.isIdentifier(e.left)&&s(e.left)||s(e.right))}function o(e){return y.isLiteral(e)||y.isObjectExpression(e)||y.isArrayExpression(e)||y.isIdentifier(e)||y.isMemberExpression(e)}var u=e("lodash/isBoolean"),l=i(u),c=e("lodash/each"),p=i(c),f=e("lodash/map"),h=i(f),d=e("babel-types"),y=r(d);n.nodes={AssignmentExpression:function(e){var t=a(e.right);if(t.hasCall&&t.hasHelper||t.hasFunction)return{before:t.hasFunction,after:!0}},SwitchCase:function(e,t){return{before:e.consequent.length||t.cases[0]===e}},LogicalExpression:function(e){if(y.isFunction(e.left)||y.isFunction(e.right))return{after:!0}},Literal:function(e){if("use strict"===e.value)return{after:!0}},CallExpression:function(e){if(y.isFunction(e.callee)||s(e))return{before:!0,after:!0}},VariableDeclaration:function(e){for(var t=0;t0?new F.default(r):null}return e.prototype.generate=function(e){return this.print(e),this._maybeAddAuxComment(),this._buf.get()},e.prototype.indent=function(){this.format.compact||this.format.concise||this._indent++},e.prototype.dedent=function(){this.format.compact||this.format.concise||this._indent--},e.prototype.semicolon=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this._maybeAddAuxComment(),this._append(";",!e)},e.prototype.rightBrace=function(){this.format.minified&&this._buf.removeLastSemicolon(),this.token("}")},e.prototype.space=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];this.format.compact||(this._buf.hasContent()&&!this.endsWith(" ")&&!this.endsWith("\n")||e)&&this._space()},e.prototype.word=function(e){this._endsWithWord&&this._space(),this._maybeAddAuxComment(),this._append(e),this._endsWithWord=!0},e.prototype.number=function(e){this.word(e),this._endsWithInteger=(0,_.default)(+e)&&!O.test(e)&&!j.test(e)&&!B.test(e)&&"."!==e[e.length-1]},e.prototype.token=function(e){("--"===e&&this.endsWith("!")||"+"===e[0]&&this.endsWith("+")||"-"===e[0]&&this.endsWith("-")||"."===e[0]&&this._endsWithInteger)&&this._space(),this._maybeAddAuxComment(),this._append(e)},e.prototype.newline=function(e){if(!this.format.retainLines&&!this.format.compact){if(this.format.concise)return void this.space();if(!(this.endsWith("\n\n")||("number"!=typeof e&&(e=1),e=Math.min(2,e),(this.endsWith("{\n")||this.endsWith(":\n"))&&e--,e<=0)))for(var t=0;t1&&void 0!==arguments[1]&&arguments[1];this._maybeAddParen(e),this._maybeIndent(e),t?this._buf.queue(e):this._buf.append(e),this._endsWithWord=!1,this._endsWithInteger=!1},e.prototype._maybeIndent=function(e){this._indent&&this.endsWith("\n")&&"\n"!==e[0]&&this._buf.queue(this._getIndent())},e.prototype._maybeAddParen=function(e){var t=this._parenPushNewlineState;if(t){this._parenPushNewlineState=null;var n=void 0;for(n=0;n2&&void 0!==arguments[2]?arguments[2]:{};if(e&&e.length){n.indent&&this.indent();for(var r={addNewlines:n.addNewlines},i=0;i1&&void 0!==arguments[1])||arguments[1];e.innerComments&&(t&&this.indent(),this._printComments(e.innerComments),t&&this.dedent())},e.prototype.printSequence=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return n.statement=!0,this.printJoin(e,t,n)},e.prototype.printList=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return null==n.separator&&(n.separator=a),this.printJoin(e,t,n)},e.prototype._printNewline=function(e,t,n,r){var i=this;if(!this.format.retainLines&&!this.format.compact){if(this.format.concise)return void this.space();var a=0;if(null!=t.start&&!t._ignoreUserWhitespace&&this._whitespace)if(e){var s=t.leadingComments,o=s&&(0,b.default)(s,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});a=this._whitespace.getNewlinesBefore(o||t)}else{var u=t.trailingComments,l=u&&(0,v.default)(u,function(e){return!!e.loc&&i.format.shouldPrintComment(e.value)});a=this._whitespace.getNewlinesAfter(l||t)}else{e||a++,r.addNewlines&&(a+=r.addNewlines(e,t)||0);var c=w.needsWhitespaceAfter;e&&(c=w.needsWhitespaceBefore),c(t,n)&&a++,this._buf.hasContent()||(a=0)}this.newline(a)}},e.prototype._getComments=function(e,t){return t&&(e?t.leadingComments:t.trailingComments)||[]},e.prototype._printComment=function(e){var t=this;if(this.format.shouldPrintComment(e.value)&&!e.ignore&&!this._printedComments.has(e)){if(this._printedComments.add(e),null!=e.start){if(this._printedCommentStarts[e.start])return;this._printedCommentStarts[e.start]=!0}this.newline(this._whitespace?this._whitespace.getNewlinesBefore(e):0),this.endsWith("[")||this.endsWith("{")||this.space();var n="CommentLine"===e.type?"//"+e.value+"\n":"/*"+e.value+"*/";if("CommentBlock"===e.type&&this.format.indent.adjustMultilineComment){var r=e.loc&&e.loc.start.column;if(r){var i=new RegExp("\\n\\s{1,"+r+"}","g");n=n.replace(i,"\n")}var a=Math.max(this._getIndent().length,this._buf.getCurrentColumn());n=n.replace(/\n(?!$)/g,"\n"+(0,A.default)(" ",a))}this.withSource("start",e.loc,function(){t._append(n)}),this.newline((this._whitespace?this._whitespace.getNewlinesAfter(e):0)+("CommentLine"===e.type?-1:0))}},e.prototype._printComments=function(e){if(e&&e.length)for(var t=e,n=Array.isArray(t),r=0,t=n?t:(0,l.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this._printComment(a)}},e}();n.default=I;for(var N=[e("./generators/template-literals"),e("./generators/expressions"),e("./generators/statements"),e("./generators/classes"),e("./generators/methods"),e("./generators/modules"),e("./generators/types"),e("./generators/flow"),e("./generators/base"),e("./generators/jsx")],L=0;L=0){for(;i&&e.start===r[i-1].start;)--i;t=r[i-1],n=r[i]}return this._getNewlinesBetween(t,n)},e.prototype.getNewlinesAfter=function(e){var t=void 0,n=void 0,r=this.tokens,i=this._findToken(function(t){return t.end-e.end},0,r.length);if(i>=0){for(;i&&e.end===r[i-1].end;)--i;t=r[i],n=r[i+1],","===n.type.label&&(n=r[i+2])}return n&&"eof"===n.type.label?1:this._getNewlinesBetween(t,n)},e.prototype._getNewlinesBetween=function(e,t){if(!t||!t.loc)return 0;for(var n=e?e.loc.end.line:1,r=t.loc.start.line,i=0,a=n;a=n)return-1;var r=t+n>>>1,i=e(this.tokens[r]);return i<0?this._findToken(e,r+1,n):i>0?this._findToken(e,t,r):0===i?r:-1},e}();n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],92:[function(e,t,n){"use strict";function r(e){var t=0,n=0,r=0;for(var i in e){var a=e[i],s=a[0],o=a[1];(s>n||s===n&&o>r)&&(n=s,r=o,t=Number(i))}return t}var i=e("repeating"),a=/^(?:( )+|\t+)/;t.exports=function(e){if("string"!=typeof e)throw new TypeError("Expected a string");var t,n,s=0,o=0,u=0,l={};e.split(/\n/g).forEach(function(e){if(e){var r,i=e.match(a);i?(r=i[0].length,i[1]?o++:s++):r=0;var c=r-u;u=r,c?(n=c>0,t=l[n?c:-c],t?t[0]++:t=l[c]=[1,0]):t&&(t[1]+=Number(n))}});var c,p,f=r(l);return f?o>=s?(c="space",p=i(" ",f)):(c="tab",p=i("\t",f)):(c=null,p=""),{amount:f,type:c,indent:p}}},{repeating:93}],93:[function(e,t,n){"use strict";var r=e("is-finite");t.exports=function(e,t){if("string"!=typeof e)throw new TypeError("Expected `input` to be a string");if(t<0||!r(t))throw new TypeError("Expected `count` to be a positive finite number");var n="";do 1&t&&(n+=e),e+=e;while(t>>=1);return n}},{"is-finite":94}],94:[function(e,t,n){"use strict";var r=e("number-is-nan");t.exports=Number.isFinite||function(e){return!("number"!=typeof e||r(e)||e===1/0||e===-(1/0))}},{"number-is-nan":95}],95:[function(e,t,n){"use strict";t.exports=Number.isNaN||function(e){return e!==e}},{}],96:[function(e,t,n){(function(e){!function(r){var i="object"==typeof n&&n,a="object"==typeof t&&t&&t.exports==i&&t,s="object"==typeof e&&e;s.global!==s&&s.window!==s||(r=s);var o={},u=o.hasOwnProperty,l=function(e,t){var n;for(n in e)u.call(e,n)&&t(n,e[n])},c=function(e,t){return t?(l(t,function(t,n){e[t]=n}),e):e},p=function(e,t){for(var n=e.length,r=-1;++r=55296&&O<=56319&&R>M+1&&(I=L.charCodeAt(M+1),I>=56320&&I<=57343))){N=1024*(O-55296)+I-56320+65536;var V=N.toString(16);u||(V=V.toUpperCase()),i+="\\u{"+V+"}",M++}else{if(!t.escapeEverything){if(A.test(U)){i+=U;continue}if('"'==U){i+=a==U?'\\"':U;continue}if("'"==U){i+=a==U?"\\'":U;continue}}if("\0"!=U||r||E.test(L.charAt(M+1)))if(_.test(U))i+=x[U];else{var G=U.charCodeAt(0),V=G.toString(16);u||(V=V.toUpperCase());var q=V.length>2||r,K="\\"+(q?"u":"x")+("0000"+V).slice(q?-4:-2);i+=K}else i+="\\0"}}return t.wrap&&(i=a+i+a),t.escapeEtago?i.replace(/<\/(script|style)/gi,"<\\/$1"):i};D.version="1.3.0","function"==typeof define&&"object"==typeof define.amd&&define.amd?define(function(){return D}):i&&!i.nodeType?a?a.exports=D:i.jsesc=D:r.jsesc=D}(this)}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],97:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-template"),a=r(i),s={};n.default=s,s.typeof=(0,a.default)('\n  (typeof Symbol === "function" && typeof Symbol.iterator === "symbol")\n    ? function (obj) { return typeof obj; }\n    : function (obj) {\n        return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype\n          ? "symbol"\n          : typeof obj;\n      };\n'),s.jsx=(0,a.default)('\n  (function () {\n    var REACT_ELEMENT_TYPE = (typeof Symbol === "function" && Symbol.for && Symbol.for("react.element")) || 0xeac7;\n\n    return function createRawReactElement (type, props, key, children) {\n      var defaultProps = type && type.defaultProps;\n      var childrenLength = arguments.length - 3;\n\n      if (!props && childrenLength !== 0) {\n        // If we\'re going to assign props.children, we create a new object now\n        // to avoid mutating defaultProps.\n        props = {};\n      }\n      if (props && defaultProps) {\n        for (var propName in defaultProps) {\n          if (props[propName] === void 0) {\n            props[propName] = defaultProps[propName];\n          }\n        }\n      } else if (!props) {\n        props = defaultProps || {};\n      }\n\n      if (childrenLength === 1) {\n        props.children = children;\n      } else if (childrenLength > 1) {\n        var childArray = Array(childrenLength);\n        for (var i = 0; i < childrenLength; i++) {\n          childArray[i] = arguments[i + 3];\n        }\n        props.children = childArray;\n      }\n\n      return {\n        $$typeof: REACT_ELEMENT_TYPE,\n        type: type,\n        key: key === undefined ? null : \'\' + key,\n        ref: null,\n        props: props,\n        _owner: null,\n      };\n    };\n\n  })()\n'),s.asyncIterator=(0,a.default)('\n  (function (iterable) {\n    if (typeof Symbol === "function") {\n      if (Symbol.asyncIterator) {\n        var method = iterable[Symbol.asyncIterator];\n        if (method != null) return method.call(iterable);\n      }\n      if (Symbol.iterator) {\n        return iterable[Symbol.iterator]();\n      }\n    }\n    throw new TypeError("Object is not async iterable");\n  })\n'),s.asyncGenerator=(0,a.default)('\n  (function () {\n    function AwaitValue(value) {\n      this.value = value;\n    }\n\n    function AsyncGenerator(gen) {\n      var front, back;\n\n      function send(key, arg) {\n        return new Promise(function (resolve, reject) {\n          var request = {\n            key: key,\n            arg: arg,\n            resolve: resolve,\n            reject: reject,\n            next: null\n          };\n\n          if (back) {\n            back = back.next = request;\n          } else {\n            front = back = request;\n            resume(key, arg);\n          }\n        });\n      }\n\n      function resume(key, arg) {\n        try {\n          var result = gen[key](arg)\n          var value = result.value;\n          if (value instanceof AwaitValue) {\n            Promise.resolve(value.value).then(\n              function (arg) { resume("next", arg); },\n              function (arg) { resume("throw", arg); });\n          } else {\n            settle(result.done ? "return" : "normal", result.value);\n          }\n        } catch (err) {\n          settle("throw", err);\n        }\n      }\n\n      function settle(type, value) {\n        switch (type) {\n          case "return":\n            front.resolve({ value: value, done: true });\n            break;\n          case "throw":\n            front.reject(value);\n            break;\n          default:\n            front.resolve({ value: value, done: false });\n            break;\n        }\n\n        front = front.next;\n        if (front) {\n          resume(front.key, front.arg);\n        } else {\n          back = null;\n        }\n      }\n\n      this._invoke = send;\n\n      // Hide "return" method if generator return is not supported\n      if (typeof gen.return !== "function") {\n        this.return = undefined;\n      }\n    }\n\n    if (typeof Symbol === "function" && Symbol.asyncIterator) {\n      AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; };\n    }\n\n    AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); };\n    AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); };\n    AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); };\n\n    return {\n      wrap: function (fn) {\n        return function () {\n          return new AsyncGenerator(fn.apply(this, arguments));\n        };\n      },\n      await: function (value) {\n        return new AwaitValue(value);\n      }\n    };\n\n  })()\n'),s.asyncGeneratorDelegate=(0,a.default)('\n  (function (inner, awaitWrap) {\n    var iter = {}, waiting = false;\n\n    function pump(key, value) {\n      waiting = true;\n      value = new Promise(function (resolve) { resolve(inner[key](value)); });\n      return { done: false, value: awaitWrap(value) };\n    };\n\n    if (typeof Symbol === "function" && Symbol.iterator) {\n      iter[Symbol.iterator] = function () { return this; };\n    }\n\n    iter.next = function (value) {\n      if (waiting) {\n        waiting = false;\n        return value;\n      }\n      return pump("next", value);\n    };\n\n    if (typeof inner.throw === "function") {\n      iter.throw = function (value) {\n        if (waiting) {\n          waiting = false;\n          throw value;\n        }\n        return pump("throw", value);\n      };\n    }\n\n    if (typeof inner.return === "function") {\n      iter.return = function (value) {\n        return pump("return", value);\n      };\n    }\n\n    return iter;\n  })\n'),s.asyncToGenerator=(0,a.default)('\n  (function (fn) {\n    return function () {\n      var gen = fn.apply(this, arguments);\n      return new Promise(function (resolve, reject) {\n        function step(key, arg) {\n          try {\n            var info = gen[key](arg);\n            var value = info.value;\n          } catch (error) {\n            reject(error);\n            return;\n          }\n\n          if (info.done) {\n            resolve(value);\n          } else {\n            return Promise.resolve(value).then(function (value) {\n              step("next", value);\n            }, function (err) {\n              step("throw", err);\n            });\n          }\n        }\n\n        return step("next");\n      });\n    };\n  })\n'),s.classCallCheck=(0,a.default)('\n  (function (instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError("Cannot call a class as a function");\n    }\n  });\n'),s.createClass=(0,a.default)('\n  (function() {\n    function defineProperties(target, props) {\n      for (var i = 0; i < props.length; i ++) {\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if ("value" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n      }\n    }\n\n    return function (Constructor, protoProps, staticProps) {\n      if (protoProps) defineProperties(Constructor.prototype, protoProps);\n      if (staticProps) defineProperties(Constructor, staticProps);\n      return Constructor;\n    };\n  })()\n'),s.defineEnumerableProperties=(0,a.default)('\n  (function (obj, descs) {\n    for (var key in descs) {\n      var desc = descs[key];\n      desc.configurable = desc.enumerable = true;\n      if ("value" in desc) desc.writable = true;\n      Object.defineProperty(obj, key, desc);\n    }\n    return obj;\n  })\n'),s.defaults=(0,a.default)("\n  (function (obj, defaults) {\n    var keys = Object.getOwnPropertyNames(defaults);\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var value = Object.getOwnPropertyDescriptor(defaults, key);\n      if (value && value.configurable && obj[key] === undefined) {\n        Object.defineProperty(obj, key, value);\n      }\n    }\n    return obj;\n  })\n"),s.defineProperty=(0,a.default)("\n  (function (obj, key, value) {\n    // Shortcircuit the slow defineProperty path when possible.\n    // We are trying to avoid issues where setters defined on the\n    // prototype cause side effects under the fast path of simple\n    // assignment. By checking for existence of the property with\n    // the in operator, we can optimize most of this overhead away.\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  });\n"),s.extends=(0,a.default)("\n  Object.assign || (function (target) {\n    for (var i = 1; i < arguments.length; i++) {\n      var source = arguments[i];\n      for (var key in source) {\n        if (Object.prototype.hasOwnProperty.call(source, key)) {\n          target[key] = source[key];\n        }\n      }\n    }\n    return target;\n  })\n"),s.get=(0,a.default)('\n  (function get(object, property, receiver) {\n    if (object === null) object = Function.prototype;\n\n    var desc = Object.getOwnPropertyDescriptor(object, property);\n\n    if (desc === undefined) {\n      var parent = Object.getPrototypeOf(object);\n\n      if (parent === null) {\n        return undefined;\n      } else {\n        return get(parent, property, receiver);\n      }\n    } else if ("value" in desc) {\n      return desc.value;\n    } else {\n      var getter = desc.get;\n\n      if (getter === undefined) {\n        return undefined;\n      }\n\n      return getter.call(receiver);\n    }\n  });\n'),s.inherits=(0,a.default)('\n  (function (subClass, superClass) {\n    if (typeof superClass !== "function" && superClass !== null) {\n      throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);\n    }\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        enumerable: false,\n        writable: true,\n        configurable: true\n      }\n    });\n    if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n  })\n'),s.instanceof=(0,a.default)('\n  (function (left, right) {\n    if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {\n      return right[Symbol.hasInstance](left);\n    } else {\n      return left instanceof right;\n    }\n  });\n'),s.interopRequireDefault=(0,a.default)("\n  (function (obj) {\n    return obj && obj.__esModule ? obj : { default: obj };\n  })\n"),s.interopRequireWildcard=(0,a.default)("\n  (function (obj) {\n    if (obj && obj.__esModule) {\n      return obj;\n    } else {\n      var newObj = {};\n      if (obj != null) {\n        for (var key in obj) {\n          if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key];\n        }\n      }\n      newObj.default = obj;\n      return newObj;\n    }\n  })\n"),s.newArrowCheck=(0,a.default)('\n  (function (innerThis, boundThis) {\n    if (innerThis !== boundThis) {\n      throw new TypeError("Cannot instantiate an arrow function");\n    }\n  });\n'),s.objectDestructuringEmpty=(0,a.default)('\n  (function (obj) {\n    if (obj == null) throw new TypeError("Cannot destructure undefined");\n  });\n'),s.objectWithoutProperties=(0,a.default)("\n  (function (obj, keys) {\n    var target = {};\n    for (var i in obj) {\n      if (keys.indexOf(i) >= 0) continue;\n      if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n      target[i] = obj[i];\n    }\n    return target;\n  })\n"),s.possibleConstructorReturn=(0,a.default)('\n  (function (self, call) {\n    if (!self) {\n      throw new ReferenceError("this hasn\'t been initialised - super() hasn\'t been called");\n    }\n    return call && (typeof call === "object" || typeof call === "function") ? call : self;\n  });\n'),s.selfGlobal=(0,a.default)('\n  typeof global === "undefined" ? self : global\n'),s.set=(0,a.default)('\n  (function set(object, property, value, receiver) {\n    var desc = Object.getOwnPropertyDescriptor(object, property);\n\n    if (desc === undefined) {\n      var parent = Object.getPrototypeOf(object);\n\n      if (parent !== null) {\n        set(parent, property, value, receiver);\n      }\n    } else if ("value" in desc && desc.writable) {\n      desc.value = value;\n    } else {\n      var setter = desc.set;\n\n      if (setter !== undefined) {\n        setter.call(receiver, value);\n      }\n    }\n\n    return value;\n  });\n'),s.slicedToArray=(0,a.default)('\n  (function () {\n    // Broken out into a separate function to avoid deoptimizations due to the try/catch for the\n    // array iterator case.\n    function sliceIterator(arr, i) {\n      // this is an expanded form of `for...of` that properly supports abrupt completions of\n      // iterators etc. variable names have been minimised to reduce the size of this massive\n      // helper. sometimes spec compliancy is annoying :(\n      //\n      // _n = _iteratorNormalCompletion\n      // _d = _didIteratorError\n      // _e = _iteratorError\n      // _i = _iterator\n      // _s = _step\n\n      var _arr = [];\n      var _n = true;\n      var _d = false;\n      var _e = undefined;\n      try {\n        for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n          _arr.push(_s.value);\n          if (i && _arr.length === i) break;\n        }\n      } catch (err) {\n        _d = true;\n        _e = err;\n      } finally {\n        try {\n          if (!_n && _i["return"]) _i["return"]();\n        } finally {\n          if (_d) throw _e;\n        }\n      }\n      return _arr;\n    }\n\n    return function (arr, i) {\n      if (Array.isArray(arr)) {\n        return arr;\n      } else if (Symbol.iterator in Object(arr)) {\n        return sliceIterator(arr, i);\n      } else {\n        throw new TypeError("Invalid attempt to destructure non-iterable instance");\n      }\n    };\n  })();\n'),s.slicedToArrayLoose=(0,a.default)('\n  (function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      var _arr = [];\n      for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done;) {\n        _arr.push(_step.value);\n        if (i && _arr.length === i) break;\n      }\n      return _arr;\n    } else {\n      throw new TypeError("Invalid attempt to destructure non-iterable instance");\n    }\n  });\n'),
+s.taggedTemplateLiteral=(0,a.default)("\n  (function (strings, raw) {\n    return Object.freeze(Object.defineProperties(strings, {\n        raw: { value: Object.freeze(raw) }\n    }));\n  });\n"),s.taggedTemplateLiteralLoose=(0,a.default)("\n  (function (strings, raw) {\n    strings.raw = raw;\n    return strings;\n  });\n"),s.temporalRef=(0,a.default)('\n  (function (val, name, undef) {\n    if (val === undef) {\n      throw new ReferenceError(name + " is not defined - temporal dead zone");\n    } else {\n      return val;\n    }\n  })\n'),s.temporalUndefined=(0,a.default)("\n  ({})\n"),s.toArray=(0,a.default)("\n  (function (arr) {\n    return Array.isArray(arr) ? arr : Array.from(arr);\n  });\n"),s.toConsumableArray=(0,a.default)("\n  (function (arr) {\n    if (Array.isArray(arr)) {\n      for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n      return arr2;\n    } else {\n      return Array.from(arr);\n    }\n  });\n"),t.exports=n.default},{"babel-template":225}],98:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=u.default[e];if(!t)throw new ReferenceError("Unknown helper "+e);return t().expression}n.__esModule=!0,n.list=void 0;var a=e("babel-runtime/core-js/object/keys"),s=r(a);n.get=i;var o=e("./helpers"),u=r(o);n.list=(0,s.default)(u.default).map(function(e){return"_"===e[0]?e.slice(1):e}).filter(function(e){return"__esModule"!==e});n.default=i},{"./helpers":97,"babel-runtime/core-js/object/keys":107}],99:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}},{}],117:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../helpers/typeof"),a=r(i);n.default=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!==(void 0===t?"undefined":(0,a.default)(t))&&"function"!=typeof t?e:t}},{"../helpers/typeof":118}],118:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("../core-js/symbol/iterator"),a=r(i),s=e("../core-js/symbol"),o=r(s),u="function"==typeof o.default&&"symbol"==typeof a.default?function(e){return typeof e}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":typeof e};n.default="function"==typeof o.default&&"symbol"===u(a.default)?function(e){return void 0===e?"undefined":u(e)}:function(e){return e&&"function"==typeof o.default&&e.constructor===o.default&&e!==o.default.prototype?"symbol":void 0===e?"undefined":u(e)}},{"../core-js/symbol":109,"../core-js/symbol/iterator":111}],119:[function(e,t,n){e("../modules/web.dom.iterable"),e("../modules/es6.string.iterator"),t.exports=e("../modules/core.get-iterator")},{"../modules/core.get-iterator":208,"../modules/es6.string.iterator":217,"../modules/web.dom.iterable":224}],120:[function(e,t,n){var r=e("../../modules/_core"),i=r.JSON||(r.JSON={stringify:JSON.stringify});t.exports=function(e){return i.stringify.apply(i,arguments)}},{"../../modules/_core":148}],121:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/es6.string.iterator"),e("../modules/web.dom.iterable"),e("../modules/es6.map"),e("../modules/es7.map.to-json"),t.exports=e("../modules/_core").Map},{"../modules/_core":148,"../modules/es6.map":210,"../modules/es6.object.to-string":216,"../modules/es6.string.iterator":217,"../modules/es7.map.to-json":221,"../modules/web.dom.iterable":224}],122:[function(e,t,n){e("../../modules/es6.number.max-safe-integer"),t.exports=9007199254740991},{"../../modules/es6.number.max-safe-integer":211}],123:[function(e,t,n){e("../../modules/es6.object.assign"),t.exports=e("../../modules/_core").Object.assign},{"../../modules/_core":148,"../../modules/es6.object.assign":212}],124:[function(e,t,n){e("../../modules/es6.object.create");var r=e("../../modules/_core").Object;t.exports=function(e,t){return r.create(e,t)}},{"../../modules/_core":148,"../../modules/es6.object.create":213}],125:[function(e,t,n){e("../../modules/es6.symbol"),t.exports=e("../../modules/_core").Object.getOwnPropertySymbols},{"../../modules/_core":148,"../../modules/es6.symbol":218}],126:[function(e,t,n){e("../../modules/es6.object.keys"),t.exports=e("../../modules/_core").Object.keys},{"../../modules/_core":148,"../../modules/es6.object.keys":214}],127:[function(e,t,n){e("../../modules/es6.object.set-prototype-of"),t.exports=e("../../modules/_core").Object.setPrototypeOf},{"../../modules/_core":148,"../../modules/es6.object.set-prototype-of":215}],128:[function(e,t,n){e("../../modules/es6.symbol"),t.exports=e("../../modules/_core").Symbol.for},{"../../modules/_core":148,"../../modules/es6.symbol":218}],129:[function(e,t,n){e("../../modules/es6.symbol"),e("../../modules/es6.object.to-string"),e("../../modules/es7.symbol.async-iterator"),e("../../modules/es7.symbol.observable"),t.exports=e("../../modules/_core").Symbol},{"../../modules/_core":148,"../../modules/es6.object.to-string":216,"../../modules/es6.symbol":218,"../../modules/es7.symbol.async-iterator":222,"../../modules/es7.symbol.observable":223}],130:[function(e,t,n){e("../../modules/es6.string.iterator"),e("../../modules/web.dom.iterable"),t.exports=e("../../modules/_wks-ext").f("iterator")},{"../../modules/_wks-ext":205,"../../modules/es6.string.iterator":217,"../../modules/web.dom.iterable":224}],131:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/web.dom.iterable"),e("../modules/es6.weak-map"),t.exports=e("../modules/_core").WeakMap},{"../modules/_core":148,"../modules/es6.object.to-string":216,"../modules/es6.weak-map":219,"../modules/web.dom.iterable":224}],132:[function(e,t,n){e("../modules/es6.object.to-string"),e("../modules/web.dom.iterable"),e("../modules/es6.weak-set"),t.exports=e("../modules/_core").WeakSet},{"../modules/_core":148,"../modules/es6.object.to-string":216,"../modules/es6.weak-set":220,"../modules/web.dom.iterable":224}],133:[function(e,t,n){t.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},{}],134:[function(e,t,n){t.exports=function(){}},{}],135:[function(e,t,n){t.exports=function(e,t,n,r){if(!(e instanceof t)||void 0!==r&&r in e)throw TypeError(n+": incorrect invocation!");return e}},{}],136:[function(e,t,n){var r=e("./_is-object");t.exports=function(e){if(!r(e))throw TypeError(e+" is not an object!");return e}},{"./_is-object":166}],137:[function(e,t,n){var r=e("./_for-of");t.exports=function(e,t){var n=[];return r(e,!1,n.push,n,t),n}},{"./_for-of":157}],138:[function(e,t,n){var r=e("./_to-iobject"),i=e("./_to-length"),a=e("./_to-index");t.exports=function(e){return function(t,n,s){var o,u=r(t),l=i(u.length),c=a(s,l);if(e&&n!=n){for(;l>c;)if(o=u[c++],o!=o)return!0}else for(;l>c;c++)if((e||c in u)&&u[c]===n)return e||c||0;return!e&&-1}}},{"./_to-index":197,"./_to-iobject":199,"./_to-length":200}],139:[function(e,t,n){var r=e("./_ctx"),i=e("./_iobject"),a=e("./_to-object"),s=e("./_to-length"),o=e("./_array-species-create");t.exports=function(e,t){var n=1==e,u=2==e,l=3==e,c=4==e,p=6==e,f=5==e||p,h=t||o;return function(t,o,d){for(var y,m,b=a(t),g=i(b),v=r(o,d,3),x=s(g.length),_=0,E=n?h(t,x):u?h(t,0):void 0;x>_;_++)if((f||_ in g)&&(y=g[_],m=v(y,_,b),e))if(n)E[_]=m;else if(m)switch(e){case 3:return!0;case 5:return y;case 6:return _;case 2:E.push(y)}else if(c)return!1;return p?-1:l||c?c:E}}},{"./_array-species-create":141,"./_ctx":149,"./_iobject":163,"./_to-length":200,"./_to-object":201}],140:[function(e,t,n){var r=e("./_is-object"),i=e("./_is-array"),a=e("./_wks")("species");t.exports=function(e){var t;return i(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!i(t.prototype)||(t=void 0),r(t)&&(t=t[a],null===t&&(t=void 0))),void 0===t?Array:t}},{"./_is-array":165,"./_is-object":166,"./_wks":206}],141:[function(e,t,n){var r=e("./_array-species-constructor");t.exports=function(e,t){return new(r(e))(t)}},{"./_array-species-constructor":140}],142:[function(e,t,n){var r=e("./_cof"),i=e("./_wks")("toStringTag"),a="Arguments"==r(function(){return arguments}()),s=function(e,t){try{return e[t]}catch(e){}};t.exports=function(e){var t,n,o;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=s(t=Object(e),i))?n:a?r(t):"Object"==(o=r(t))&&"function"==typeof t.callee?"Arguments":o}},{"./_cof":143,"./_wks":206}],143:[function(e,t,n){var r={}.toString;t.exports=function(e){return r.call(e).slice(8,-1)}},{}],144:[function(e,t,n){"use strict";var r=e("./_object-dp").f,i=e("./_object-create"),a=e("./_redefine-all"),s=e("./_ctx"),o=e("./_an-instance"),u=e("./_defined"),l=e("./_for-of"),c=e("./_iter-define"),p=e("./_iter-step"),f=e("./_set-species"),h=e("./_descriptors"),d=e("./_meta").fastKey,y=h?"_s":"size",m=function(e,t){var n,r=d(t);if("F"!==r)return e._i[r];for(n=e._f;n;n=n.n)if(n.k==t)return n};t.exports={getConstructor:function(e,t,n,c){var p=e(function(e,r){o(e,p,t,"_i"),e._i=i(null),e._f=void 0,e._l=void 0,e[y]=0,void 0!=r&&l(r,n,e[c],e)});return a(p.prototype,{clear:function(){for(var e=this,t=e._i,n=e._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete t[n.i];e._f=e._l=void 0,e[y]=0},delete:function(e){var t=this,n=m(t,e);if(n){var r=n.n,i=n.p;delete t._i[n.i],n.r=!0,i&&(i.n=r),r&&(r.p=i),t._f==n&&(t._f=r),t._l==n&&(t._l=i),t[y]--}return!!n},forEach:function(e){o(this,p,"forEach");for(var t,n=s(e,arguments.length>1?arguments[1]:void 0,3);t=t?t.n:this._f;)for(n(t.v,t.k,this);t&&t.r;)t=t.p},has:function(e){return!!m(this,e)}}),h&&r(p.prototype,"size",{get:function(){return u(this[y])}}),p},def:function(e,t,n){var r,i,a=m(e,t);return a?a.v=n:(e._l=a={i:i=d(t,!0),k:t,v:n,p:r=e._l,n:void 0,r:!1},e._f||(e._f=a),r&&(r.n=a),e[y]++,"F"!==i&&(e._i[i]=a)),e},getEntry:m,setStrong:function(e,t,n){c(e,t,function(e,t){this._t=e,this._k=t,this._l=void 0},function(){for(var e=this,t=e._k,n=e._l;n&&n.r;)n=n.p;return e._t&&(e._l=n=n?n.n:e._t._f)?"keys"==t?p(0,n.k):"values"==t?p(0,n.v):p(0,[n.k,n.v]):(e._t=void 0,p(1))},n?"entries":"values",!n,!0),f(t)}}},{"./_an-instance":135,"./_ctx":149,"./_defined":150,"./_descriptors":151,"./_for-of":157,"./_iter-define":169,"./_iter-step":170,"./_meta":174,"./_object-create":176,"./_object-dp":177,"./_redefine-all":189,"./_set-species":192}],145:[function(e,t,n){var r=e("./_classof"),i=e("./_array-from-iterable");t.exports=function(e){return function(){if(r(this)!=e)throw TypeError(e+"#toJSON isn't generic");return i(this)}}},{"./_array-from-iterable":137,"./_classof":142}],146:[function(e,t,n){"use strict";var r=e("./_redefine-all"),i=e("./_meta").getWeak,a=e("./_an-object"),s=e("./_is-object"),o=e("./_an-instance"),u=e("./_for-of"),l=e("./_array-methods"),c=e("./_has"),p=l(5),f=l(6),h=0,d=function(e){return e._l||(e._l=new y)},y=function(){this.a=[]},m=function(e,t){return p(e.a,function(e){return e[0]===t})};y.prototype={get:function(e){var t=m(this,e);if(t)return t[1]},has:function(e){return!!m(this,e)},set:function(e,t){var n=m(this,e);n?n[1]=t:this.a.push([e,t])},delete:function(e){var t=f(this.a,function(t){return t[0]===e});return~t&&this.a.splice(t,1),!!~t}},t.exports={getConstructor:function(e,t,n,a){var l=e(function(e,r){o(e,l,t,"_i"),e._i=h++,e._l=void 0,void 0!=r&&u(r,n,e[a],e)});return r(l.prototype,{delete:function(e){if(!s(e))return!1;var t=i(e);return t===!0?d(this).delete(e):t&&c(t,this._i)&&delete t[this._i]},has:function(e){if(!s(e))return!1;var t=i(e);return t===!0?d(this).has(e):t&&c(t,this._i)}}),l},def:function(e,t,n){var r=i(a(t),!0);return r===!0?d(e).set(t,n):r[e._i]=n,e},ufstore:d}},{"./_an-instance":135,"./_an-object":136,"./_array-methods":139,"./_for-of":157,"./_has":159,"./_is-object":166,"./_meta":174,"./_redefine-all":189}],147:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_export"),a=e("./_meta"),s=e("./_fails"),o=e("./_hide"),u=e("./_redefine-all"),l=e("./_for-of"),c=e("./_an-instance"),p=e("./_is-object"),f=e("./_set-to-string-tag"),h=e("./_object-dp").f,d=e("./_array-methods")(0),y=e("./_descriptors");t.exports=function(e,t,n,m,b,g){var v=r[e],x=v,_=b?"set":"add",E=x&&x.prototype,A={};return y&&"function"==typeof x&&(g||E.forEach&&!s(function(){(new x).entries().next()}))?(x=t(function(t,n){c(t,x,e,"_c"),t._c=new v,void 0!=n&&l(n,b,t[_],t)}),d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),function(e){var t="add"==e||"set"==e;e in E&&(!g||"clear"!=e)&&o(x.prototype,e,function(n,r){if(c(this,x,e),!t&&g&&!p(n))return"get"==e&&void 0;var i=this._c[e](0===n?0:n,r);return t?this:i})}),"size"in E&&h(x.prototype,"size",{get:function(){return this._c.size}})):(x=m.getConstructor(t,e,b,_),u(x.prototype,n),a.NEED=!0),f(x,e),A[e]=x,i(i.G+i.W+i.F,A),g||m.setStrong(x,e,b),x}},{"./_an-instance":135,"./_array-methods":139,"./_descriptors":151,"./_export":155,"./_fails":156,"./_for-of":157,"./_global":158,"./_hide":160,"./_is-object":166,"./_meta":174,"./_object-dp":177,"./_redefine-all":189,"./_set-to-string-tag":193}],148:[function(e,t,n){var r=t.exports={version:"2.4.0"};"number"==typeof __e&&(__e=r)},{}],149:[function(e,t,n){var r=e("./_a-function");t.exports=function(e,t,n){if(r(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,r){return e.call(t,n,r)};case 3:return function(n,r,i){return e.call(t,n,r,i)}}return function(){return e.apply(t,arguments)}}},{"./_a-function":133}],150:[function(e,t,n){t.exports=function(e){if(void 0==e)throw TypeError("Can't call method on  "+e);return e}},{}],151:[function(e,t,n){t.exports=!e("./_fails")(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{"./_fails":156}],152:[function(e,t,n){var r=e("./_is-object"),i=e("./_global").document,a=r(i)&&r(i.createElement);t.exports=function(e){return a?i.createElement(e):{}}},{"./_global":158,"./_is-object":166}],153:[function(e,t,n){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],154:[function(e,t,n){var r=e("./_object-keys"),i=e("./_object-gops"),a=e("./_object-pie");t.exports=function(e){var t=r(e),n=i.f;if(n)for(var s,o=n(e),u=a.f,l=0;o.length>l;)u.call(e,s=o[l++])&&t.push(s);return t}},{"./_object-gops":182,"./_object-keys":185,"./_object-pie":186}],155:[function(e,t,n){var r=e("./_global"),i=e("./_core"),a=e("./_ctx"),s=e("./_hide"),o="prototype",u=function(e,t,n){var l,c,p,f=e&u.F,h=e&u.G,d=e&u.S,y=e&u.P,m=e&u.B,b=e&u.W,g=h?i:i[t]||(i[t]={}),v=g[o],x=h?r:d?r[t]:(r[t]||{})[o];h&&(n=t);for(l in n)c=!f&&x&&void 0!==x[l],c&&l in g||(p=c?x[l]:n[l],g[l]=h&&"function"!=typeof x[l]?n[l]:m&&c?a(p,r):b&&x[l]==p?function(e){var t=function(t,n,r){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,r)}return e.apply(this,arguments)};return t[o]=e[o],t}(p):y&&"function"==typeof p?a(Function.call,p):p,y&&((g.virtual||(g.virtual={}))[l]=p,e&u.R&&v&&!v[l]&&s(v,l,p)))};u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,u.U=64,u.R=128,t.exports=u},{"./_core":148,"./_ctx":149,"./_global":158,"./_hide":160}],156:[function(e,t,n){t.exports=function(e){try{return!!e()}catch(e){return!0}}},{}],157:[function(e,t,n){var r=e("./_ctx"),i=e("./_iter-call"),a=e("./_is-array-iter"),s=e("./_an-object"),o=e("./_to-length"),u=e("./core.get-iterator-method"),l={},c={},n=t.exports=function(e,t,n,p,f){var h,d,y,m,b=f?function(){return e}:u(e),g=r(n,p,t?2:1),v=0;if("function"!=typeof b)throw TypeError(e+" is not iterable!");if(a(b)){for(h=o(e.length);h>v;v++)if(m=t?g(s(d=e[v])[0],d[1]):g(e[v]),m===l||m===c)return m}else for(y=b.call(e);!(d=y.next()).done;)if(m=i(y,g,d.value,t),m===l||m===c)return m};n.BREAK=l,n.RETURN=c},{"./_an-object":136,"./_ctx":149,"./_is-array-iter":164,"./_iter-call":167,"./_to-length":200,"./core.get-iterator-method":207}],158:[function(e,t,n){var r=t.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=r)},{}],159:[function(e,t,n){var r={}.hasOwnProperty;t.exports=function(e,t){return r.call(e,t)}},{}],160:[function(e,t,n){var r=e("./_object-dp"),i=e("./_property-desc");t.exports=e("./_descriptors")?function(e,t,n){return r.f(e,t,i(1,n))}:function(e,t,n){return e[t]=n,e}},{"./_descriptors":151,"./_object-dp":177,"./_property-desc":188}],161:[function(e,t,n){t.exports=e("./_global").document&&document.documentElement},{"./_global":158}],162:[function(e,t,n){t.exports=!e("./_descriptors")&&!e("./_fails")(function(){return 7!=Object.defineProperty(e("./_dom-create")("div"),"a",{get:function(){return 7}}).a})},{"./_descriptors":151,"./_dom-create":152,"./_fails":156}],163:[function(e,t,n){var r=e("./_cof");t.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==r(e)?e.split(""):Object(e)}},{"./_cof":143}],164:[function(e,t,n){var r=e("./_iterators"),i=e("./_wks")("iterator"),a=Array.prototype;t.exports=function(e){return void 0!==e&&(r.Array===e||a[i]===e)}},{"./_iterators":171,"./_wks":206}],165:[function(e,t,n){var r=e("./_cof");t.exports=Array.isArray||function(e){return"Array"==r(e)}},{"./_cof":143}],166:[function(e,t,n){t.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},{}],167:[function(e,t,n){var r=e("./_an-object");t.exports=function(e,t,n,i){try{return i?t(r(n)[0],n[1]):t(n)}catch(t){var a=e.return;throw void 0!==a&&r(a.call(e)),t}}},{"./_an-object":136}],168:[function(e,t,n){"use strict";var r=e("./_object-create"),i=e("./_property-desc"),a=e("./_set-to-string-tag"),s={};e("./_hide")(s,e("./_wks")("iterator"),function(){return this}),t.exports=function(e,t,n){e.prototype=r(s,{next:i(1,n)}),a(e,t+" Iterator")}},{"./_hide":160,"./_object-create":176,"./_property-desc":188,"./_set-to-string-tag":193,"./_wks":206}],169:[function(e,t,n){"use strict";var r=e("./_library"),i=e("./_export"),a=e("./_redefine"),s=e("./_hide"),o=e("./_has"),u=e("./_iterators"),l=e("./_iter-create"),c=e("./_set-to-string-tag"),p=e("./_object-gpo"),f=e("./_wks")("iterator"),h=!([].keys&&"next"in[].keys()),d="keys",y="values",m=function(){return this};t.exports=function(e,t,n,b,g,v,x){l(n,t,b);var _,E,A,D=function(e){if(!h&&e in k)return k[e];switch(e){case d:return function(){return new n(this,e)};case y:return function(){return new n(this,e)}}return function(){return new n(this,e)}},C=t+" Iterator",S=g==y,w=!1,k=e.prototype,F=k[f]||k["@@iterator"]||g&&k[g],T=F||D(g),P=g?S?D("entries"):T:void 0,j="Array"==t?k.entries||F:F;if(j&&(A=p(j.call(new e)),A!==Object.prototype&&(c(A,C,!0),r||o(A,f)||s(A,f,m))),S&&F&&F.name!==y&&(w=!0,T=function(){return F.call(this)}),r&&!x||!h&&!w&&k[f]||s(k,f,T),u[t]=T,u[C]=m,g)if(_={values:S?T:D(y),keys:v?T:D(d),entries:P},x)for(E in _)E in k||a(k,E,_[E]);else i(i.P+i.F*(h||w),t,_);return _}},{"./_export":155,"./_has":159,"./_hide":160,"./_iter-create":168,"./_iterators":171,"./_library":173,"./_object-gpo":183,"./_redefine":190,"./_set-to-string-tag":193,"./_wks":206}],170:[function(e,t,n){t.exports=function(e,t){return{value:t,done:!!e}}},{}],171:[function(e,t,n){t.exports={}},{}],172:[function(e,t,n){var r=e("./_object-keys"),i=e("./_to-iobject");t.exports=function(e,t){for(var n,a=i(e),s=r(a),o=s.length,u=0;o>u;)if(a[n=s[u++]]===t)return n}},{"./_object-keys":185,"./_to-iobject":199}],173:[function(e,t,n){t.exports=!0},{}],174:[function(e,t,n){var r=e("./_uid")("meta"),i=e("./_is-object"),a=e("./_has"),s=e("./_object-dp").f,o=0,u=Object.isExtensible||function(){return!0},l=!e("./_fails")(function(){return u(Object.preventExtensions({}))}),c=function(e){s(e,r,{value:{i:"O"+ ++o,w:{}}})},p=function(e,t){if(!i(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!u(e))return"F";if(!t)return"E";c(e)}return e[r].i},f=function(e,t){if(!a(e,r)){if(!u(e))return!0;if(!t)return!1;c(e)}return e[r].w},h=function(e){return l&&d.NEED&&u(e)&&!a(e,r)&&c(e),e},d=t.exports={KEY:r,NEED:!1,fastKey:p,getWeak:f,onFreeze:h}},{"./_fails":156,"./_has":159,"./_is-object":166,"./_object-dp":177,"./_uid":203}],175:[function(e,t,n){"use strict";var r=e("./_object-keys"),i=e("./_object-gops"),a=e("./_object-pie"),s=e("./_to-object"),o=e("./_iobject"),u=Object.assign;t.exports=!u||e("./_fails")(function(){var e={},t={},n=Symbol(),r="abcdefghijklmnopqrst";return e[n]=7,r.split("").forEach(function(e){t[e]=e}),7!=u({},e)[n]||Object.keys(u({},t)).join("")!=r})?function(e,t){for(var n=s(e),u=arguments.length,l=1,c=i.f,p=a.f;u>l;)for(var f,h=o(arguments[l++]),d=c?r(h).concat(c(h)):r(h),y=d.length,m=0;y>m;)p.call(h,f=d[m++])&&(n[f]=h[f]);return n}:u},{"./_fails":156,"./_iobject":163,"./_object-gops":182,"./_object-keys":185,"./_object-pie":186,"./_to-object":201}],176:[function(e,t,n){var r=e("./_an-object"),i=e("./_object-dps"),a=e("./_enum-bug-keys"),s=e("./_shared-key")("IE_PROTO"),o=function(){},u="prototype",l=function(){var t,n=e("./_dom-create")("iframe"),r=a.length,i="<",s=">";for(n.style.display="none",e("./_html").appendChild(n),n.src="javascript:",t=n.contentWindow.document,t.open(),t.write(i+"script"+s+"document.F=Object"+i+"/script"+s),t.close(),l=t.F;r--;)delete l[u][a[r]];return l()};t.exports=Object.create||function(e,t){var n;return null!==e?(o[u]=r(e),n=new o,o[u]=null,n[s]=e):n=l(),void 0===t?n:i(n,t)}},{"./_an-object":136,"./_dom-create":152,"./_enum-bug-keys":153,"./_html":161,"./_object-dps":178,"./_shared-key":194}],177:[function(e,t,n){var r=e("./_an-object"),i=e("./_ie8-dom-define"),a=e("./_to-primitive"),s=Object.defineProperty;n.f=e("./_descriptors")?Object.defineProperty:function(e,t,n){if(r(e),t=a(t,!0),r(n),i)try{return s(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},{"./_an-object":136,"./_descriptors":151,"./_ie8-dom-define":162,"./_to-primitive":202}],178:[function(e,t,n){var r=e("./_object-dp"),i=e("./_an-object"),a=e("./_object-keys");t.exports=e("./_descriptors")?Object.defineProperties:function(e,t){i(e);for(var n,s=a(t),o=s.length,u=0;o>u;)r.f(e,n=s[u++],t[n]);return e}},{"./_an-object":136,"./_descriptors":151,"./_object-dp":177,"./_object-keys":185}],179:[function(e,t,n){var r=e("./_object-pie"),i=e("./_property-desc"),a=e("./_to-iobject"),s=e("./_to-primitive"),o=e("./_has"),u=e("./_ie8-dom-define"),l=Object.getOwnPropertyDescriptor;n.f=e("./_descriptors")?l:function(e,t){if(e=a(e),t=s(t,!0),u)try{return l(e,t)}catch(e){}if(o(e,t))return i(!r.f.call(e,t),e[t])}},{"./_descriptors":151,"./_has":159,"./_ie8-dom-define":162,"./_object-pie":186,"./_property-desc":188,"./_to-iobject":199,"./_to-primitive":202}],180:[function(e,t,n){var r=e("./_to-iobject"),i=e("./_object-gopn").f,a={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],o=function(e){try{return i(e)}catch(e){return s.slice()}};t.exports.f=function(e){return s&&"[object Window]"==a.call(e)?o(e):i(r(e))}},{"./_object-gopn":181,"./_to-iobject":199}],181:[function(e,t,n){var r=e("./_object-keys-internal"),i=e("./_enum-bug-keys").concat("length","prototype");n.f=Object.getOwnPropertyNames||function(e){return r(e,i)}},{"./_enum-bug-keys":153,"./_object-keys-internal":184}],182:[function(e,t,n){n.f=Object.getOwnPropertySymbols},{}],183:[function(e,t,n){var r=e("./_has"),i=e("./_to-object"),a=e("./_shared-key")("IE_PROTO"),s=Object.prototype;t.exports=Object.getPrototypeOf||function(e){return e=i(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},{"./_has":159,"./_shared-key":194,"./_to-object":201}],184:[function(e,t,n){var r=e("./_has"),i=e("./_to-iobject"),a=e("./_array-includes")(!1),s=e("./_shared-key")("IE_PROTO");t.exports=function(e,t){var n,o=i(e),u=0,l=[];for(n in o)n!=s&&r(o,n)&&l.push(n);for(;t.length>u;)r(o,n=t[u++])&&(~a(l,n)||l.push(n));return l}},{"./_array-includes":138,"./_has":159,"./_shared-key":194,"./_to-iobject":199}],185:[function(e,t,n){var r=e("./_object-keys-internal"),i=e("./_enum-bug-keys");t.exports=Object.keys||function(e){return r(e,i)}},{"./_enum-bug-keys":153,"./_object-keys-internal":184}],186:[function(e,t,n){n.f={}.propertyIsEnumerable},{}],187:[function(e,t,n){var r=e("./_export"),i=e("./_core"),a=e("./_fails");t.exports=function(e,t){var n=(i.Object||{})[e]||Object[e],s={};s[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",s)}},{"./_core":148,"./_export":155,"./_fails":156}],188:[function(e,t,n){t.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},{}],189:[function(e,t,n){var r=e("./_hide");t.exports=function(e,t,n){for(var i in t)n&&e[i]?e[i]=t[i]:r(e,i,t[i]);return e}},{"./_hide":160}],190:[function(e,t,n){t.exports=e("./_hide")},{"./_hide":160}],191:[function(e,t,n){var r=e("./_is-object"),i=e("./_an-object"),a=function(e,t){if(i(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};t.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(t,n,r){try{r=e("./_ctx")(Function.call,e("./_object-gopd").f(Object.prototype,"__proto__").set,2),r(t,[]),n=!(t instanceof Array)}catch(e){n=!0}return function(e,t){return a(e,t),n?e.__proto__=t:r(e,t),e}}({},!1):void 0),check:a}},{"./_an-object":136,"./_ctx":149,"./_is-object":166,"./_object-gopd":179}],192:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_core"),a=e("./_object-dp"),s=e("./_descriptors"),o=e("./_wks")("species");t.exports=function(e){var t="function"==typeof i[e]?i[e]:r[e];s&&t&&!t[o]&&a.f(t,o,{configurable:!0,get:function(){return this}})}},{"./_core":148,"./_descriptors":151,"./_global":158,"./_object-dp":177,"./_wks":206}],193:[function(e,t,n){var r=e("./_object-dp").f,i=e("./_has"),a=e("./_wks")("toStringTag");t.exports=function(e,t,n){
+e&&!i(e=n?e:e.prototype,a)&&r(e,a,{configurable:!0,value:t})}},{"./_has":159,"./_object-dp":177,"./_wks":206}],194:[function(e,t,n){var r=e("./_shared")("keys"),i=e("./_uid");t.exports=function(e){return r[e]||(r[e]=i(e))}},{"./_shared":195,"./_uid":203}],195:[function(e,t,n){var r=e("./_global"),i="__core-js_shared__",a=r[i]||(r[i]={});t.exports=function(e){return a[e]||(a[e]={})}},{"./_global":158}],196:[function(e,t,n){var r=e("./_to-integer"),i=e("./_defined");t.exports=function(e){return function(t,n){var a,s,o=String(i(t)),u=r(n),l=o.length;return u<0||u>=l?e?"":void 0:(a=o.charCodeAt(u),a<55296||a>56319||u+1===l||(s=o.charCodeAt(u+1))<56320||s>57343?e?o.charAt(u):a:e?o.slice(u,u+2):(a-55296<<10)+(s-56320)+65536)}}},{"./_defined":150,"./_to-integer":198}],197:[function(e,t,n){var r=e("./_to-integer"),i=Math.max,a=Math.min;t.exports=function(e,t){return e=r(e),e<0?i(e+t,0):a(e,t)}},{"./_to-integer":198}],198:[function(e,t,n){var r=Math.ceil,i=Math.floor;t.exports=function(e){return isNaN(e=+e)?0:(e>0?i:r)(e)}},{}],199:[function(e,t,n){var r=e("./_iobject"),i=e("./_defined");t.exports=function(e){return r(i(e))}},{"./_defined":150,"./_iobject":163}],200:[function(e,t,n){var r=e("./_to-integer"),i=Math.min;t.exports=function(e){return e>0?i(r(e),9007199254740991):0}},{"./_to-integer":198}],201:[function(e,t,n){var r=e("./_defined");t.exports=function(e){return Object(r(e))}},{"./_defined":150}],202:[function(e,t,n){var r=e("./_is-object");t.exports=function(e,t){if(!r(e))return e;var n,i;if(t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;if("function"==typeof(n=e.valueOf)&&!r(i=n.call(e)))return i;if(!t&&"function"==typeof(n=e.toString)&&!r(i=n.call(e)))return i;throw TypeError("Can't convert object to primitive value")}},{"./_is-object":166}],203:[function(e,t,n){var r=0,i=Math.random();t.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++r+i).toString(36))}},{}],204:[function(e,t,n){var r=e("./_global"),i=e("./_core"),a=e("./_library"),s=e("./_wks-ext"),o=e("./_object-dp").f;t.exports=function(e){var t=i.Symbol||(i.Symbol=a?{}:r.Symbol||{});"_"==e.charAt(0)||e in t||o(t,e,{value:s.f(e)})}},{"./_core":148,"./_global":158,"./_library":173,"./_object-dp":177,"./_wks-ext":205}],205:[function(e,t,n){n.f=e("./_wks")},{"./_wks":206}],206:[function(e,t,n){var r=e("./_shared")("wks"),i=e("./_uid"),a=e("./_global").Symbol,s="function"==typeof a;(t.exports=function(e){return r[e]||(r[e]=s&&a[e]||(s?a:i)("Symbol."+e))}).store=r},{"./_global":158,"./_shared":195,"./_uid":203}],207:[function(e,t,n){var r=e("./_classof"),i=e("./_wks")("iterator"),a=e("./_iterators");t.exports=e("./_core").getIteratorMethod=function(e){if(void 0!=e)return e[i]||e["@@iterator"]||a[r(e)]}},{"./_classof":142,"./_core":148,"./_iterators":171,"./_wks":206}],208:[function(e,t,n){var r=e("./_an-object"),i=e("./core.get-iterator-method");t.exports=e("./_core").getIterator=function(e){var t=i(e);if("function"!=typeof t)throw TypeError(e+" is not iterable!");return r(t.call(e))}},{"./_an-object":136,"./_core":148,"./core.get-iterator-method":207}],209:[function(e,t,n){"use strict";var r=e("./_add-to-unscopables"),i=e("./_iter-step"),a=e("./_iterators"),s=e("./_to-iobject");t.exports=e("./_iter-define")(Array,"Array",function(e,t){this._t=s(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,i(1)):"keys"==t?i(0,n):"values"==t?i(0,e[n]):i(0,[n,e[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},{"./_add-to-unscopables":134,"./_iter-define":169,"./_iter-step":170,"./_iterators":171,"./_to-iobject":199}],210:[function(e,t,n){"use strict";var r=e("./_collection-strong");t.exports=e("./_collection")("Map",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{get:function(e){var t=r.getEntry(this,e);return t&&t.v},set:function(e,t){return r.def(this,0===e?0:e,t)}},r,!0)},{"./_collection":147,"./_collection-strong":144}],211:[function(e,t,n){var r=e("./_export");r(r.S,"Number",{MAX_SAFE_INTEGER:9007199254740991})},{"./_export":155}],212:[function(e,t,n){var r=e("./_export");r(r.S+r.F,"Object",{assign:e("./_object-assign")})},{"./_export":155,"./_object-assign":175}],213:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{create:e("./_object-create")})},{"./_export":155,"./_object-create":176}],214:[function(e,t,n){var r=e("./_to-object"),i=e("./_object-keys");e("./_object-sap")("keys",function(){return function(e){return i(r(e))}})},{"./_object-keys":185,"./_object-sap":187,"./_to-object":201}],215:[function(e,t,n){var r=e("./_export");r(r.S,"Object",{setPrototypeOf:e("./_set-proto").set})},{"./_export":155,"./_set-proto":191}],216:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],217:[function(e,t,n){"use strict";var r=e("./_string-at")(!0);e("./_iter-define")(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},{"./_iter-define":169,"./_string-at":196}],218:[function(e,t,n){"use strict";var r=e("./_global"),i=e("./_has"),a=e("./_descriptors"),s=e("./_export"),o=e("./_redefine"),u=e("./_meta").KEY,l=e("./_fails"),c=e("./_shared"),p=e("./_set-to-string-tag"),f=e("./_uid"),h=e("./_wks"),d=e("./_wks-ext"),y=e("./_wks-define"),m=e("./_keyof"),b=e("./_enum-keys"),g=e("./_is-array"),v=e("./_an-object"),x=e("./_to-iobject"),_=e("./_to-primitive"),E=e("./_property-desc"),A=e("./_object-create"),D=e("./_object-gopn-ext"),C=e("./_object-gopd"),S=e("./_object-dp"),w=e("./_object-keys"),k=C.f,F=S.f,T=D.f,P=r.Symbol,j=r.JSON,B=j&&j.stringify,O="prototype",I=h("_hidden"),N=h("toPrimitive"),L={}.propertyIsEnumerable,M=c("symbol-registry"),R=c("symbols"),U=c("op-symbols"),V=Object[O],G="function"==typeof P,q=r.QObject,K=!q||!q[O]||!q[O].findChild,X=a&&l(function(){return 7!=A(F({},"a",{get:function(){return F(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=k(V,t);r&&delete V[t],F(e,t,n),r&&e!==V&&F(V,t,r)}:F,J=function(e){var t=R[e]=A(P[O]);return t._k=e,t},W=G&&"symbol"==typeof P.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof P},z=function(e,t,n){return e===V&&z(U,t,n),v(e),t=_(t,!0),v(n),i(R,t)?(n.enumerable?(i(e,I)&&e[I][t]&&(e[I][t]=!1),n=A(n,{enumerable:E(0,!1)})):(i(e,I)||F(e,I,E(1,{})),e[I][t]=!0),X(e,t,n)):F(e,t,n)},Y=function(e,t){v(e);for(var n,r=b(t=x(t)),i=0,a=r.length;a>i;)z(e,n=r[i++],t[n]);return e},H=function(e,t){return void 0===t?A(e):Y(A(e),t)},$=function(e){var t=L.call(this,e=_(e,!0));return!(this===V&&i(R,e)&&!i(U,e))&&(!(t||!i(this,e)||!i(R,e)||i(this,I)&&this[I][e])||t)},Q=function(e,t){if(e=x(e),t=_(t,!0),e!==V||!i(R,t)||i(U,t)){var n=k(e,t);return!n||!i(R,t)||i(e,I)&&e[I][t]||(n.enumerable=!0),n}},Z=function(e){for(var t,n=T(x(e)),r=[],a=0;n.length>a;)i(R,t=n[a++])||t==I||t==u||r.push(t);return r},ee=function(e){for(var t,n=e===V,r=T(n?U:x(e)),a=[],s=0;r.length>s;)!i(R,t=r[s++])||n&&!i(V,t)||a.push(R[t]);return a};G||(P=function(){if(this instanceof P)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(n){this===V&&t.call(U,n),i(this,I)&&i(this[I],e)&&(this[I][e]=!1),X(this,e,E(1,n))};return a&&K&&X(V,e,{configurable:!0,set:t}),J(e)},o(P[O],"toString",function(){return this._k}),C.f=Q,S.f=z,e("./_object-gopn").f=D.f=Z,e("./_object-pie").f=$,e("./_object-gops").f=ee,a&&!e("./_library")&&o(V,"propertyIsEnumerable",$,!0),d.f=function(e){return J(h(e))}),s(s.G+s.W+s.F*!G,{Symbol:P});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)h(te[ne++]);for(var te=w(h.store),ne=0;te.length>ne;)y(te[ne++]);s(s.S+s.F*!G,"Symbol",{for:function(e){return i(M,e+="")?M[e]:M[e]=P(e)},keyFor:function(e){if(W(e))return m(M,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){K=!0},useSimple:function(){K=!1}}),s(s.S+s.F*!G,"Object",{create:H,defineProperty:z,defineProperties:Y,getOwnPropertyDescriptor:Q,getOwnPropertyNames:Z,getOwnPropertySymbols:ee}),j&&s(s.S+s.F*(!G||l(function(){var e=P();return"[null]"!=B([e])||"{}"!=B({a:e})||"{}"!=B(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!W(e)){for(var t,n,r=[e],i=1;arguments.length>i;)r.push(arguments[i++]);return t=r[1],"function"==typeof t&&(n=t),!n&&g(t)||(t=function(e,t){if(n&&(t=n.call(this,e,t)),!W(t))return t}),r[1]=t,B.apply(j,r)}}}),P[O][N]||e("./_hide")(P[O],N,P[O].valueOf),p(P,"Symbol"),p(Math,"Math",!0),p(r.JSON,"JSON",!0)},{"./_an-object":136,"./_descriptors":151,"./_enum-keys":154,"./_export":155,"./_fails":156,"./_global":158,"./_has":159,"./_hide":160,"./_is-array":165,"./_keyof":172,"./_library":173,"./_meta":174,"./_object-create":176,"./_object-dp":177,"./_object-gopd":179,"./_object-gopn":181,"./_object-gopn-ext":180,"./_object-gops":182,"./_object-keys":185,"./_object-pie":186,"./_property-desc":188,"./_redefine":190,"./_set-to-string-tag":193,"./_shared":195,"./_to-iobject":199,"./_to-primitive":202,"./_uid":203,"./_wks":206,"./_wks-define":204,"./_wks-ext":205}],219:[function(e,t,n){"use strict";var r,i=e("./_array-methods")(0),a=e("./_redefine"),s=e("./_meta"),o=e("./_object-assign"),u=e("./_collection-weak"),l=e("./_is-object"),c=s.getWeak,p=Object.isExtensible,f=u.ufstore,h={},d=function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},y={get:function(e){if(l(e)){var t=c(e);return t===!0?f(this).get(e):t?t[this._i]:void 0}},set:function(e,t){return u.def(this,e,t)}},m=t.exports=e("./_collection")("WeakMap",d,y,u,!0,!0);7!=(new m).set((Object.freeze||Object)(h),7).get(h)&&(r=u.getConstructor(d),o(r.prototype,y),s.NEED=!0,i(["delete","has","get","set"],function(e){var t=m.prototype,n=t[e];a(t,e,function(t,i){if(l(t)&&!p(t)){this._f||(this._f=new r);var a=this._f[e](t,i);return"set"==e?this:a}return n.call(this,t,i)})}))},{"./_array-methods":139,"./_collection":147,"./_collection-weak":146,"./_is-object":166,"./_meta":174,"./_object-assign":175,"./_redefine":190}],220:[function(e,t,n){"use strict";var r=e("./_collection-weak");e("./_collection")("WeakSet",function(e){return function(){return e(this,arguments.length>0?arguments[0]:void 0)}},{add:function(e){return r.def(this,e,!0)}},r,!1,!0)},{"./_collection":147,"./_collection-weak":146}],221:[function(e,t,n){var r=e("./_export");r(r.P+r.R,"Map",{toJSON:e("./_collection-to-json")("Map")})},{"./_collection-to-json":145,"./_export":155}],222:[function(e,t,n){e("./_wks-define")("asyncIterator")},{"./_wks-define":204}],223:[function(e,t,n){e("./_wks-define")("observable")},{"./_wks-define":204}],224:[function(e,t,n){e("./es6.array.iterator");for(var r=e("./_global"),i=e("./_hide"),a=e("./_iterators"),s=e("./_wks")("toStringTag"),o=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],u=0;u<5;u++){var l=o[u],c=r[l],p=c&&c.prototype;p&&!p[s]&&i(p,s,l),a[l]=a.Array}},{"./_global":158,"./_hide":160,"./_iterators":171,"./_wks":206,"./es6.array.iterator":209}],225:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){e=(0,l.default)(e);var n=e,r=n.program;return t.length&&(0,y.default)(e,E,null,t),r.body.length>1?r.body:r.body[0]}n.__esModule=!0;var s=e("babel-runtime/core-js/symbol"),o=i(s);n.default=function(e,t){var n=void 0;try{throw new Error}catch(e){e.stack&&(n=e.stack.split("\n").slice(1).join("\n"))}t=(0,p.default)({allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,preserveComments:!1},t);var r=function(){var i=void 0;try{i=b.parse(e,t),i=y.default.removeProperties(i,{preserveComments:t.preserveComments}),y.default.cheap(i,function(e){e[x]=!0})}catch(e){throw e.stack=e.stack+"from\n"+n,e}return r=function(){return i},i};return function(){for(var e=arguments.length,t=Array(e),n=0;n=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}if(e[s])return!0}return!1},e.prototype.create=function(e,t,n,r){return p.default.get({parentPath:this.parentPath,parent:e,container:t,key:n,listKey:r})},e.prototype.maybeQueue=function(e,t){if(this.trap)throw new Error("Infinite cycle detected");this.queue&&(t?this.queue.push(e):this.priorityQueue.push(e))},e.prototype.visitMultiple=function(e,t,n){if(0===e.length)return!1;for(var r=[],i=0;i=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var u=s;if(u.resync(),0!==u.contexts.length&&u.contexts[u.contexts.length-1]===this||u.pushContext(this),null!==u.key&&(d&&e.length>=1e4&&(this.trap=!0),!(t.indexOf(u.node)>=0))){if(t.push(u.node),u.visit()){n=!0;break}if(this.priorityQueue.length&&(n=this.visitQueue(this.priorityQueue),this.priorityQueue=[],this.queue=e,n))break}}for(var l=e,c=Array.isArray(l),p=0,l=c?l:(0,o.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}f.popContext()}return this.queue=null,n},e.prototype.visit=function(e,t){var n=e[t];return!!n&&(Array.isArray(n)?this.visitMultiple(n,e,t):this.visitSingle(e,t))},e}();n.default=y,t.exports=n.default}).call(this,e("_process"))},{"./path":236,_process:13,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],228:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=function e(t,n){(0,a.default)(this,e),this.file=t,this.options=n};n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],229:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t,n,r,i){if(e){if(t||(t={}),!t.noScope&&!n&&"Program"!==e.type&&"File"!==e.type)throw new Error(b.get("traverseNeedsParent",e.type));y.explode(t),a.node(e,t,n,r,i)}}function s(e,t){e.node.type===t.type&&(t.has=!0,e.stop())}n.__esModule=!0,n.visitors=n.Hub=n.Scope=n.NodePath=void 0;var o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("./path");Object.defineProperty(n,"NodePath",{enumerable:!0,get:function(){return i(l).default}});var c=e("./scope");Object.defineProperty(n,"Scope",{enumerable:!0,get:function(){return i(c).default}});var p=e("./hub");Object.defineProperty(n,"Hub",{enumerable:!0,get:function(){return i(p).default}}),n.default=a;var f=e("./context"),h=i(f),d=e("./visitors"),y=r(d),m=e("babel-messages"),b=r(m),g=e("lodash/includes"),v=i(g),x=e("babel-types"),_=r(x),E=e("./cache"),A=r(E);n.visitors=y,a.visitors=y,a.verify=y.verify,a.explode=y.explode,a.NodePath=e("./path"),a.Scope=e("./scope"),a.Hub=e("./hub"),a.cheap=function(e,t){return _.traverseFast(e,t)},a.node=function(e,t,n,r,i,a){var s=_.VISITOR_KEYS[e.type];if(s)for(var o=new h.default(n,t,r,i),l=s,c=Array.isArray(l),p=0,l=c?l:(0,u.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var d=f;if((!a||!a[d])&&o.visit(e,d))return}},a.clearNode=function(e,t){_.removeProperties(e,t),A.path.delete(e)},a.removeProperties=function(e,t){return _.traverseFast(e,a.clearNode,t),e},a.hasType=function(e,t,n,r){if((0,v.default)(r,e.type))return!1;if(e.type===n)return!0;var i={has:!1,type:n};return a(e,{blacklist:r,enter:s},t,i),i.has},a.clearCache=function(){A.clear()},a.clearCache.clearPath=A.clearPath,a.clearCache.clearScope=A.clearScope,a.copyCache=function(e,t){A.path.has(e)&&A.path.set(t,A.path.get(e))}},{"./cache":226,"./context":227,"./hub":228,"./path":236,"./scope":248,"./visitors":250,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-types":265,"lodash/includes":473}],230:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){for(var t=this;t=t.parentPath;)if(e(t))return t;return null}function s(e){var t=this;do if(e(t))return t;while(t=t.parentPath);return null}function o(){return this.findParent(function(e){return e.isFunction()||e.isProgram()})}function u(){var e=this;do if(Array.isArray(e.container))return e;while(e=e.parentPath)}function l(e){return this.getDeepestCommonAncestorFrom(e,function(e,t,n){for(var r=void 0,i=v.VISITOR_KEYS[e.type],a=n,s=Array.isArray(a),o=0,a=s?a:(0,b.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u,c=l[t+1];if(r)if(c.listKey&&r.listKey===c.listKey&&c.keyf&&(r=c)}else r=c}return r})}function c(e,t){var n=this;if(!e.length)return this;if(1===e.length)return e[0];var r=1/0,i=void 0,a=void 0,s=e.map(function(e){var t=[];do t.unshift(e);while((e=e.parentPath)&&e!==n);return t.length=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;if(d[u]!==l)break e}i=u,a=l}if(a)return t?t(a,i,s):a;throw new Error("Couldn't find intersection")}function p(){var e=this,t=[];do t.push(e);while(e=e.parentPath);return t}function f(e){return e.isDescendant(this)}function h(e){return!!this.findParent(function(t){return t===e})}function d(){for(var e=this;e;){for(var t=arguments,n=Array.isArray(t),r=0,t=n?t:(0,b.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(e.node.type===a)return!0}e=e.parentPath}return!1}function y(e){var t=this.isFunction()?this:this.findParent(function(e){return e.isFunction()});if(t){if(t.isFunctionExpression()||t.isFunctionDeclaration()){var n=t.node.shadow;if(n&&(!e||n[e]!==!1))return t}else if(t.isArrowFunctionExpression())return t;return null}}n.__esModule=!0;var m=e("babel-runtime/core-js/get-iterator"),b=i(m);n.findParent=a,n.find=s,n.getFunctionParent=o,n.getStatementParent=u,n.getEarliestCommonAncestorFrom=l,n.getDeepestCommonAncestorFrom=c,n.getAncestry=p,n.isAncestor=f,n.isDescendant=h,n.inType=d,n.inShadow=y;var g=e("babel-types"),v=r(g),x=e("./index");i(x)},{"./index":236,"babel-runtime/core-js/get-iterator":100,"babel-types":265}],231:[function(e,t,n){"use strict";function r(){if("string"!=typeof this.key){var e=this.node;if(e){var t=e.trailingComments,n=e.leadingComments;if(t||n){var r=this.getSibling(this.key-1),i=this.getSibling(this.key+1);r.node||(r=i),i.node||(i=r),r.addComments("trailing",n),i.addComments("leading",t)}}}}function i(e,t,n){this.addComments(e,[{type:n?"CommentLine":"CommentBlock",value:t}])}function a(e,t){if(t){var n=this.node;if(n){var r=e+"Comments";n[r]?n[r]=n[r].concat(t):n[r]=t}}}n.__esModule=!0,n.shareCommentsWithSiblings=r,n.addComment=i,n.addComments=a},{}],232:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){var t=this.opts;return this.debug(function(){return e}),!(!this.node||!this._call(t[e]))||!!this.node&&this._call(t[this.node.type]&&t[this.node.type][e])}function a(e){if(!e)return!1;for(var t=e,n=Array.isArray(t),r=0,t=n?t:(0,C.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;if(a){var s=this.node;if(!s)return!0;if(a.call(this.state,this,this.state))throw new Error("Unexpected return value from visitor method "+a);if(this.node!==s)return!0;if(this.shouldStop||this.shouldSkip||this.removed)return!0}}return!1}function s(){var e=this.opts.blacklist;return e&&e.indexOf(this.node.type)>-1}function o(){return!!this.node&&(!this.isBlacklisted()&&((!this.opts.shouldSkip||!this.opts.shouldSkip(this))&&(this.call("enter")||this.shouldSkip?(this.debug(function(){return"Skip..."}),this.shouldStop):(this.debug(function(){return"Recursing into..."}),w.default.node(this.node,this.opts,this.scope,this.state,this,this.skipKeys),this.call("exit"),this.shouldStop))))}function u(){this.shouldSkip=!0}function l(e){this.skipKeys[e]=!0}function c(){this.shouldStop=!0,this.shouldSkip=!0}function p(){if(!this.opts||!this.opts.noScope){var e=this.context&&this.context.scope;if(!e)for(var t=this.parentPath;t&&!e;){if(t.opts&&t.opts.noScope)return;e=t.scope,t=t.parentPath}this.scope=this.getScope(e),this.scope&&this.scope.init()}}function f(e){return this.shouldSkip=!1,this.shouldStop=!1,this.removed=!1,this.skipKeys={},e&&(this.context=e,this.state=e.state,this.opts=e.opts),this.setScope(),this}function h(){this.removed||(this._resyncParent(),this._resyncList(),this._resyncKey())}function d(){this.parentPath&&(this.parent=this.parentPath.node)}function y(){if(this.container&&this.node!==this.container[this.key]){if(Array.isArray(this.container)){for(var e=0;e0&&void 0!==arguments[0]?arguments[0]:this;if(!e.removed)for(var t=this.contexts,n=t,r=Array.isArray(n),i=0,n=r?n:(0,C.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;s.maybeQueue(e)}}function A(){for(var e=this,t=this.contexts;!t.length;)e=e.parentPath,t=e.contexts;return t}n.__esModule=!0;var D=e("babel-runtime/core-js/get-iterator"),C=r(D);n.call=i,n._call=a,n.isBlacklisted=s,n.visit=o,n.skip=u,n.skipKey=l,n.stop=c,n.setScope=p,n.setContext=f,n.resync=h,n._resyncParent=d,n._resyncKey=y,n._resyncList=m,n._resyncRemoved=b,n.popContext=g,n.pushContext=v,n.setup=x,n.setKey=_,n.requeue=E,n._getQueueContexts=A;var S=e("../index"),w=r(S)},{"../index":229,"babel-runtime/core-js/get-iterator":100}],233:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(){var e=this.node,t=void 0;if(this.isMemberExpression())t=e.property;else{if(!this.isProperty()&&!this.isMethod())throw new ReferenceError("todo");t=e.key}return e.computed||u.isIdentifier(t)&&(t=u.stringLiteral(t.name)),t}function a(){return u.ensureBlock(this.node)}function s(){if(this.isArrowFunctionExpression()){this.ensureBlock();var e=this.node;e.expression=!1,e.type="FunctionExpression",e.shadow=e.shadow||!0}}n.__esModule=!0,n.toComputedKey=i,n.ensureBlock=a,n.arrowFunctionToShadowed=s;var o=e("babel-types"),u=r(o)},{"babel-types":265}],234:[function(e,t,n){(function(t){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){var e=this.evaluate();if(e.confident)return!!e.value}function a(){function e(e){i&&(a=e,i=!1)}function n(t){var n=t.node;if(s.has(n)){var a=s.get(n);return a.resolved?a.value:void e(t)}var o={resolved:!1};s.set(n,o);var u=r(t);return i&&(o.resolved=!0,o.value=u),u}function r(r){if(i){var a=r.node;if(r.isSequenceExpression()){var s=r.get("expressions");return n(s[s.length-1])}if(r.isStringLiteral()||r.isNumericLiteral()||r.isBooleanLiteral())return a.value;if(r.isNullLiteral())return null;if(r.isTemplateLiteral()){for(var u="",c=0,p=r.get("expressions"),d=a.quasis,y=Array.isArray(d),m=0,d=y?d:(0,l.default)(d);;){var b;if(y){if(m>=d.length)break;b=d[m++]}else{if(m=d.next(),m.done)break;b=m.value}var g=b;if(!i)break;u+=g.value.cooked;var v=p[c++];v&&(u+=String(n(v)))}if(!i)return;return u}if(r.isConditionalExpression()){var x=n(r.get("test"));if(!i)return;return n(x?r.get("consequent"):r.get("alternate"))}if(r.isExpressionWrapper())return n(r.get("expression"));if(r.isMemberExpression()&&!r.parentPath.isCallExpression({callee:a})){var _=r.get("property"),E=r.get("object");if(E.isLiteral()&&_.isIdentifier()){var A=E.node.value,D=void 0===A?"undefined":(0,o.default)(A);if("number"===D||"string"===D)return A[_.node.name]}}if(r.isReferencedIdentifier()){var C=r.scope.getBinding(a.name);if(C&&C.constantViolations.length>0)return e(C.path);if(C&&r.node.start=P.length)break;O=P[B++]}else{if(B=P.next(),B.done)break;O=B.value}var I=O;if(I=I.evaluate(),!I.confident)return e(I);F.push(I.value)}return F}if(r.isObjectExpression()){for(var N={},L=r.get("properties"),M=L,R=Array.isArray(M),U=0,M=R?M:(0,l.default)(M);;){var V;if(R){if(U>=M.length)break;V=M[U++]}else{if(U=M.next(),U.done)break;V=U.value}var G=V;if(G.isObjectMethod()||G.isSpreadProperty())return e(G);var q=G.get("key"),K=q;if(G.node.computed){if(K=K.evaluate(),!K.confident)return e(q);K=K.value}else K=K.isIdentifier()?K.node.name:K.node.value;var X=G.get("value"),J=X.evaluate();if(!J.confident)return e(X);J=J.value,N[K]=J}return N}if(r.isLogicalExpression()){var W=i,z=n(r.get("left")),Y=i;i=W;var H=n(r.get("right")),$=i;switch(i=Y&&$,a.operator){case"||":if(z&&Y)return i=!0,z;if(!i)return;return z||H;case"&&":if((!z&&Y||!H&&$)&&(i=!0),!i)return;return z&&H}}if(r.isBinaryExpression()){var Q=n(r.get("left"));if(!i)return;var Z=n(r.get("right"));if(!i)return;switch(a.operator){case"-":return Q-Z;case"+":return Q+Z;case"/":return Q/Z;case"*":return Q*Z;case"%":return Q%Z;case"**":return Math.pow(Q,Z);case"<":return Q":return Q>Z;case"<=":return Q<=Z;case">=":return Q>=Z;case"==":return Q==Z;case"!=":return Q!=Z;case"===":return Q===Z;case"!==":return Q!==Z;case"|":return Q|Z;case"&":return Q&Z;case"^":return Q^Z;case"<<":return Q<>":return Q>>Z;case">>>":return Q>>>Z}}if(r.isCallExpression()){var ee=r.get("callee"),te=void 0,ne=void 0;if(ee.isIdentifier()&&!r.scope.getBinding(ee.node.name,!0)&&f.indexOf(ee.node.name)>=0&&(ne=t[a.callee.name]),ee.isMemberExpression()){var re=ee.get("object"),ie=ee.get("property");if(re.isIdentifier()&&ie.isIdentifier()&&f.indexOf(re.node.name)>=0&&h.indexOf(ie.node.name)<0&&(te=t[re.node.name],ne=te[ie.node.name]),re.isLiteral()&&ie.isIdentifier()){var ae=(0,o.default)(re.node.value);"string"!==ae&&"number"!==ae||(te=re.node.value,ne=te[ie.node.name])}}if(ne){var se=r.get("arguments").map(n);if(!i)return;return ne.apply(te,se)}}e(r)}}var i=!0,a=void 0,s=new p.default,u=n(this);return i||(u=void 0),{confident:i,deopt:a,value:u}}n.__esModule=!0;var s=e("babel-runtime/helpers/typeof"),o=r(s),u=e("babel-runtime/core-js/get-iterator"),l=r(u),c=e("babel-runtime/core-js/map"),p=r(c);n.evaluateTruthy=i,n.evaluate=a;var f=["String","Number","Math"],h=["random"]}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/map":102,"babel-runtime/helpers/typeof":118}],235:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){var e=this;do{if(!e.parentPath||Array.isArray(e.container)&&e.isStatement())break;e=e.parentPath}while(e);if(e&&(e.isProgram()||e.isFile()))throw new Error("File/Program node, we can't possibly find a statement parent to this");return e}function s(){return"left"===this.key?this.getSibling("right"):"right"===this.key?this.getSibling("left"):void 0}function o(){var e=[],t=function(t){t&&(e=e.concat(t.getCompletionRecords()))};if(this.isIfStatement())t(this.get("consequent")),t(this.get("alternate"));else if(this.isDoExpression()||this.isFor()||this.isWhile())t(this.get("body"));else if(this.isProgram()||this.isBlockStatement())t(this.get("body").pop());else{if(this.isFunction())return this.get("body").getCompletionRecords();this.isTryStatement()?(t(this.get("block")),t(this.get("handler")),t(this.get("finalizer"))):e.push(this)}return e}function u(e){return _.default.get({parentPath:this.parentPath,parent:this.parent,container:this.container,listKey:this.listKey,key:e})}function l(e,t){t===!0&&(t=this.context);var n=e.split(".");return 1===n.length?this._getKey(e,t):this._getPattern(n,t)}function c(e,t){var n=this,r=this.node,i=r[e];return Array.isArray(i)?i.map(function(a,s){return _.default.get({listKey:e,parentPath:n,parent:r,container:i,key:s}).setContext(t)}):_.default.get({parentPath:this,parent:r,container:r,key:e}).setContext(t)}function p(e,t){
+for(var n=this,r=e,i=Array.isArray(r),a=0,r=i?r:(0,v.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;n="."===o?n.parentPath:Array.isArray(n)?n[o]:n.get(o,t)}return n}function f(e){return A.getBindingIdentifiers(this.node,e)}function h(e){return A.getOuterBindingIdentifiers(this.node,e)}function d(){for(var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this,r=[].concat(n),i=(0,b.default)(null);r.length;){var a=r.shift();if(a&&a.node){var s=A.getBindingIdentifiers.keys[a.node.type];if(a.isIdentifier())if(e){var o=i[a.node.name]=i[a.node.name]||[];o.push(a)}else i[a.node.name]=a;else if(a.isExportDeclaration()){var u=a.get("declaration");u.isDeclaration()&&r.push(u)}else{if(t){if(a.isFunctionDeclaration()){r.push(a.get("id"));continue}if(a.isFunctionExpression())continue}if(s)for(var l=0;l1&&void 0!==arguments[1]?arguments[1]:SyntaxError;return this.hub.file.buildCodeFrameError(this.node,e,t)},e.prototype.traverse=function(e,t){(0,m.default)(this.node,e,this.scope,t,this)},e.prototype.mark=function(e,t){this.hub.file.metadata.marked.push({type:e,message:t,loc:this.node.loc})},e.prototype.set=function(e,t){E.validate(this.node,e,t),this.node[e]=t},e.prototype.getPathLocation=function(){var e=[],t=this;do{var n=t.key;t.inList&&(n=t.listKey+"["+n+"]"),e.unshift(n)}while(t=t.parentPath);return e.join(".")},e.prototype.debug=function(e){D.enabled&&D(this.getPathLocation()+" "+this.type+": "+e())},e}();n.default=C,(0,g.default)(C.prototype,e("./ancestry")),(0,g.default)(C.prototype,e("./inference")),(0,g.default)(C.prototype,e("./replacement")),(0,g.default)(C.prototype,e("./evaluation")),(0,g.default)(C.prototype,e("./conversion")),(0,g.default)(C.prototype,e("./introspection")),(0,g.default)(C.prototype,e("./context")),(0,g.default)(C.prototype,e("./removal")),(0,g.default)(C.prototype,e("./modification")),(0,g.default)(C.prototype,e("./family")),(0,g.default)(C.prototype,e("./comments"));for(var S=function(){if(k){if(F>=w.length)return"break";T=w[F++]}else{if(F=w.next(),F.done)return"break";T=F.value}var e=T,t="is"+e;C.prototype[t]=function(e){return E[t](this.node,e)},C.prototype["assert"+e]=function(n){if(!this[t](n))throw new TypeError("Expected node path of type "+e)}},w=E.TYPES,k=Array.isArray(w),F=0,w=k?w:(0,s.default)(w);;){var T;if("break"===S())break}var P=function(e){if("_"===e[0])return"continue";E.TYPES.indexOf(e)<0&&E.TYPES.push(e);var t=c[e];C.prototype["is"+e]=function(e){return t.checkPath(this,e)}};for(var j in c){P(j)}t.exports=n.default},{"../cache":226,"../index":229,"../scope":248,"./ancestry":230,"./comments":231,"./context":232,"./conversion":233,"./evaluation":234,"./family":235,"./inference":237,"./introspection":240,"./lib/virtual-types":243,"./modification":244,"./removal":245,"./replacement":246,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265,debug:278,invariant:253,"lodash/assign":453}],237:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){if(this.typeAnnotation)return this.typeAnnotation;var e=this._getTypeAnnotation()||b.anyTypeAnnotation();return b.isTypeAnnotation(e)&&(e=e.typeAnnotation),this.typeAnnotation=e}function s(){var e=this.node;{if(e){if(e.typeAnnotation)return e.typeAnnotation;var t=y[e.type];return t?t.call(this,e):(t=y[this.parentPath.type],t&&t.validParent?this.parentPath.getTypeAnnotation():void 0)}if("init"===this.key&&this.parentPath.isVariableDeclarator()){var n=this.parentPath.parentPath,r=n.parentPath;return"left"===n.key&&r.isForInStatement()?b.stringTypeAnnotation():"left"===n.key&&r.isForOfStatement()?b.anyTypeAnnotation():b.voidTypeAnnotation()}}}function o(e,t){return u(e,this.getTypeAnnotation(),t)}function u(e,t,n){if("string"===e)return b.isStringTypeAnnotation(t);if("number"===e)return b.isNumberTypeAnnotation(t);if("boolean"===e)return b.isBooleanTypeAnnotation(t);if("any"===e)return b.isAnyTypeAnnotation(t);if("mixed"===e)return b.isMixedTypeAnnotation(t);if("empty"===e)return b.isEmptyTypeAnnotation(t);if("void"===e)return b.isVoidTypeAnnotation(t);if(n)return!1;throw new Error("Unknown base type "+e)}function l(e){var t=this.getTypeAnnotation();if(b.isAnyTypeAnnotation(t))return!0;if(b.isUnionTypeAnnotation(t)){for(var n=t.types,r=Array.isArray(n),i=0,n=r?n:(0,h.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;if(b.isAnyTypeAnnotation(s)||u(e,s,!0))return!0}return!1}return u(e,t,!0)}function c(e){var t=this.getTypeAnnotation();if(e=e.getTypeAnnotation(),!b.isAnyTypeAnnotation(t)&&b.isFlowBaseAnnotation(t))return e.type===t.type}function p(e){var t=this.getTypeAnnotation();return b.isGenericTypeAnnotation(t)&&b.isIdentifier(t.id,{name:e})}n.__esModule=!0;var f=e("babel-runtime/core-js/get-iterator"),h=i(f);n.getTypeAnnotation=a,n._getTypeAnnotation=s,n.isBaseType=o,n.couldBeBaseType=l,n.baseTypeStrictlyMatches=c,n.isGenericType=p;var d=e("./inferers"),y=r(d),m=e("babel-types"),b=r(m)},{"./inferers":239,"babel-runtime/core-js/get-iterator":100,"babel-types":265}],238:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){var n=e.scope.getBinding(t),r=[];e.typeAnnotation=h.unionTypeAnnotation(r);var i=[],a=s(n,e,i),o=l(e,t);if(o&&function(){var e=s(n,o.ifStatement);a=a.filter(function(t){return e.indexOf(t)<0}),r.push(o.typeAnnotation)}(),a.length){a=a.concat(i);for(var u=a,c=Array.isArray(u),f=0,u=c?u:(0,p.default)(u);;){var d;if(c){if(f>=u.length)break;d=u[f++]}else{if(f=u.next(),f.done)break;d=f.value}var y=d;r.push(y.getTypeAnnotation())}}if(r.length)return h.createUnionTypeAnnotation(r)}function s(e,t,n){var r=e.constantViolations.slice();return r.unshift(e.path),r.filter(function(e){e=e.resolve();var r=e._guessExecutionStatusRelativeTo(t);return n&&"function"===r&&n.push(e),"before"===r})}function o(e,t){var n=t.node.operator,r=t.get("right").resolve(),i=t.get("left").resolve(),a=void 0;if(i.isIdentifier({name:e})?a=r:r.isIdentifier({name:e})&&(a=i),a)return"==="===n?a.getTypeAnnotation():h.BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(n)>=0?h.numberTypeAnnotation():void 0;if("==="===n){var s=void 0,o=void 0;if(i.isUnaryExpression({operator:"typeof"})?(s=i,o=r):r.isUnaryExpression({operator:"typeof"})&&(s=r,o=i),(o||s)&&(o=o.resolve(),o.isLiteral())){if("string"==typeof o.node.value&&s.get("argument").isIdentifier({name:e}))return h.createTypeAnnotationBasedOnTypeof(o.node.value)}}}function u(e){for(var t=void 0;t=e.parentPath;){if(t.isIfStatement()||t.isConditionalExpression())return"test"===e.key?void 0:t;e=t}}function l(e,t){var n=u(e);if(n){var r=n.get("test"),i=[r],a=[];do{var s=i.shift().resolve();if(s.isLogicalExpression()&&(i.push(s.get("left")),i.push(s.get("right"))),s.isBinaryExpression()){var c=o(t,s);c&&a.push(c)}}while(i.length);return a.length?{typeAnnotation:h.createUnionTypeAnnotation(a),ifStatement:n}:l(n,t)}}n.__esModule=!0;var c=e("babel-runtime/core-js/get-iterator"),p=i(c);n.default=function(e){if(this.isReferenced()){var t=this.scope.getBinding(e.name);return t?t.identifier.typeAnnotation?t.identifier.typeAnnotation:a(this,e.name):"undefined"===e.name?h.voidTypeAnnotation():"NaN"===e.name||"Infinity"===e.name?h.numberTypeAnnotation():void e.name}};var f=e("babel-types"),h=r(f);t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"babel-types":265}],239:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){return this.get("id").isIdentifier()?this.get("init").getTypeAnnotation():void 0}function s(e){return e.typeAnnotation}function o(e){if(this.get("callee").isIdentifier())return T.genericTypeAnnotation(e.callee)}function u(){return T.stringTypeAnnotation()}function l(e){var t=e.operator;return"void"===t?T.voidTypeAnnotation():T.NUMBER_UNARY_OPERATORS.indexOf(t)>=0?T.numberTypeAnnotation():T.STRING_UNARY_OPERATORS.indexOf(t)>=0?T.stringTypeAnnotation():T.BOOLEAN_UNARY_OPERATORS.indexOf(t)>=0?T.booleanTypeAnnotation():void 0}function c(e){var t=e.operator;if(T.NUMBER_BINARY_OPERATORS.indexOf(t)>=0)return T.numberTypeAnnotation();if(T.BOOLEAN_BINARY_OPERATORS.indexOf(t)>=0)return T.booleanTypeAnnotation();if("+"===t){var n=this.get("right"),r=this.get("left");return r.isBaseType("number")&&n.isBaseType("number")?T.numberTypeAnnotation():r.isBaseType("string")||n.isBaseType("string")?T.stringTypeAnnotation():T.unionTypeAnnotation([T.stringTypeAnnotation(),T.numberTypeAnnotation()])}}function p(){return T.createUnionTypeAnnotation([this.get("left").getTypeAnnotation(),this.get("right").getTypeAnnotation()])}function f(){return T.createUnionTypeAnnotation([this.get("consequent").getTypeAnnotation(),this.get("alternate").getTypeAnnotation()])}function h(){return this.get("expressions").pop().getTypeAnnotation()}function d(){return this.get("right").getTypeAnnotation()}function y(e){var t=e.operator;if("++"===t||"--"===t)return T.numberTypeAnnotation()}function m(){return T.stringTypeAnnotation()}function b(){return T.numberTypeAnnotation()}function g(){return T.booleanTypeAnnotation()}function v(){return T.nullLiteralTypeAnnotation()}function x(){return T.genericTypeAnnotation(T.identifier("RegExp"))}function _(){return T.genericTypeAnnotation(T.identifier("Object"))}function E(){return T.genericTypeAnnotation(T.identifier("Array"))}function A(){return E()}function D(){return T.genericTypeAnnotation(T.identifier("Function"))}function C(){return w(this.get("callee"))}function S(){return w(this.get("tag"))}function w(e){if(e=e.resolve(),e.isFunction()){if(e.is("async"))return e.is("generator")?T.genericTypeAnnotation(T.identifier("AsyncIterator")):T.genericTypeAnnotation(T.identifier("Promise"));if(e.node.returnType)return e.node.returnType}}n.__esModule=!0,n.ClassDeclaration=n.ClassExpression=n.FunctionDeclaration=n.ArrowFunctionExpression=n.FunctionExpression=n.Identifier=void 0;var k=e("./inferer-reference");Object.defineProperty(n,"Identifier",{enumerable:!0,get:function(){return i(k).default}}),n.VariableDeclarator=a,n.TypeCastExpression=s,n.NewExpression=o,n.TemplateLiteral=u,n.UnaryExpression=l,n.BinaryExpression=c,n.LogicalExpression=p,n.ConditionalExpression=f,n.SequenceExpression=h,n.AssignmentExpression=d,n.UpdateExpression=y,n.StringLiteral=m,n.NumericLiteral=b,n.BooleanLiteral=g,n.NullLiteral=v,n.RegExpLiteral=x,n.ObjectExpression=_,n.ArrayExpression=E,n.RestElement=A,n.CallExpression=C,n.TaggedTemplateExpression=S;var F=e("babel-types"),T=r(F);s.validParent=!0,A.validParent=!0,n.FunctionExpression=D,n.ArrowFunctionExpression=D,n.FunctionDeclaration=D,n.ClassExpression=D,n.ClassDeclaration=D},{"./inferer-reference":238,"babel-types":265}],240:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){function n(e){var t=r[a];return"*"===t||e===t}if(!this.isMemberExpression())return!1;for(var r=e.split("."),i=[this.node],a=0;i.length;){var s=i.shift();if(t&&a===r.length)return!0;if(F.isIdentifier(s)){if(!n(s.name))return!1}else if(F.isLiteral(s)){if(!n(s.value))return!1}else{if(F.isMemberExpression(s)){if(s.computed&&!F.isLiteral(s.property))return!1;i.unshift(s.property),i.unshift(s.object);continue}if(!F.isThisExpression(s))return!1;if(!n("this"))return!1}if(++a>r.length)return!1}return a===r.length}function s(e){var t=this.node&&this.node[e];return t&&Array.isArray(t)?!!t.length:!!t}function o(){return this.scope.isStatic(this.node)}function u(e){return!this.has(e)}function l(e,t){return this.node[e]===t}function c(e){return F.isType(this.type,e)}function p(){return("init"===this.key||"left"===this.key)&&this.parentPath.isFor()}function f(e){return!("body"!==this.key||!this.parentPath.isArrowFunctionExpression())&&(this.isExpression()?F.isBlockStatement(e):!!this.isBlockStatement()&&F.isExpression(e))}function h(e){var t=this,n=!0;do{var r=t.container;if(t.isFunction()&&!n)return!!e;if(n=!1,Array.isArray(r)&&t.key!==r.length-1)return!1}while((t=t.parentPath)&&!t.isProgram());return!0}function d(){return!this.parentPath.isLabeledStatement()&&!F.isBlockStatement(this.container)&&(0,w.default)(F.STATEMENT_OR_BLOCK_KEYS,this.key)}function y(e,t){if(!this.isReferencedIdentifier())return!1;var n=this.scope.getBinding(this.node.name);if(!n||"module"!==n.kind)return!1;var r=n.path,i=r.parentPath;return!!i.isImportDeclaration()&&(i.node.source.value===e&&(!t||(!(!r.isImportDefaultSpecifier()||"default"!==t)||(!(!r.isImportNamespaceSpecifier()||"*"!==t)||!(!r.isImportSpecifier()||r.node.imported.name!==t)))))}function m(){var e=this.node;return e.end?this.hub.file.code.slice(e.start,e.end):""}function b(e){return"after"!==this._guessExecutionStatusRelativeTo(e)}function g(e){var t=e.scope.getFunctionParent(),n=this.scope.getFunctionParent();if(t.node!==n.node){var r=this._guessExecutionStatusRelativeToDifferentFunctions(t);if(r)return r;e=t.path}var i=e.getAncestry();if(i.indexOf(this)>=0)return"after";var a=this.getAncestry(),s=void 0,o=void 0,u=void 0;for(u=0;u=0){s=l;break}}if(!s)return"before";var c=i[o-1],p=a[u-1];return c&&p?c.listKey&&c.container===p.container?c.key>p.key?"before":"after":F.VISITOR_KEYS[c.type].indexOf(c.key)>F.VISITOR_KEYS[p.type].indexOf(p.key)?"before":"after":"before"}function v(e){var t=e.path;if(t.isFunctionDeclaration()){var n=t.scope.getBinding(t.node.id.name);if(!n.references)return"before";for(var r=n.referencePaths,i=r,a=Array.isArray(i),s=0,i=a?i:(0,C.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;if("callee"!==u.key||!u.parentPath.isCallExpression())return}for(var l=void 0,c=r,p=Array.isArray(c),f=0,c=p?c:(0,C.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;if(!!!d.find(function(e){return e.node===t.node})){var y=this._guessExecutionStatusRelativeTo(d);if(l){if(l!==y)return}else l=y}}return l}}function x(e,t){return this._resolve(e,t)||this}function _(e,t){var n=this;if(!(t&&t.indexOf(this)>=0))if(t=t||[],t.push(this),this.isVariableDeclarator()){if(this.get("id").isIdentifier())return this.get("init").resolve(e,t)}else if(this.isReferencedIdentifier()){var r=this.scope.getBinding(this.node.name);if(!r)return;if(!r.constant)return;if("module"===r.kind)return;if(r.path!==this){var i=function(){var i=r.path.resolve(e,t);return n.find(function(e){return e.node===i.node})?{v:void 0}:{v:i}}();if("object"===(void 0===i?"undefined":(0,A.default)(i)))return i.v}}else{if(this.isTypeCastExpression())return this.get("expression").resolve(e,t);if(e&&this.isMemberExpression()){var a=this.toComputedKey();if(!F.isLiteral(a))return;var s=a.value,o=this.get("object").resolve(e,t);if(o.isObjectExpression())for(var u=o.get("properties"),l=u,c=Array.isArray(l),p=0,l=c?l:(0,C.default)(l);;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var h=f;if(h.isProperty()){var d=h.get("key"),y=h.isnt("computed")&&d.isIdentifier({name:s});if(y=y||d.isLiteral({value:s}))return h.get("value").resolve(e,t)}}else if(o.isArrayExpression()&&!isNaN(+s)){var m=o.get("elements"),b=m[s];if(b)return b.resolve(e,t)}}}}n.__esModule=!0,n.is=void 0;var E=e("babel-runtime/helpers/typeof"),A=i(E),D=e("babel-runtime/core-js/get-iterator"),C=i(D);n.matchesPattern=a,n.has=s,n.isStatic=o,n.isnt=u,n.equals=l,n.isNodeType=c,n.canHaveVariableDeclarationOrExpression=p,n.canSwapBetweenExpressionAndStatement=f,n.isCompletionRecord=h,n.isStatementOrBlock=d,n.referencesImport=y,n.getSource=m,n.willIMaybeExecuteBefore=b,n._guessExecutionStatusRelativeTo=g,n._guessExecutionStatusRelativeToDifferentFunctions=v,n.resolve=x,n._resolve=_;var S=e("lodash/includes"),w=i(S),k=e("babel-types"),F=r(k);n.is=s},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/typeof":118,"babel-types":265,"lodash/includes":473}],241:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/classCallCheck"),s=i(a),o=e("babel-runtime/core-js/get-iterator"),u=i(o),l=e("babel-types"),c=r(l),p={ReferencedIdentifier:function(e,t){if(!e.isJSXIdentifier()||!l.react.isCompatTag(e.node.name)){var n=e.scope.getBinding(e.node.name);if(n&&n===t.scope.getBinding(e.node.name))if(n.constant)t.bindings[e.node.name]=n;else for(var r=n.constantViolations,i=Array.isArray(r),a=0,r=i?r:(0,u.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;t.breakOnScopePaths=t.breakOnScopePaths.concat(o.getAncestry())}}}},f=function(){function e(t,n){(0,s.default)(this,e),this.breakOnScopePaths=[],this.bindings={},this.scopes=[],this.scope=n,this.path=t}return e.prototype.isCompatibleScope=function(e){for(var t in this.bindings){var n=this.bindings[t];if(!e.bindingIdentifierEquals(t,n.identifier))return!1}return!0},e.prototype.getCompatibleScopes=function(){var e=this.path.scope;do{if(!this.isCompatibleScope(e))break;if(this.scopes.push(e),this.breakOnScopePaths.indexOf(e.path)>=0)break}while(e=e.parent)},e.prototype.getAttachmentPath=function(){var e=this._getAttachmentPath();if(e){var t=e.scope;if(t.path===e&&(t=e.scope.parent),t.path.isProgram()||t.path.isFunction())for(var n in this.bindings)if(t.hasOwnBinding(n)){var r=this.bindings[n];if("param"!==r.kind&&this.getAttachmentParentForPath(r.path).key>e.key)return}return e}},e.prototype._getAttachmentPath=function(){var e=this.scopes,t=e.pop();if(t){if(t.path.isFunction()){if(this.hasOwnParamBindings(t)){if(this.scope===t)return;return t.path.get("body").get("body")[0]}return this.getNextScopeAttachmentParent()}return t.path.isProgram()?this.getNextScopeAttachmentParent():void 0}},e.prototype.getNextScopeAttachmentParent=function(){var e=this.scopes.pop();if(e)return this.getAttachmentParentForPath(e.path)},e.prototype.getAttachmentParentForPath=function(e){do if(!e.parentPath||Array.isArray(e.container)&&e.isStatement()||e.isVariableDeclarator()&&e.parentPath.node.declarations.length>1)return e;while(e=e.parentPath)},e.prototype.hasOwnParamBindings=function(e){for(var t in this.bindings)if(e.hasOwnBinding(t)){var n=this.bindings[t];if("param"===n.kind)return!0}return!1},e.prototype.run=function(){var e=this.path.node;if(!e._hoisted){e._hoisted=!0,this.path.traverse(p,this),this.getCompatibleScopes();var t=this.getAttachmentPath();if(t&&t.getFunctionParent()!==this.path.getFunctionParent()){var n=t.scope.generateUidIdentifier("ref"),r=c.variableDeclarator(n,this.path.node);t.insertBefore([t.isVariableDeclarator()?r:c.variableDeclaration("var",[r])]);var i=this.path.parentPath;i.isJSXElement()&&this.path.container===i.node.children&&(n=c.JSXExpressionContainer(n)),this.path.replaceWith(n)}}},e}();n.default=f,t.exports=n.default},{"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],242:[function(e,t,n){"use strict";n.__esModule=!0;n.hooks=[function(e,t){if("body"===e.key&&t.isArrowFunctionExpression())return e.replaceWith(e.scope.buildUndefinedNode()),!0},function(e,t){var n=!1;if(n=n||"test"===e.key&&(t.isWhile()||t.isSwitchCase()),n=n||"declaration"===e.key&&t.isExportDeclaration(),n=n||"body"===e.key&&t.isLabeledStatement(),n=n||"declarations"===e.listKey&&t.isVariableDeclaration()&&1===t.node.declarations.length,n=n||"expression"===e.key&&t.isExpressionStatement())return t.remove(),!0},function(e,t){if(t.isSequenceExpression()&&1===t.node.expressions.length)return t.replaceWith(t.node.expressions[0]),!0},function(e,t){if(t.isBinary())return"left"===e.key?t.replaceWith(t.node.right):t.replaceWith(t.node.left),!0},function(e,t){if(t.isIfStatement()&&("consequent"===e.key||"alternate"===e.key)||t.isLoop()&&"body"===e.key)return e.replaceWith({type:"BlockStatement",body:[]}),!0}]},{}],243:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}n.__esModule=!0,n.Flow=n.Pure=n.Generated=n.User=n.Var=n.BlockScoped=n.Referenced=n.Scope=n.Expression=n.Statement=n.BindingIdentifier=n.ReferencedMemberExpression=n.ReferencedIdentifier=void 0;var i=e("babel-types"),a=r(i);n.ReferencedIdentifier={types:["Identifier","JSXIdentifier"],checkPath:function(e,t){var n=e.node,r=e.parent;if(!a.isIdentifier(n,t)&&!a.isJSXMemberExpression(r,t)){if(!a.isJSXIdentifier(n,t))return!1;if(i.react.isCompatTag(n.name))return!1}return a.isReferenced(n,r)}},n.ReferencedMemberExpression={types:["MemberExpression"],checkPath:function(e){var t=e.node,n=e.parent;return a.isMemberExpression(t)&&a.isReferenced(t,n)}},n.BindingIdentifier={types:["Identifier"],checkPath:function(e){var t=e.node,n=e.parent;return a.isIdentifier(t)&&a.isBinding(t,n)}},n.Statement={types:["Statement"],checkPath:function(e){var t=e.node,n=e.parent;if(a.isStatement(t)){if(a.isVariableDeclaration(t)){if(a.isForXStatement(n,{left:t}))return!1;if(a.isForStatement(n,{init:t}))return!1}return!0}return!1}},n.Expression={types:["Expression"],checkPath:function(e){return e.isIdentifier()?e.isReferencedIdentifier():a.isExpression(e.node)}},n.Scope={types:["Scopable"],checkPath:function(e){return a.isScope(e.node,e.parent)}},n.Referenced={checkPath:function(e){return a.isReferenced(e.node,e.parent)}},n.BlockScoped={checkPath:function(e){return a.isBlockScoped(e.node)}},n.Var={types:["VariableDeclaration"],checkPath:function(e){return a.isVar(e.node)}},n.User={checkPath:function(e){return e.node&&!!e.node.loc}},n.Generated={checkPath:function(e){return!e.isUser()}},n.Pure={checkPath:function(e,t){return e.scope.isPure(e.node,t)}},n.Flow={types:["Flow","ImportDeclaration","ExportDeclaration"],checkPath:function(e){var t=e.node;return!!a.isFlow(t)||(a.isImportDeclaration(t)?"type"===t.importKind||"typeof"===t.importKind:!!a.isExportDeclaration(t)&&"type"===t.exportKind)}}},{"babel-types":265}],244:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertBefore(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key)this.node&&e.push(this.node),this.replaceExpressionWithStatements(e);else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertBefore(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.push(this.node),this._replaceWith(S.blockStatement(e))}return[this]}function s(e,t){this.updateSiblingKeys(e,t.length);for(var n=[],r=0;r=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;f.setScope(),f.debug(function(){return"Inserted."});for(var h=o,d=Array.isArray(h),y=0,h=d?h:(0,v.default)(h);;){var m;if(d){if(y>=h.length)break;m=h[y++]}else{if(y=h.next(),y.done)break;m=y.value}m.maybeQueue(f,!0)}}return n}function o(e){return this._containerInsert(this.key,e)}function u(e){return this._containerInsert(this.key+1,e)}function l(e){var t=e[e.length-1];(S.isIdentifier(t)||S.isExpressionStatement(t)&&S.isIdentifier(t.expression))&&!this.isCompletionRecord()&&e.pop()}function c(e){if(this._assertUnremoved(),e=this._verifyNodeList(e),this.parentPath.isExpressionStatement()||this.parentPath.isLabeledStatement())return this.parentPath.insertAfter(e);if(this.isNodeType("Expression")||this.parentPath.isForStatement()&&"init"===this.key){if(this.node){var t=this.scope.generateDeclaredUidIdentifier();e.unshift(S.expressionStatement(S.assignmentExpression("=",t,this.node))),e.push(S.expressionStatement(t))}this.replaceExpressionWithStatements(e)}else{if(this._maybePopFromStatements(e),Array.isArray(this.container))return this._containerInsertAfter(e);if(!this.isStatementOrBlock())throw new Error("We don't know what to do with this node type. We were previously a Statement but we can't fit in here?");this.node&&e.unshift(this.node),this._replaceWith(S.blockStatement(e))}return[this]}function p(e,t){if(this.parent)for(var n=x.path.get(this.parent),r=0;r=e&&(i.key+=t)}}function f(e){if(!e)return[];e.constructor!==Array&&(e=[e]);for(var t=0;t0&&void 0!==arguments[0]?arguments[0]:this.scope;return new E.default(this,e).run()}n.__esModule=!0;var m=e("babel-runtime/helpers/typeof"),b=i(m),g=e("babel-runtime/core-js/get-iterator"),v=i(g);n.insertBefore=a,n._containerInsert=s,n._containerInsertBefore=o,n._containerInsertAfter=u,n._maybePopFromStatements=l,n.insertAfter=c,n.updateSiblingKeys=p,n._verifyNodeList=f,n.unshiftContainer=h,n.pushContainer=d,n.hoist=y;var x=e("../cache"),_=e("./lib/hoister"),E=i(_),A=e("./index"),D=i(A),C=e("babel-types"),S=r(C)},{"../cache":226,"./index":236,"./lib/hoister":241,"babel-runtime/core-js/get-iterator":100,"babel-runtime/helpers/typeof":118,"babel-types":265}],245:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(){if(this._assertUnremoved(),this.resync(),this._callRemovalHooks())return void this._markRemoved();this.shareCommentsWithSiblings(),this._remove(),this._markRemoved()}function a(){for(var e=p.hooks,t=Array.isArray(e),n=0,e=t?e:(0,c.default)(e);;){var r;if(t){if(n>=e.length)break;r=e[n++]}else{if(n=e.next(),n.done)break;r=n.value}if(r(this,this.parentPath))return!0}}function s(){Array.isArray(this.container)?(this.container.splice(this.key,1),this.updateSiblingKeys(this.key,-1)):this._replaceWith(null)}function o(){this.shouldSkip=!0,this.removed=!0,this.node=null}function u(){if(this.removed)throw this.buildCodeFrameError("NodePath has been removed so is read-only.")}n.__esModule=!0;var l=e("babel-runtime/core-js/get-iterator"),c=r(l);n.remove=i,n._callRemovalHooks=a,n._remove=s,n._markRemoved=o,n._assertUnremoved=u;var p=e("./lib/removal-hooks")},{"./lib/removal-hooks":242,"babel-runtime/core-js/get-iterator":100}],246:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){this.resync(),e=this._verifyNodeList(e),_.inheritLeadingComments(e[0],this.node),_.inheritTrailingComments(e[e.length-1],this.node),this.node=this.container[this.key]=null,this.insertAfter(e),this.node?this.requeue():this.remove()}function s(e){this.resync();try{e="("+e+")",e=(0,v.parse)(e)}catch(n){var t=n.loc;throw t&&(n.message+=" - make sure this is an expression.",n.message+="\n"+(0,d.default)(e,t.line,t.column+1)),n}return e=e.program.body[0].expression,m.default.removeProperties(e),this.replaceWith(e)}function o(e){if(this.resync(),this.removed)throw new Error("You can't replace this node, we've already removed it");if(e instanceof g.default&&(e=e.node),!e)throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");if(this.node!==e){if(this.isProgram()&&!_.isProgram(e))throw new Error("You can only replace a Program root node with another Program node");if(Array.isArray(e))throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`")
+;if("string"==typeof e)throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");if(this.isNodeType("Statement")&&_.isExpression(e)&&(this.canHaveVariableDeclarationOrExpression()||this.canSwapBetweenExpressionAndStatement(e)||(e=_.expressionStatement(e))),this.isNodeType("Expression")&&_.isStatement(e)&&!this.canHaveVariableDeclarationOrExpression()&&!this.canSwapBetweenExpressionAndStatement(e))return this.replaceExpressionWithStatements([e]);var t=this.node;t&&(_.inheritsComments(e,t),_.removeComments(t)),this._replaceWith(e),this.type=e.type,this.setScope(),this.requeue()}}function u(e){if(!this.container)throw new ReferenceError("Container is falsy");this.inList?_.validate(this.parent,this.key,[e]):_.validate(this.parent,this.key,e),this.debug(function(){return"Replace with "+(e&&e.type)}),this.node=this.container[this.key]=e}function l(e){this.resync();var t=_.toSequenceExpression(e,this.scope);if(_.isSequenceExpression(t)){var n=t.expressions;n.length>=2&&this.parentPath.isExpressionStatement()&&this._maybePopFromStatements(n),1===n.length?this.replaceWith(n[0]):this.replaceWith(t)}else{if(!t){var r=_.functionExpression(null,[],_.blockStatement(e));r.shadow=!0,this.replaceWith(_.callExpression(r,[])),this.traverse(E);for(var i=this.get("callee").getCompletionRecords(),a=i,s=Array.isArray(a),o=0,a=s?a:(0,f.default)(a);;){var u;if(s){if(o>=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(l.isExpressionStatement()){if(l.findParent(function(e){return e.isLoop()})){var c=this.get("callee"),p=c.scope.generateDeclaredUidIdentifier("ret");c.get("body").pushContainer("body",_.returnStatement(p)),l.get("expression").replaceWith(_.assignmentExpression("=",p,l.node.expression))}else l.replaceWith(_.returnStatement(l.node.expression))}}return this.node}this.replaceWith(t)}}function c(e){return this.resync(),Array.isArray(e)?Array.isArray(this.container)?(e=this._verifyNodeList(e),this._containerInsertAfter(e),this.remove()):this.replaceWithMultiple(e):this.replaceWith(e)}n.__esModule=!0;var p=e("babel-runtime/core-js/get-iterator"),f=i(p);n.replaceWithMultiple=a,n.replaceWithSourceString=s,n.replaceWith=o,n._replaceWith=u,n.replaceExpressionWithStatements=l,n.replaceInline=c;var h=e("babel-code-frame"),d=i(h),y=e("../index"),m=i(y),b=e("./index"),g=i(b),v=e("babylon"),x=e("babel-types"),_=r(x),E={Function:function(e){e.skip()},VariableDeclaration:function(e){if("var"===e.node.kind){var t=e.getBindingIdentifiers();for(var n in t)e.scope.push({id:t[n]});for(var r=[],i=e.node.declarations,a=Array.isArray(i),s=0,i=a?i:(0,f.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;u.init&&r.push(_.expressionStatement(_.assignmentExpression("=",u.id,u.init)))}e.replaceWithMultiple(r)}}}},{"../index":229,"./index":236,"babel-code-frame":60,"babel-runtime/core-js/get-iterator":100,"babel-types":265,babylon:274}],247:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var i=e("babel-runtime/helpers/classCallCheck"),a=r(i),s=function(){function e(t){var n=t.existing,r=t.identifier,i=t.scope,s=t.path,o=t.kind;(0,a.default)(this,e),this.identifier=r,this.scope=i,this.path=s,this.kind=o,this.constantViolations=[],this.constant=!0,this.referencePaths=[],this.referenced=!1,this.references=0,this.clearValue(),n&&(this.constantViolations=[].concat(n.path,n.constantViolations,this.constantViolations))}return e.prototype.deoptValue=function(){this.clearValue(),this.hasDeoptedValue=!0},e.prototype.setValue=function(e){this.hasDeoptedValue||(this.hasValue=!0,this.value=e)},e.prototype.clearValue=function(){this.hasDeoptedValue=!1,this.hasValue=!1,this.value=null},e.prototype.reassign=function(e){this.constant=!1,this.constantViolations.indexOf(e)===-1&&this.constantViolations.push(e)},e.prototype.reference=function(e){this.referencePaths.indexOf(e)===-1&&(this.referenced=!0,this.references++,this.referencePaths.push(e))},e.prototype.dereference=function(){this.references--,this.referenced=!!this.references},e}();n.default=s,t.exports=n.default},{"babel-runtime/helpers/classCallCheck":114}],248:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t,n){for(var r=I.scope.get(e.node)||[],i=r,a=Array.isArray(i),s=0,i=a?i:(0,m.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;if(u.parent===t&&u.path===e)return u}r.push(n),I.scope.has(e.node)||I.scope.set(e.node,r)}function s(e,t){if(O.isModuleDeclaration(e))if(e.source)s(e.source,t);else if(e.specifiers&&e.specifiers.length)for(var n=e.specifiers,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var o=a;s(o,t)}else e.declaration&&s(e.declaration,t);else if(O.isModuleSpecifier(e))s(e.local,t);else if(O.isMemberExpression(e))s(e.object,t),s(e.property,t);else if(O.isIdentifier(e))t.push(e.name);else if(O.isLiteral(e))t.push(e.value);else if(O.isCallExpression(e))s(e.callee,t);else if(O.isObjectExpression(e)||O.isObjectPattern(e))for(var u=e.properties,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;s(f.key||f.argument,t)}}n.__esModule=!0;var o=e("babel-runtime/core-js/object/keys"),u=i(o),l=e("babel-runtime/core-js/object/create"),c=i(l),p=e("babel-runtime/core-js/map"),f=i(p),h=e("babel-runtime/helpers/classCallCheck"),d=i(h),y=e("babel-runtime/core-js/get-iterator"),m=i(y),b=e("lodash/includes"),g=i(b),v=e("lodash/repeat"),x=i(v),_=e("./lib/renamer"),E=i(_),A=e("../index"),D=i(A),C=e("lodash/defaults"),S=i(C),w=e("babel-messages"),k=r(w),F=e("./binding"),T=i(F),P=e("globals"),j=i(P),B=e("babel-types"),O=r(B),I=e("../cache"),N=0,L={For:function(e){for(var t=O.FOR_INIT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=e.get(a);s.isVar()&&e.scope.getFunctionParent().registerBinding("var",s)}},Declaration:function(e){e.isBlockScoped()||e.isExportDeclaration()&&e.get("declaration").isDeclaration()||e.scope.getFunctionParent().registerDeclaration(e)},ReferencedIdentifier:function(e,t){t.references.push(e)},ForXStatement:function(e,t){var n=e.get("left");(n.isPattern()||n.isIdentifier())&&t.constantViolations.push(n)},ExportDeclaration:{exit:function(e){var t=e.node,n=e.scope,r=t.declaration;if(O.isClassDeclaration(r)||O.isFunctionDeclaration(r)){var i=r.id;if(!i)return;var a=n.getBinding(i.name);a&&a.reference(e)}else if(O.isVariableDeclaration(r))for(var s=r.declarations,o=Array.isArray(s),u=0,s=o?s:(0,m.default)(s);;){var l;if(o){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l,p=O.getBindingIdentifiers(c);for(var f in p){var h=n.getBinding(f);h&&h.reference(e)}}}},LabeledStatement:function(e){e.scope.getProgramParent().addGlobal(e.node),e.scope.getBlockParent().registerDeclaration(e)},AssignmentExpression:function(e,t){t.assignments.push(e)},UpdateExpression:function(e,t){t.constantViolations.push(e.get("argument"))},UnaryExpression:function(e,t){"delete"===e.node.operator&&t.constantViolations.push(e.get("argument"))},BlockScoped:function(e){var t=e.scope;t.path===e&&(t=t.parent),t.getBlockParent().registerDeclaration(e)},ClassDeclaration:function(e){var t=e.node.id;if(t){var n=t.name;e.scope.bindings[n]=e.scope.getBinding(n)}},Block:function(e){for(var t=e.get("body"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;s.isFunctionDeclaration()&&e.scope.getBlockParent().registerDeclaration(s)}}},M=0,R=function(){function e(t,n){if((0,d.default)(this,e),n&&n.block===t.node)return n;var r=a(t,n,this);if(r)return r;this.uid=M++,this.parent=n,this.hub=t.hub,this.parentBlock=t.parent,this.block=t.node,this.path=t,this.labels=new f.default}return e.prototype.traverse=function(e,t,n){(0,D.default)(e,t,this,n,this.path)},e.prototype.generateDeclaredUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp",t=this.generateUidIdentifier(e);return this.push({id:t}),t},e.prototype.generateUidIdentifier=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";return O.identifier(this.generateUid(e))},e.prototype.generateUid=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"temp";e=O.toIdentifier(e).replace(/^_+/,"").replace(/[0-9]+$/g,"");var t=void 0,n=0;do t=this._generateUid(e,n),n++;while(this.hasLabel(t)||this.hasBinding(t)||this.hasGlobal(t)||this.hasReference(t));var r=this.getProgramParent();return r.references[t]=!0,r.uids[t]=!0,t},e.prototype._generateUid=function(e,t){var n=e;return t>1&&(n+=t),"_"+n},e.prototype.generateUidIdentifierBasedOnNode=function(e,t){var n=e;O.isAssignmentExpression(e)?n=e.left:O.isVariableDeclarator(e)?n=e.id:(O.isObjectProperty(n)||O.isObjectMethod(n))&&(n=n.key);var r=[];s(n,r);var i=r.join("$");return i=i.replace(/^_/,"")||t||"ref",this.generateUidIdentifier(i.slice(0,20))},e.prototype.isStatic=function(e){if(O.isThisExpression(e)||O.isSuper(e))return!0;if(O.isIdentifier(e)){var t=this.getBinding(e.name);return t?t.constant:this.hasBinding(e.name)}return!1},e.prototype.maybeGenerateMemoised=function(e,t){if(this.isStatic(e))return null;var n=this.generateUidIdentifierBasedOnNode(e);return t||this.push({id:n}),n},e.prototype.checkBlockScopedCollisions=function(e,t,n,r){if("param"!==t&&("hoisted"!==t||"let"!==e.kind)){var i=!1;if(i||(i="let"===t||"let"===e.kind||"const"===e.kind||"module"===e.kind),i||(i="param"===e.kind&&("let"===t||"const"===t)),i)throw this.hub.file.buildCodeFrameError(r,k.get("scopeDuplicateDeclaration",n),TypeError)}},e.prototype.rename=function(e,t,n){var r=this.getBinding(e);if(r)return t=t||this.generateUidIdentifier(e).name,new E.default(r,e,t).rename(n)},e.prototype._renameFromMap=function(e,t,n,r){e[t]&&(e[n]=r,e[t]=null)},e.prototype.dump=function(){var e=(0,x.default)("-",60);console.log(e);var t=this;do{console.log("#",t.block.type);for(var n in t.bindings){var r=t.bindings[n];console.log(" -",n,{constant:r.constant,references:r.references,violations:r.constantViolations.length,kind:r.kind})}}while(t=t.parent);console.log(e)},e.prototype.toArray=function(e,t){var n=this.hub.file;if(O.isIdentifier(e)){var r=this.getBinding(e.name);if(r&&r.constant&&r.path.isGenericType("Array"))return e}if(O.isArrayExpression(e))return e;if(O.isIdentifier(e,{name:"arguments"}))return O.callExpression(O.memberExpression(O.memberExpression(O.memberExpression(O.identifier("Array"),O.identifier("prototype")),O.identifier("slice")),O.identifier("call")),[e]);var i="toArray",a=[e];return t===!0?i="toConsumableArray":t&&(a.push(O.numericLiteral(t)),i="slicedToArray"),O.callExpression(n.addHelper(i),a)},e.prototype.hasLabel=function(e){return!!this.getLabel(e)},e.prototype.getLabel=function(e){return this.labels.get(e)},e.prototype.registerLabel=function(e){this.labels.set(e.node.label.name,e)},e.prototype.registerDeclaration=function(e){if(e.isLabeledStatement())this.registerLabel(e);else if(e.isFunctionDeclaration())this.registerBinding("hoisted",e.get("id"),e);else if(e.isVariableDeclaration())for(var t=e.get("declarations"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,m.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;this.registerBinding(e.node.kind,s)}else if(e.isClassDeclaration())this.registerBinding("let",e);else if(e.isImportDeclaration())for(var o=e.get("specifiers"),u=o,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;this.registerBinding("module",f)}else if(e.isExportDeclaration()){var h=e.get("declaration");(h.isClassDeclaration()||h.isFunctionDeclaration()||h.isVariableDeclaration())&&this.registerDeclaration(h)}else this.registerBinding("unknown",e)},e.prototype.buildUndefinedNode=function(){return this.hasBinding("undefined")?O.unaryExpression("void",O.numericLiteral(0),!0):O.identifier("undefined")},e.prototype.registerConstantViolation=function(e){var t=e.getBindingIdentifiers();for(var n in t){var r=this.getBinding(n);r&&r.reassign(e)}},e.prototype.registerBinding=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t;if(!e)throw new ReferenceError("no `kind`");if(t.isVariableDeclaration())for(var r=t.get("declarations"),i=r,a=Array.isArray(i),s=0,i=a?i:(0,m.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o;this.registerBinding(e,u)}else{var l=this.getProgramParent(),c=t.getBindingIdentifiers(!0);for(var p in c)for(var f=c[p],h=Array.isArray(f),d=0,f=h?f:(0,m.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var b=y,g=this.getOwnBinding(p);if(g){if(g.identifier===b)continue;this.checkBlockScopedCollisions(g,e,p,b)}g&&g.path.isFlow()&&(g=null),l.references[p]=!0,this.bindings[p]=new T.default({identifier:b,existing:g,scope:this,path:n,kind:e})}}},e.prototype.addGlobal=function(e){this.globals[e.name]=e},e.prototype.hasUid=function(e){var t=this;do if(t.uids[e])return!0;while(t=t.parent);return!1},e.prototype.hasGlobal=function(e){var t=this;do if(t.globals[e])return!0;while(t=t.parent);return!1},e.prototype.hasReference=function(e){var t=this;do if(t.references[e])return!0;while(t=t.parent);return!1},e.prototype.isPure=function(e,t){if(O.isIdentifier(e)){var n=this.getBinding(e.name);return!!n&&(!t||n.constant)}if(O.isClass(e))return!(e.superClass&&!this.isPure(e.superClass,t))&&this.isPure(e.body,t);if(O.isClassBody(e)){for(var r=e.body,i=Array.isArray(r),a=0,r=i?r:(0,m.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(!this.isPure(o,t))return!1}return!0}if(O.isBinary(e))return this.isPure(e.left,t)&&this.isPure(e.right,t);if(O.isArrayExpression(e)){for(var u=e.elements,l=Array.isArray(u),c=0,u=l?u:(0,m.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;if(!this.isPure(f,t))return!1}return!0}if(O.isObjectExpression(e)){for(var h=e.properties,d=Array.isArray(h),y=0,h=d?h:(0,m.default)(h);;){var b;if(d){if(y>=h.length)break;b=h[y++]}else{if(y=h.next(),y.done)break;b=y.value}var g=b;if(!this.isPure(g,t))return!1}return!0}return O.isClassMethod(e)?!(e.computed&&!this.isPure(e.key,t))&&("get"!==e.kind&&"set"!==e.kind):O.isClassProperty(e)||O.isObjectProperty(e)?!(e.computed&&!this.isPure(e.key,t))&&this.isPure(e.value,t):O.isUnaryExpression(e)?this.isPure(e.argument,t):O.isPureish(e)},e.prototype.setData=function(e,t){return this.data[e]=t},e.prototype.getData=function(e){var t=this;do{var n=t.data[e];if(null!=n)return n}while(t=t.parent)},e.prototype.removeData=function(e){var t=this;do{null!=t.data[e]&&(t.data[e]=null)}while(t=t.parent)},e.prototype.init=function(){this.references||this.crawl()},e.prototype.crawl=function(){N++,this._crawl(),N--},e.prototype._crawl=function(){var e=this.path;if(this.references=(0,c.default)(null),this.bindings=(0,c.default)(null),this.globals=(0,c.default)(null),this.uids=(0,c.default)(null),this.data=(0,c.default)(null),e.isLoop())for(var t=O.FOR_INIT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=e.get(a);s.isBlockScoped()&&this.registerBinding(s.node.kind,s)}if(e.isFunctionExpression()&&e.has("id")&&(e.get("id").node[O.NOT_LOCAL_BINDING]||this.registerBinding("local",e.get("id"),e)),e.isClassExpression()&&e.has("id")&&(e.get("id").node[O.NOT_LOCAL_BINDING]||this.registerBinding("local",e)),e.isFunction())for(var o=e.get("params"),u=o,l=Array.isArray(u),p=0,u=l?u:(0,m.default)(u);;){var f;if(l){if(p>=u.length)break;f=u[p++]}else{if(p=u.next(),p.done)break;f=p.value}var h=f;this.registerBinding("param",h)}if(e.isCatchClause()&&this.registerBinding("let",e),!this.getProgramParent().crawling){var d={references:[],constantViolations:[],assignments:[]};this.crawling=!0,e.traverse(L,d),this.crawling=!1;for(var y=d.assignments,b=Array.isArray(y),g=0,y=b?y:(0,m.default)(y);;){var v;if(b){if(g>=y.length)break;v=y[g++]}else{if(g=y.next(),g.done)break;v=g.value}var x=v,_=x.getBindingIdentifiers(),E=void 0;for(var A in _)x.scope.getBinding(A)||(E=E||x.scope.getProgramParent(),E.addGlobal(_[A]));x.scope.registerConstantViolation(x)}for(var D=d.references,C=Array.isArray(D),S=0,D=C?D:(0,m.default)(D);;){var w;if(C){if(S>=D.length)break;w=D[S++]}else{if(S=D.next(),S.done)break;w=S.value}var k=w,F=k.scope.getBinding(k.node.name);F?F.reference(k):k.scope.getProgramParent().addGlobal(k.node)}for(var T=d.constantViolations,P=Array.isArray(T),j=0,T=P?T:(0,m.default)(T);;){var B;if(P){if(j>=T.length)break;B=T[j++]}else{if(j=T.next(),j.done)break;B=j.value}var I=B;I.scope.registerConstantViolation(I)}}},e.prototype.push=function(e){var t=this.path;t.isBlockStatement()||t.isProgram()||(t=this.getBlockParent().path),t.isSwitchStatement()&&(t=this.getFunctionParent().path),(t.isLoop()||t.isCatchClause()||t.isFunction())&&(O.ensureBlock(t.node),t=t.get("body"));var n=e.unique,r=e.kind||"var",i=null==e._blockHoist?2:e._blockHoist,a="declaration:"+r+":"+i,s=!n&&t.getData(a);if(!s){var o=O.variableDeclaration(r,[]);o._generated=!0,o._blockHoist=i;s=t.unshiftContainer("body",[o])[0],n||t.setData(a,s)}var u=O.variableDeclarator(e.id,e.init);s.node.declarations.push(u),this.registerBinding(r,s.get("declarations").pop())},e.prototype.getProgramParent=function(){var e=this;do if(e.path.isProgram())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getFunctionParent=function(){var e=this;do if(e.path.isFunctionParent())return e;while(e=e.parent);throw new Error("We couldn't find a Function or Program...")},e.prototype.getBlockParent=function(){var e=this;do if(e.path.isBlockParent())return e;while(e=e.parent);throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...")},e.prototype.getAllBindings=function(){var e=(0,c.default)(null),t=this;do(0,S.default)(e,t.bindings),t=t.parent;while(t);return e},e.prototype.getAllBindingsOfKind=function(){for(var e=(0,c.default)(null),t=arguments,n=Array.isArray(t),r=0,t=n?t:(0,m.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,s=this;do{for(var o in s.bindings){var u=s.bindings[o];u.kind===a&&(e[o]=u)}s=s.parent}while(s)}return e},e.prototype.bindingIdentifierEquals=function(e,t){return this.getBindingIdentifier(e)===t},e.prototype.warnOnFlowBinding=function(e){return 0===N&&e&&e.path.isFlow()&&console.warn("\n        You or one of the Babel plugins you are using are using Flow declarations as bindings.\n        Support for this will be removed in version 6.8. To find out the caller, grep for this\n        message and change it to a `console.trace()`.\n      "),e},e.prototype.getBinding=function(e){var t=this;do{var n=t.getOwnBinding(e);if(n)return this.warnOnFlowBinding(n)}while(t=t.parent)},e.prototype.getOwnBinding=function(e){return this.warnOnFlowBinding(this.bindings[e])},e.prototype.getBindingIdentifier=function(e){var t=this.getBinding(e);return t&&t.identifier},e.prototype.getOwnBindingIdentifier=function(e){var t=this.bindings[e];return t&&t.identifier},e.prototype.hasOwnBinding=function(e){return!!this.getOwnBinding(e)},e.prototype.hasBinding=function(t,n){return!!t&&(!!this.hasOwnBinding(t)||(!!this.parentHasBinding(t,n)||(!!this.hasUid(t)||(!(n||!(0,g.default)(e.globals,t))||!(n||!(0,g.default)(e.contextVariables,t))))))},e.prototype.parentHasBinding=function(e,t){return this.parent&&this.parent.hasBinding(e,t)},e.prototype.moveBindingTo=function(e,t){var n=this.getBinding(e);n&&(n.scope.removeOwnBinding(e),n.scope=t,t.bindings[e]=n)},e.prototype.removeOwnBinding=function(e){delete this.bindings[e]},e.prototype.removeBinding=function(e){var t=this.getBinding(e);t&&t.scope.removeOwnBinding(e);var n=this;do n.uids[e]&&(n.uids[e]=!1);while(n=n.parent)},e}();R.globals=(0,u.default)(j.default.builtin),R.contextVariables=["arguments","undefined","Infinity","NaN"],n.default=R,t.exports=n.default},{"../cache":226,"../index":229,"./binding":247,"./lib/renamer":249,"babel-messages":99,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/map":102,"babel-runtime/core-js/object/create":105,"babel-runtime/core-js/object/keys":107,"babel-runtime/helpers/classCallCheck":114,"babel-types":265,globals:252,"lodash/defaults":460,"lodash/includes":473,"lodash/repeat":498}],249:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}n.__esModule=!0;var a=e("babel-runtime/helpers/classCallCheck"),s=i(a),o=e("../binding"),u=(i(o),e("babel-types")),l=r(u),c={ReferencedIdentifier:function(e,t){var n=e.node;n.name===t.oldName&&(n.name=t.newName)},Scope:function(e,t){e.scope.bindingIdentifierEquals(t.oldName,t.binding.identifier)||e.skip()},"AssignmentExpression|Declaration":function(e,t){var n=e.getOuterBindingIdentifiers();for(var r in n)r===t.oldName&&(n[r].name=t.newName)}},p=function(){function e(t,n,r){(0,s.default)(this,e),this.newName=r,this.oldName=n,this.binding=t}return e.prototype.maybeConvertFromExportDeclaration=function(e){var t=e.parentPath.isExportDeclaration()&&e.parentPath;if(t){var n=t.isExportDefaultDeclaration();n&&(e.isFunctionDeclaration()||e.isClassDeclaration())&&!e.node.id&&(e.node.id=e.scope.generateUidIdentifier("default"));var r=e.getOuterBindingIdentifiers(),i=[];for(var a in r){var s=a===this.oldName?this.newName:a,o=n?"default":a;i.push(l.exportSpecifier(l.identifier(s),l.identifier(o)))}if(i.length){var u=l.exportNamedDeclaration(null,i);e.isFunctionDeclaration()&&(u._blockHoist=3),t.insertAfter(u),t.replaceWith(e.node)}}},e.prototype.maybeConvertFromClassFunctionDeclaration=function(e){},e.prototype.maybeConvertFromClassFunctionExpression=function(e){},e.prototype.rename=function(e){var t=this.binding,n=this.oldName,r=this.newName,i=t.scope,a=t.path,s=a.find(function(e){return e.isDeclaration()||e.isFunctionExpression()});s&&this.maybeConvertFromExportDeclaration(s),i.traverse(e||i.block,c,this),e||(i.removeOwnBinding(n),i.bindings[r]=t,this.binding.identifier.name=r),t.type,s&&(this.maybeConvertFromClassFunctionDeclaration(s),this.maybeConvertFromClassFunctionExpression(s))},e}();n.default=p,t.exports=n.default},{"../binding":247,"babel-runtime/helpers/classCallCheck":114,"babel-types":265}],250:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){if(e._exploded)return e;e._exploded=!0;for(var t in e)if(!h(t)){var n=t.split("|");if(1!==n.length){var r=e[t];delete e[t];for(var i=n,a=Array.isArray(i),o=0,i=a?i:(0,x.default)(i);;){var u;if(a){if(o>=i.length)break;u=i[o++]}else{if(o=i.next(),o.done)break;u=o.value}var l=u;e[l]=r}}}s(e),delete e.__esModule,c(e),p(e);for(var y=(0,g.default)(e),m=Array.isArray(y),b=0,y=m?y:(0,x.default)(y);;){var v;if(m){if(b>=y.length)break;v=y[b++]}else{if(b=y.next(),b.done)break;v=b.value}var _=v;if(!h(_)){var A=E[_];if(A){var D=e[_];for(var C in D)D[C]=f(A,D[C]);if(delete e[_],A.types)for(var w=A.types,F=Array.isArray(w),T=0,w=F?w:(0,x.default)(w);;){var P;if(F){if(T>=w.length)break;P=w[T++]}else{if(T=w.next(),T.done)break;P=T.value}var j=P;e[j]?d(e[j],D):e[j]=D}else d(e,D)}}}for(var B in e)if(!h(B)){var O=e[B],I=S.FLIPPED_ALIAS_KEYS[B],N=S.DEPRECATED_KEYS[B];if(N&&(console.trace("Visitor defined for "+B+" but it has been renamed to "+N),I=[N]),I){delete e[B];for(var L=I,M=Array.isArray(L),R=0,L=M?L:(0,x.default)(L);;){var U;if(M){if(R>=L.length)break;U=L[R++]}else{if(R=L.next(),R.done)break;U=R.value}var V=U,G=e[V];G?d(G,O):e[V]=(0,k.default)(O)}}}for(var q in e)h(q)||p(e[q]);return e}function s(e){if(!e._verified){if("function"==typeof e)throw new Error(D.get("traverseVerifyRootFunction"));for(var t in e)if("enter"!==t&&"exit"!==t||o(t,e[t]),!h(t)){if(S.TYPES.indexOf(t)<0)throw new Error(D.get("traverseVerifyNodeType",t));var n=e[t];if("object"===(void 0===n?"undefined":(0,m.default)(n)))for(var r in n){if("enter"!==r&&"exit"!==r)throw new Error(D.get("traverseVerifyVisitorProperty",t,r));o(t+"."+r,n[r])}}e._verified=!0}}function o(e,t){for(var n=[].concat(t),r=n,i=Array.isArray(r),a=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if("function"!=typeof o)throw new TypeError("Non-function found defined in "+e+" with type "+(void 0===o?"undefined":(0,m.default)(o)))}}function u(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments[2],r={},i=0;i","<",">=","<="]),o=n.EQUALITY_BINARY_OPERATORS=["==","===","!=","!=="],u=n.COMPARISON_BINARY_OPERATORS=[].concat(o,["in","instanceof"]),l=n.BOOLEAN_BINARY_OPERATORS=[].concat(u,s),c=n.NUMBER_BINARY_OPERATORS=["-","/","%","*","**","&","|",">>",">>>","<<","^"],p=(n.BINARY_OPERATORS=["+"].concat(c,l),n.BOOLEAN_UNARY_OPERATORS=["delete","!"]),f=n.NUMBER_UNARY_OPERATORS=["+","-","++","--","~"],h=n.STRING_UNARY_OPERATORS=["typeof"];n.UNARY_OPERATORS=["void"].concat(p,f,h),n.INHERIT_KEYS={optional:["typeAnnotation","typeParameters","returnType"],force:["start","loc","end"]},n.BLOCK_SCOPED_SYMBOL=(0,a.default)("var used to be block scoped"),n.NOT_LOCAL_BINDING=(0,a.default)("should not be considered a local binding")},{"babel-runtime/core-js/symbol/for":110}],255:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e.key||e.property;return e.computed||F.isIdentifier(t)&&(t=F.stringLiteral(t.name)),t}function s(e,t){function n(e){for(var a=!1,s=[],o=e,u=Array.isArray(o),l=0,o=u?o:(0,v.default)(o);;){var c;if(u){if(l>=o.length)break;c=o[l++]}else{if(l=o.next(),l.done)break;c=l.value}var p=c;if(F.isExpression(p))s.push(p);else if(F.isExpressionStatement(p))s.push(p.expression);else{if(F.isVariableDeclaration(p)){if("var"!==p.kind)return i=!0;for(var f=p.declarations,h=Array.isArray(f),d=0,f=h?f:(0,v.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}var m=y,b=F.getBindingIdentifiers(m);for(var g in b)r.push({kind:p.kind,id:b[g]});m.init&&s.push(F.assignmentExpression("=",m.id,m.init))}a=!0;continue}if(F.isIfStatement(p)){var x=p.consequent?n([p.consequent]):t.buildUndefinedNode(),_=p.alternate?n([p.alternate]):t.buildUndefinedNode();if(!x||!_)return i=!0;s.push(F.conditionalExpression(p.test,x,_))}else{if(!F.isBlockStatement(p)){if(F.isEmptyStatement(p)){a=!0;continue}return i=!0}s.push(n(p.body))}}a=!1}return(a||0===s.length)&&s.push(t.buildUndefinedNode()),1===s.length?s[0]:F.sequenceExpression(s)}if(e&&e.length){var r=[],i=!1,a=n(e);if(!i){for(var s=0;s1&&void 0!==arguments[1]?arguments[1]:e.key,n=void 0;return"method"===e.kind?o.increment()+"":(n=F.isIdentifier(t)?t.name:F.isStringLiteral(t)?(0,b.default)(t.value):(0,b.default)(F.removePropertiesDeep(F.cloneDeep(t))),e.computed&&(n="["+n+"]"),e.static&&(n="static:"+n),n)}function u(e){return e+="",e=e.replace(/[^a-zA-Z0-9$_]/g,"-"),e=e.replace(/^[-0-9]+/,""),e=e.replace(/[-\s]+(.)?/g,function(e,t){return t?t.toUpperCase():""}),F.isValidIdentifier(e)||(e="_"+e),e||"_"}function l(e){return e=u(e),"eval"!==e&&"arguments"!==e||(e="_"+e),e}function c(e,t){if(F.isStatement(e))return e;var n=!1,r=void 0;if(F.isClass(e))n=!0,r="ClassDeclaration";else if(F.isFunction(e))n=!0,r="FunctionDeclaration";else if(F.isAssignmentExpression(e))return F.expressionStatement(e);if(n&&!e.id&&(r=!1),!r){if(t)return!1;throw new Error("cannot turn "+e.type+" to a statement")}return e.type=r,e}function p(e){if(F.isExpressionStatement(e)&&(e=e.expression),F.isExpression(e))return e;if(F.isClass(e)?e.type="ClassExpression":F.isFunction(e)&&(e.type="FunctionExpression"),!F.isExpression(e))throw new Error("cannot turn "+e.type+" to an expression");return e}function f(e,t){return F.isBlockStatement(e)?e:(F.isEmptyStatement(e)&&(e=[]),Array.isArray(e)||(F.isStatement(e)||(e=F.isFunction(t)?F.returnStatement(e):F.expressionStatement(e)),e=[e]),F.blockStatement(e))}function h(e){if(void 0===e)return F.identifier("undefined");if(e===!0||e===!1)return F.booleanLiteral(e);if(null===e)return F.nullLiteral();if((0,w.default)(e))return F.stringLiteral(e);if((0,A.default)(e))return F.numericLiteral(e);if((0,C.default)(e)){var t=e.source,n=e.toString().match(/\/([a-z]+|)$/)[1];return F.regExpLiteral(t,n)}if(Array.isArray(e))return F.arrayExpression(e.map(F.valueToNode));if((0,_.default)(e)){var r=[];for(var i in e){var a=void 0;a=F.isValidIdentifier(i)?F.identifier(i):F.stringLiteral(i),r.push(F.objectProperty(a,F.valueToNode(e[i])))}return F.objectExpression(r)}throw new Error("don't know how to turn this value into a node")}n.__esModule=!0;var d=e("babel-runtime/core-js/number/max-safe-integer"),y=i(d),m=e("babel-runtime/core-js/json/stringify"),b=i(m),g=e("babel-runtime/core-js/get-iterator"),v=i(g);n.toComputedKey=a,n.toSequenceExpression=s,n.toKeyAlias=o,n.toIdentifier=u,n.toBindingIdentifierName=l,n.toStatement=c,n.toExpression=p,n.toBlock=f,n.valueToNode=h;var x=e("lodash/isPlainObject"),_=i(x),E=e("lodash/isNumber"),A=i(E),D=e("lodash/isRegExp"),C=i(D),S=e("lodash/isString"),w=i(S),k=e("./index"),F=r(k);o.uid=0,o.increment=function(){return o.uid>=y.default?o.uid=0:o.uid++}},{"./index":265,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/number/max-safe-integer":103,"lodash/isNumber":483,"lodash/isPlainObject":486,"lodash/isRegExp":487,"lodash/isString":488}],256:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}var a=e("../index"),s=i(a),o=e("../constants"),u=e("./index"),l=r(u);(0,l.default)("ArrayExpression",{fields:{elements:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeOrValueType)("null","Expression","SpreadElement"))),default:[]}},visitor:["elements"],aliases:["Expression"]}),(0,l.default)("AssignmentExpression",{fields:{operator:{validate:(0,u.assertValueType)("string")},left:{validate:(0,u.assertNodeType)("LVal")},right:{validate:(0,u.assertNodeType)("Expression")}},builder:["operator","left","right"],visitor:["left","right"],aliases:["Expression"]}),(0,l.default)("BinaryExpression",{builder:["operator","left","right"],fields:{operator:{validate:u.assertOneOf.apply(void 0,o.BINARY_OPERATORS)},left:{validate:(0,u.assertNodeType)("Expression")},right:{validate:(0,u.assertNodeType)("Expression")}},visitor:["left","right"],aliases:["Binary","Expression"]}),(0,l.default)("Directive",{visitor:["value"],fields:{value:{validate:(0,u.assertNodeType)("DirectiveLiteral")}}}),(0,l.default)("DirectiveLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("string")}}}),(0,l.default)("BlockStatement",{builder:["body","directives"],visitor:["directives","body"],fields:{directives:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Directive"))),default:[]},body:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","Statement"]}),(0,l.default)("BreakStatement",{visitor:["label"],fields:{label:{validate:(0,u.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,l.default)("CallExpression",{visitor:["callee","arguments"],fields:{callee:{validate:(0,u.assertNodeType)("Expression")},arguments:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression","SpreadElement")))}},aliases:["Expression"]}),(0,l.default)("CatchClause",{visitor:["param","body"],fields:{param:{validate:(0,u.assertNodeType)("Identifier")},body:{validate:(0,u.assertNodeType)("BlockStatement")}},aliases:["Scopable"]}),(0,l.default)("ConditionalExpression",{visitor:["test","consequent","alternate"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},consequent:{validate:(0,u.assertNodeType)("Expression")},alternate:{validate:(0,u.assertNodeType)("Expression")}},aliases:["Expression","Conditional"]}),(0,l.default)("ContinueStatement",{visitor:["label"],fields:{label:{validate:(0,u.assertNodeType)("Identifier"),optional:!0}},aliases:["Statement","Terminatorless","CompletionStatement"]}),(0,l.default)("DebuggerStatement",{aliases:["Statement"]}),(0,l.default)("DoWhileStatement",{visitor:["test","body"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("Statement")}},aliases:["Statement","BlockParent","Loop","While","Scopable"]}),(0,l.default)("EmptyStatement",{aliases:["Statement"]}),(0,l.default)("ExpressionStatement",{visitor:["expression"],fields:{expression:{validate:(0,u.assertNodeType)("Expression")}},aliases:["Statement","ExpressionWrapper"]}),(0,l.default)("File",{builder:["program","comments","tokens"],visitor:["program"],fields:{program:{validate:(0,u.assertNodeType)("Program")}}}),(0,l.default)("ForInStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,u.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("ForStatement",{visitor:["init","test","update","body"],aliases:["Scopable","Statement","For","BlockParent","Loop"],fields:{init:{validate:(0,u.assertNodeType)("VariableDeclaration","Expression"),optional:!0},test:{validate:(0,u.assertNodeType)("Expression"),optional:!0},update:{validate:(0,u.assertNodeType)("Expression"),optional:!0},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("FunctionDeclaration",{builder:["id","params","body","generator","async"],visitor:["id","params","body","returnType","typeParameters"],fields:{id:{validate:(0,u.assertNodeType)("Identifier")},params:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("LVal")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}},aliases:["Scopable","Function","BlockParent","FunctionParent","Statement","Pureish","Declaration"]}),(0,l.default)("FunctionExpression",{inherits:"FunctionDeclaration",aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{id:{validate:(0,u.assertNodeType)("Identifier"),optional:!0},params:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("LVal")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}}}),(0,l.default)("Identifier",{builder:["name"],visitor:["typeAnnotation"],aliases:["Expression","LVal"],fields:{name:{validate:function(e,t,n){s.isValidIdentifier(n)}},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))}}}),(0,l.default)("IfStatement",{visitor:["test","consequent","alternate"],aliases:["Statement","Conditional"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},consequent:{validate:(0,u.assertNodeType)("Statement")},alternate:{optional:!0,validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("LabeledStatement",{visitor:["label","body"],aliases:["Statement"],fields:{label:{validate:(0,u.assertNodeType)("Identifier")},body:{validate:(0,u.assertNodeType)("Statement")}}}),(0,l.default)("StringLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("string")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("NumericLiteral",{builder:["value"],deprecatedAlias:"NumberLiteral",fields:{value:{validate:(0,u.assertValueType)("number")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("NullLiteral",{aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("BooleanLiteral",{builder:["value"],fields:{value:{validate:(0,u.assertValueType)("boolean")}},aliases:["Expression","Pureish","Literal","Immutable"]}),(0,l.default)("RegExpLiteral",{builder:["pattern","flags"],deprecatedAlias:"RegexLiteral",aliases:["Expression","Literal"],fields:{pattern:{validate:(0,u.assertValueType)("string")},flags:{validate:(0,u.assertValueType)("string"),default:""}}}),(0,l.default)("LogicalExpression",{builder:["operator","left","right"],visitor:["left","right"],aliases:["Binary","Expression"],fields:{operator:{validate:u.assertOneOf.apply(void 0,o.LOGICAL_OPERATORS)},left:{validate:(0,u.assertNodeType)("Expression")},right:{validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("MemberExpression",{builder:["object","property","computed"],visitor:["object","property"],aliases:["Expression","LVal"],fields:{object:{validate:(0,u.assertNodeType)("Expression")},property:{validate:function(e,t,n){var r=e.computed?"Expression":"Identifier";(0,u.assertNodeType)(r)(e,t,n)}},computed:{default:!1}}}),(0,l.default)("NewExpression",{visitor:["callee","arguments"],aliases:["Expression"],fields:{callee:{validate:(0,u.assertNodeType)("Expression")},arguments:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression","SpreadElement")))}}}),(0,l.default)("Program",{visitor:["directives","body"],builder:["body","directives"],fields:{directives:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Directive"))),default:[]},body:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}},aliases:["Scopable","BlockParent","Block","FunctionParent"]}),(0,l.default)("ObjectExpression",{visitor:["properties"],aliases:["Expression"],fields:{properties:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("ObjectMethod","ObjectProperty","SpreadProperty")))}}}),(0,l.default)("ObjectMethod",{builder:["kind","key","params","body","computed"],fields:{kind:{validate:(0,u.chain)((0,u.assertValueType)("string"),(0,u.assertOneOf)("method","get","set")),default:"method"},computed:{validate:(0,u.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];u.assertNodeType.apply(void 0,r)(e,t,n)}},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))},body:{validate:(0,u.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,u.assertValueType)("boolean")},async:{default:!1,validate:(0,u.assertValueType)("boolean")}},visitor:["key","params","body","decorators","returnType","typeParameters"],aliases:["UserWhitespacable","Function","Scopable","BlockParent","FunctionParent","Method","ObjectMember"]}),(0,l.default)("ObjectProperty",{builder:["key","value","computed","shorthand","decorators"],fields:{computed:{validate:(0,u.assertValueType)("boolean"),default:!1},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];u.assertNodeType.apply(void 0,r)(e,t,n)}},value:{validate:(0,u.assertNodeType)("Expression")},shorthand:{validate:(0,u.assertValueType)("boolean"),default:!1},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator"))),optional:!0}},visitor:["key","value","decorators"],aliases:["UserWhitespacable","Property","ObjectMember"]}),(0,l.default)("RestElement",{visitor:["argument","typeAnnotation"],aliases:["LVal"],fields:{argument:{validate:(0,u.assertNodeType)("LVal")},decorators:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Decorator")))}}}),(0,l.default)("ReturnStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,u.assertNodeType)("Expression"),optional:!0}}}),(0,l.default)("SequenceExpression",{visitor:["expressions"],fields:{expressions:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Expression")))}},aliases:["Expression"]}),(0,l.default)("SwitchCase",{visitor:["test","consequent"],fields:{test:{validate:(0,u.assertNodeType)("Expression"),optional:!0},consequent:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("Statement")))}}}),(0,l.default)("SwitchStatement",{visitor:["discriminant","cases"],aliases:["Statement","BlockParent","Scopable"],fields:{discriminant:{validate:(0,u.assertNodeType)("Expression")},cases:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("SwitchCase")))}}}),(0,l.default)("ThisExpression",{
+aliases:["Expression"]}),(0,l.default)("ThrowStatement",{visitor:["argument"],aliases:["Statement","Terminatorless","CompletionStatement"],fields:{argument:{validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("TryStatement",{visitor:["block","handler","finalizer"],aliases:["Statement"],fields:{body:{validate:(0,u.assertNodeType)("BlockStatement")},handler:{optional:!0,handler:(0,u.assertNodeType)("BlockStatement")},finalizer:{optional:!0,validate:(0,u.assertNodeType)("BlockStatement")}}}),(0,l.default)("UnaryExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!0},argument:{validate:(0,u.assertNodeType)("Expression")},operator:{validate:u.assertOneOf.apply(void 0,o.UNARY_OPERATORS)}},visitor:["argument"],aliases:["UnaryLike","Expression"]}),(0,l.default)("UpdateExpression",{builder:["operator","argument","prefix"],fields:{prefix:{default:!1},argument:{validate:(0,u.assertNodeType)("Expression")},operator:{validate:u.assertOneOf.apply(void 0,o.UPDATE_OPERATORS)}},visitor:["argument"],aliases:["Expression"]}),(0,l.default)("VariableDeclaration",{builder:["kind","declarations"],visitor:["declarations"],aliases:["Statement","Declaration"],fields:{kind:{validate:(0,u.chain)((0,u.assertValueType)("string"),(0,u.assertOneOf)("var","let","const"))},declarations:{validate:(0,u.chain)((0,u.assertValueType)("array"),(0,u.assertEach)((0,u.assertNodeType)("VariableDeclarator")))}}}),(0,l.default)("VariableDeclarator",{visitor:["id","init"],fields:{id:{validate:(0,u.assertNodeType)("LVal")},init:{optional:!0,validate:(0,u.assertNodeType)("Expression")}}}),(0,l.default)("WhileStatement",{visitor:["test","body"],aliases:["Statement","BlockParent","Loop","While","Scopable"],fields:{test:{validate:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("BlockStatement","Statement")}}}),(0,l.default)("WithStatement",{visitor:["object","body"],aliases:["Statement"],fields:{object:{object:(0,u.assertNodeType)("Expression")},body:{validate:(0,u.assertNodeType)("BlockStatement","Statement")}}})},{"../constants":254,"../index":265,"./index":260}],257:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AssignmentPattern",{visitor:["left","right"],aliases:["Pattern","LVal"],fields:{left:{validate:(0,i.assertNodeType)("Identifier")},right:{validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrayPattern",{visitor:["elements","typeAnnotation"],aliases:["Pattern","LVal"],fields:{elements:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Expression")))},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ArrowFunctionExpression",{builder:["params","body","async"],visitor:["params","body","returnType","typeParameters"],aliases:["Scopable","Function","BlockParent","FunctionParent","Expression","Pureish"],fields:{params:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("LVal")))},body:{validate:(0,i.assertNodeType)("BlockStatement","Expression")},async:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("ClassBody",{visitor:["body"],fields:{body:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ClassMethod","ClassProperty")))}}}),(0,a.default)("ClassDeclaration",{builder:["id","superClass","body","decorators"],visitor:["id","body","superClass","mixins","typeParameters","superTypeParameters","implements","decorators"],aliases:["Scopable","Class","Statement","Declaration","Pureish"],fields:{id:{validate:(0,i.assertNodeType)("Identifier")},body:{validate:(0,i.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ClassExpression",{inherits:"ClassDeclaration",aliases:["Scopable","Class","Expression","Pureish"],fields:{id:{optional:!0,validate:(0,i.assertNodeType)("Identifier")},body:{validate:(0,i.assertNodeType)("ClassBody")},superClass:{optional:!0,validate:(0,i.assertNodeType)("Expression")},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("ExportAllDeclaration",{visitor:["source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{source:{validate:(0,i.assertNodeType)("StringLiteral")}}}),(0,a.default)("ExportDefaultDeclaration",{visitor:["declaration"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,i.assertNodeType)("FunctionDeclaration","ClassDeclaration","Expression")}}}),(0,a.default)("ExportNamedDeclaration",{visitor:["declaration","specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration","ExportDeclaration"],fields:{declaration:{validate:(0,i.assertNodeType)("Declaration"),optional:!0},specifiers:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ExportSpecifier")))},source:{validate:(0,i.assertNodeType)("StringLiteral"),optional:!0}}}),(0,a.default)("ExportSpecifier",{visitor:["local","exported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")},exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ForOfStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,i.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,i.assertNodeType)("Expression")},body:{validate:(0,i.assertNodeType)("Statement")}}}),(0,a.default)("ImportDeclaration",{visitor:["specifiers","source"],aliases:["Statement","Declaration","ModuleDeclaration"],fields:{specifiers:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("ImportSpecifier","ImportDefaultSpecifier","ImportNamespaceSpecifier")))},source:{validate:(0,i.assertNodeType)("StringLiteral")}}}),(0,a.default)("ImportDefaultSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ImportNamespaceSpecifier",{visitor:["local"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ImportSpecifier",{visitor:["local","imported"],aliases:["ModuleSpecifier"],fields:{local:{validate:(0,i.assertNodeType)("Identifier")},imported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("MetaProperty",{visitor:["meta","property"],aliases:["Expression"],fields:{meta:{validate:(0,i.assertValueType)("string")},property:{validate:(0,i.assertValueType)("string")}}}),(0,a.default)("ClassMethod",{aliases:["Function","Scopable","BlockParent","FunctionParent","Method"],builder:["kind","key","params","body","computed","static"],visitor:["key","params","body","decorators","returnType","typeParameters"],fields:{kind:{validate:(0,i.chain)((0,i.assertValueType)("string"),(0,i.assertOneOf)("get","set","method","constructor")),default:"method"},computed:{default:!1,validate:(0,i.assertValueType)("boolean")},static:{default:!1,validate:(0,i.assertValueType)("boolean")},key:{validate:function(e,t,n){var r=e.computed?["Expression"]:["Identifier","StringLiteral","NumericLiteral"];i.assertNodeType.apply(void 0,r)(e,t,n)}},params:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("LVal")))},body:{validate:(0,i.assertNodeType)("BlockStatement")},generator:{default:!1,validate:(0,i.assertValueType)("boolean")},async:{default:!1,validate:(0,i.assertValueType)("boolean")}}}),(0,a.default)("ObjectPattern",{visitor:["properties","typeAnnotation"],aliases:["Pattern","LVal"],fields:{properties:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("RestProperty","Property")))},decorators:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Decorator")))}}}),(0,a.default)("SpreadElement",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("Super",{aliases:["Expression"]}),(0,a.default)("TaggedTemplateExpression",{visitor:["tag","quasi"],aliases:["Expression"],fields:{tag:{validate:(0,i.assertNodeType)("Expression")},quasi:{validate:(0,i.assertNodeType)("TemplateLiteral")}}}),(0,a.default)("TemplateElement",{builder:["value","tail"],fields:{value:{},tail:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("TemplateLiteral",{visitor:["quasis","expressions"],aliases:["Expression","Literal"],fields:{quasis:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("TemplateElement")))},expressions:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("Expression")))}}}),(0,a.default)("YieldExpression",{builder:["argument","delegate"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{delegate:{validate:(0,i.assertValueType)("boolean"),default:!1},argument:{optional:!0,validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],258:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AwaitExpression",{builder:["argument"],visitor:["argument"],aliases:["Expression","Terminatorless"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("ForAwaitStatement",{visitor:["left","right","body"],aliases:["Scopable","Statement","For","BlockParent","Loop","ForXStatement"],fields:{left:{validate:(0,i.assertNodeType)("VariableDeclaration","LVal")},right:{validate:(0,i.assertNodeType)("Expression")},body:{validate:(0,i.assertNodeType)("Statement")}}}),(0,a.default)("BindExpression",{visitor:["object","callee"],aliases:["Expression"],fields:{}}),(0,a.default)("Import",{aliases:["Expression"]}),(0,a.default)("Decorator",{visitor:["expression"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("DoExpression",{visitor:["body"],aliases:["Expression"],fields:{body:{validate:(0,i.assertNodeType)("BlockStatement")}}}),(0,a.default)("ExportDefaultSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("ExportNamespaceSpecifier",{visitor:["exported"],aliases:["ModuleSpecifier"],fields:{exported:{validate:(0,i.assertNodeType)("Identifier")}}}),(0,a.default)("RestProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("LVal")}}}),(0,a.default)("SpreadProperty",{visitor:["argument"],aliases:["UnaryLike"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],259:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("AnyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ArrayTypeAnnotation",{visitor:["elementType"],aliases:["Flow"],fields:{}}),(0,a.default)("BooleanTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("BooleanLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NullLiteralTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ClassImplements",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("ClassProperty",{visitor:["key","value","typeAnnotation","decorators"],builder:["key","value","typeAnnotation","decorators","computed"],aliases:["Property"],fields:{computed:{validate:(0,i.assertValueType)("boolean"),default:!1}}}),(0,a.default)("DeclareClass",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareFunction",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareInterface",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModule",{visitor:["id","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareModuleExports",{visitor:["typeAnnotation"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareTypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("DeclareVariable",{visitor:["id"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("ExistentialTypeParam",{aliases:["Flow"]}),(0,a.default)("FunctionTypeAnnotation",{visitor:["typeParameters","params","rest","returnType"],aliases:["Flow"],fields:{}}),(0,a.default)("FunctionTypeParam",{visitor:["name","typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("GenericTypeAnnotation",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceExtends",{visitor:["id","typeParameters"],aliases:["Flow"],fields:{}}),(0,a.default)("InterfaceDeclaration",{visitor:["id","typeParameters","extends","body"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("IntersectionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("MixedTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("EmptyTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"]}),(0,a.default)("NullableTypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("NumericLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("NumberTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("StringLiteralTypeAnnotation",{aliases:["Flow"],fields:{}}),(0,a.default)("StringTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("ThisTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}}),(0,a.default)("TupleTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeofTypeAnnotation",{visitor:["argument"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeAlias",{visitor:["id","typeParameters","right"],aliases:["Flow","FlowDeclaration","Statement","Declaration"],fields:{}}),(0,a.default)("TypeAnnotation",{visitor:["typeAnnotation"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeCastExpression",{visitor:["expression","typeAnnotation"],aliases:["Flow","ExpressionWrapper","Expression"],fields:{}}),(0,a.default)("TypeParameter",{visitor:["bound"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterDeclaration",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("TypeParameterInstantiation",{visitor:["params"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeAnnotation",{visitor:["properties","indexers","callProperties"],aliases:["Flow"],fields:{}}),(0,a.default)("ObjectTypeCallProperty",{visitor:["value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeIndexer",{visitor:["id","key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("ObjectTypeProperty",{visitor:["key","value"],aliases:["Flow","UserWhitespacable"],fields:{}}),(0,a.default)("QualifiedTypeIdentifier",{visitor:["id","qualification"],aliases:["Flow"],fields:{}}),(0,a.default)("UnionTypeAnnotation",{visitor:["types"],aliases:["Flow"],fields:{}}),(0,a.default)("VoidTypeAnnotation",{aliases:["Flow","FlowBaseAnnotation"],fields:{}})},{"./index":260}],260:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return Array.isArray(e)?"array":null===e?"null":void 0===e?"undefined":void 0===e?"undefined":(0,g.default)(e)}function s(e){function t(t,n,r){if(Array.isArray(r))for(var i=0;i=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;if(x.is(l,r)){i=!0;break}}if(!i)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,m.default)(n)+" but instead got "+(0,m.default)(r&&r.type))}for(var t=arguments.length,n=Array(t),r=0;r=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;if(a(r)===c||x.is(c,r)){i=!0;break}}if(!i)throw new TypeError("Property "+t+" of "+e.type+" expected node to be of a type "+(0,m.default)(n)+" but instead got "+(0,m.default)(r&&r.type))}for(var t=arguments.length,n=Array(t),r=0;r=e.length)break;i=e[r++]}else{if(r=e.next(),r.done)break;i=r.value}i.apply(void 0,arguments)}}for(var t=arguments.length,n=Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:{},n=t.inherits&&S[t.inherits]||{};t.fields=t.fields||n.fields||{},t.visitor=t.visitor||n.visitor||[],t.aliases=t.aliases||n.aliases||[],t.builder=t.builder||n.builder||t.visitor||[],t.deprecatedAlias&&(C[t.deprecatedAlias]=e);for(var r=t.visitor.concat(t.builder),i=Array.isArray(r),s=0,r=i?r:(0,d.default)(r);;){var o;if(i){if(s>=r.length)break;o=r[s++]}else{if(s=r.next(),s.done)break;o=s.value}var u=o;t.fields[u]=t.fields[u]||{}}for(var l in t.fields){var p=t.fields[l];t.builder.indexOf(l)===-1&&(p.optional=!0),void 0===p.default?p.default=null:p.validate||(p.validate=c(a(p.default)))}_[e]=t.visitor,D[e]=t.builder,A[e]=t.fields,E[e]=t.aliases,S[e]=t}n.__esModule=!0,n.DEPRECATED_KEYS=n.BUILDER_KEYS=n.NODE_FIELDS=n.ALIAS_KEYS=n.VISITOR_KEYS=void 0;var h=e("babel-runtime/core-js/get-iterator"),d=i(h),y=e("babel-runtime/core-js/json/stringify"),m=i(y),b=e("babel-runtime/helpers/typeof"),g=i(b);n.assertEach=s,n.assertOneOf=o,n.assertNodeType=u,n.assertNodeOrValueType=l,n.assertValueType=c,n.chain=p,n.default=f;var v=e("../index"),x=r(v),_=n.VISITOR_KEYS={},E=n.ALIAS_KEYS={},A=n.NODE_FIELDS={},D=n.BUILDER_KEYS={},C=n.DEPRECATED_KEYS={},S={}},{"../index":265,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/helpers/typeof":118}],261:[function(e,t,n){"use strict";e("./index"),e("./core"),e("./es2015"),e("./flow"),e("./jsx"),e("./misc"),e("./experimental")},{"./core":256,"./es2015":257,"./experimental":258,"./flow":259,"./index":260,"./jsx":262,"./misc":263}],262:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("JSXAttribute",{visitor:["name","value"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXNamespacedName")},value:{optional:!0,validate:(0,i.assertNodeType)("JSXElement","StringLiteral","JSXExpressionContainer")}}}),(0,a.default)("JSXClosingElement",{visitor:["name"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXMemberExpression")}}}),(0,a.default)("JSXElement",{builder:["openingElement","closingElement","children","selfClosing"],visitor:["openingElement","children","closingElement"],aliases:["JSX","Immutable","Expression"],fields:{openingElement:{validate:(0,i.assertNodeType)("JSXOpeningElement")},closingElement:{optional:!0,validate:(0,i.assertNodeType)("JSXClosingElement")},children:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("JSXText","JSXExpressionContainer","JSXSpreadChild","JSXElement")))}}}),(0,a.default)("JSXEmptyExpression",{aliases:["JSX","Expression"]}),(0,a.default)("JSXExpressionContainer",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXSpreadChild",{visitor:["expression"],aliases:["JSX","Immutable"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXIdentifier",{builder:["name"],aliases:["JSX","Expression"],fields:{name:{validate:(0,i.assertValueType)("string")}}}),(0,a.default)("JSXMemberExpression",{visitor:["object","property"],aliases:["JSX","Expression"],fields:{object:{validate:(0,i.assertNodeType)("JSXMemberExpression","JSXIdentifier")},property:{validate:(0,i.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXNamespacedName",{visitor:["namespace","name"],aliases:["JSX"],fields:{namespace:{validate:(0,i.assertNodeType)("JSXIdentifier")},name:{validate:(0,i.assertNodeType)("JSXIdentifier")}}}),(0,a.default)("JSXOpeningElement",{builder:["name","attributes","selfClosing"],visitor:["name","attributes"],aliases:["JSX","Immutable"],fields:{name:{validate:(0,i.assertNodeType)("JSXIdentifier","JSXMemberExpression")},selfClosing:{default:!1,validate:(0,i.assertValueType)("boolean")},attributes:{validate:(0,i.chain)((0,i.assertValueType)("array"),(0,i.assertEach)((0,i.assertNodeType)("JSXAttribute","JSXSpreadAttribute")))}}}),(0,a.default)("JSXSpreadAttribute",{visitor:["argument"],aliases:["JSX"],fields:{argument:{validate:(0,i.assertNodeType)("Expression")}}}),(0,a.default)("JSXText",{aliases:["JSX","Immutable"],builder:["value"],fields:{value:{validate:(0,i.assertValueType)("string")}}})},{"./index":260}],263:[function(e,t,n){"use strict";function r(e){return e&&e.__esModule?e:{default:e}}var i=e("./index"),a=r(i);(0,a.default)("Noop",{visitor:[]}),(0,a.default)("ParenthesizedExpression",{visitor:["expression"],aliases:["Expression","ExpressionWrapper"],fields:{expression:{validate:(0,i.assertNodeType)("Expression")}}})},{"./index":260}],264:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){var t=a(e);return 1===t.length?t[0]:u.unionTypeAnnotation(t)}function a(e){for(var t={},n={},r=[],i=[],s=0;s=0)){if(u.isAnyTypeAnnotation(o))return[o];if(u.isFlowBaseAnnotation(o))n[o.type]=o;else if(u.isUnionTypeAnnotation(o))r.indexOf(o.types)<0&&(e=e.concat(o.types),r.push(o.types));else if(u.isGenericTypeAnnotation(o)){var l=o.id.name;if(t[l]){var c=t[l];c.typeParameters?o.typeParameters&&(c.typeParameters.params=a(c.typeParameters.params.concat(o.typeParameters.params))):c=o.typeParameters}else t[l]=o}else i.push(o)}}for(var p in n)i.push(n[p]);for(var f in t)i.push(t[f]);return i}function s(e){if("string"===e)return u.stringTypeAnnotation();if("number"===e)return u.numberTypeAnnotation();if("undefined"===e)return u.voidTypeAnnotation();if("boolean"===e)return u.booleanTypeAnnotation();if("function"===e)return u.genericTypeAnnotation(u.identifier("Function"));if("object"===e)return u.genericTypeAnnotation(u.identifier("Object"));if("symbol"===e)return u.genericTypeAnnotation(u.identifier("Symbol"));throw new Error("Invalid typeof value")}n.__esModule=!0,n.createUnionTypeAnnotation=i,n.removeTypeDuplicates=a,n.createTypeAnnotationBasedOnTypeof=s;var o=e("./index"),u=r(o)},{"./index":265}],265:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){var t=te["is"+e];t||(t=te["is"+e]=function(t,n){return te.is(e,t,n)}),te["assert"+e]=function(n,r){if(r=r||{},!t(n,r))throw new Error("Expected type "+(0,N.default)(e)+" with option "+(0,N.default)(r))}}function s(e,t,n){return!!t&&(!!o(t.type,e)&&(void 0===n||te.shallowEqual(t,n)))}function o(e,t){if(e===t)return!0;if(te.ALIAS_KEYS[t])return!1;var n=te.FLIPPED_ALIAS_KEYS[t];if(n){if(n[0]===e)return!0;for(var r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}if(e===s)return!0}}return!1}function u(e,t,n){if(e){var r=te.NODE_FIELDS[e.type];if(r){var i=r[t];i&&i.validate&&(i.optional&&null==n||i.validate(e,t,n))}}}function l(e,t){for(var n=(0,O.default)(t),r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if(e[o]!==t[o])return!1}return!0}function c(e,t,n){return e.object=te.memberExpression(e.object,e.property,e.computed),e.property=t,e.computed=!!n,e}function p(e,t){return e.object=te.memberExpression(t,e.object),e}function f(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"body";return e[t]=te.toBlock(e[t],e)}function h(e){if(!e)return e;var t={};for(var n in e)"_"!==n[0]&&(t[n]=e[n]);return t}function d(e){var t=h(e);return delete t.loc,t}function y(e){if(!e)return e;var t={};for(var n in e)if("_"!==n[0]){var r=e[n];r&&(r.type?r=te.cloneDeep(r):Array.isArray(r)&&(r=r.map(te.cloneDeep))),t[n]=r}return t}function m(e,t){var n=e.split(".");return function(e){if(!te.isMemberExpression(e))return!1;for(var r=[e],i=0;r.length;){var a=r.shift();if(t&&i===n.length)return!0;if(te.isIdentifier(a)){if(n[i]!==a.name)return!1}else{if(!te.isStringLiteral(a)){if(te.isMemberExpression(a)){if(a.computed&&!te.isStringLiteral(a.property))return!1;r.push(a.object),r.push(a.property);continue}return!1}if(n[i]!==a.value)return!1}if(++i>n.length)return!1}return!0}}function b(e){for(var t=te.COMMENT_KEYS,n=Array.isArray(t),r=0,t=n?t:(0,j.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}delete e[i]}return e}function g(e,t){return v(e,t),x(e,t),_(e,t),e}function v(e,t){E("trailingComments",e,t)}function x(e,t){E("leadingComments",e,t)}function _(e,t){E("innerComments",e,t)}function E(e,t,n){t&&n&&(t[e]=(0,$.default)((0,X.default)([].concat(t[e],n[e]))))}function A(e,t){if(!e||!t)return e;for(var n=te.INHERIT_KEYS.optional,r=Array.isArray(n),i=0,n=r?n:(0,j.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;null==e[s]&&(e[s]=t[s])}for(var o in t)"_"===o[0]&&(e[o]=t[o]);for(var u=te.INHERIT_KEYS.force,l=Array.isArray(u),c=0,u=l?u:(0,j.default)(u);;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;e[f]=t[f]}return te.inheritsComments(e,t),e}function D(e){if(!C(e))throw new TypeError("Not a valid node "+(e&&e.type))}function C(e){return!(!e||!Q.VISITOR_KEYS[e.type])}function S(e,t,n){if(e){var r=te.VISITOR_KEYS[e.type];if(r){n=n||{},t(e,n);for(var i=r,a=Array.isArray(i),s=0,i=a?i:(0,j.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var u=o,l=e[u];if(Array.isArray(l))for(var c=l,p=Array.isArray(c),f=0,c=p?c:(0,j.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;S(d,t,n)}else S(l,t,n)}}}}function w(e,t){t=t||{};for(var n=t.preserveComments?ae:se,r=n,i=Array.isArray(r),a=0,r=i?r:(0,j.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;null!=e[o]&&(e[o]=void 0)}for(var u in e)"_"===u[0]&&null!=e[u]&&(e[u]=void 0);for(var l=(0,T.default)(e),c=l,p=Array.isArray(c),f=0,c=p?c:(0,j.default)(c);;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}e[h]=null}}function k(e,t){return S(e,w,t),e}n.__esModule=!0,n.createTypeAnnotationBasedOnTypeof=n.removeTypeDuplicates=n.createUnionTypeAnnotation=n.valueToNode=n.toBlock=n.toExpression=n.toStatement=n.toBindingIdentifierName=n.toIdentifier=n.toKeyAlias=n.toSequenceExpression=n.toComputedKey=n.isNodesEquivalent=n.isImmutable=n.isScope=n.isSpecifierDefault=n.isVar=n.isBlockScoped=n.isLet=n.isValidIdentifier=n.isReferenced=n.isBinding=n.getOuterBindingIdentifiers=n.getBindingIdentifiers=n.TYPES=n.react=n.DEPRECATED_KEYS=n.BUILDER_KEYS=n.NODE_FIELDS=n.ALIAS_KEYS=n.VISITOR_KEYS=n.NOT_LOCAL_BINDING=n.BLOCK_SCOPED_SYMBOL=n.INHERIT_KEYS=n.UNARY_OPERATORS=n.STRING_UNARY_OPERATORS=n.NUMBER_UNARY_OPERATORS=n.BOOLEAN_UNARY_OPERATORS=n.BINARY_OPERATORS=n.NUMBER_BINARY_OPERATORS=n.BOOLEAN_BINARY_OPERATORS=n.COMPARISON_BINARY_OPERATORS=n.EQUALITY_BINARY_OPERATORS=n.BOOLEAN_NUMBER_BINARY_OPERATORS=n.UPDATE_OPERATORS=n.LOGICAL_OPERATORS=n.COMMENT_KEYS=n.FOR_INIT_KEYS=n.FLATTENABLE_KEYS=n.STATEMENT_OR_BLOCK_KEYS=void 0;var F=e("babel-runtime/core-js/object/get-own-property-symbols"),T=i(F),P=e("babel-runtime/core-js/get-iterator"),j=i(P),B=e("babel-runtime/core-js/object/keys"),O=i(B),I=e("babel-runtime/core-js/json/stringify"),N=i(I),L=e("./constants");Object.defineProperty(n,"STATEMENT_OR_BLOCK_KEYS",{enumerable:!0,get:function(){return L.STATEMENT_OR_BLOCK_KEYS}}),Object.defineProperty(n,"FLATTENABLE_KEYS",{enumerable:!0,get:function(){return L.FLATTENABLE_KEYS}}),Object.defineProperty(n,"FOR_INIT_KEYS",{enumerable:!0,get:function(){return L.FOR_INIT_KEYS}}),Object.defineProperty(n,"COMMENT_KEYS",{enumerable:!0,get:function(){return L.COMMENT_KEYS}}),Object.defineProperty(n,"LOGICAL_OPERATORS",{enumerable:!0,get:function(){return L.LOGICAL_OPERATORS}}),Object.defineProperty(n,"UPDATE_OPERATORS",{enumerable:!0,get:function(){return L.UPDATE_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_NUMBER_BINARY_OPERATORS}}),Object.defineProperty(n,"EQUALITY_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.EQUALITY_BINARY_OPERATORS}}),Object.defineProperty(n,"COMPARISON_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.COMPARISON_BINARY_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_BINARY_OPERATORS}}),Object.defineProperty(n,"NUMBER_BINARY_OPERATORS",{enumerable:!0,get:function(){return L.NUMBER_BINARY_OPERATORS}}),Object.defineProperty(n,"BINARY_OPERATORS",{enumerable:!0,get:function(){return L.BINARY_OPERATORS}}),Object.defineProperty(n,"BOOLEAN_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.BOOLEAN_UNARY_OPERATORS}}),Object.defineProperty(n,"NUMBER_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.NUMBER_UNARY_OPERATORS}}),Object.defineProperty(n,"STRING_UNARY_OPERATORS",{enumerable:!0,get:function(){return L.STRING_UNARY_OPERATORS}}),Object.defineProperty(n,"UNARY_OPERATORS",{enumerable:!0,get:function(){return L.UNARY_OPERATORS}}),Object.defineProperty(n,"INHERIT_KEYS",{enumerable:!0,get:function(){return L.INHERIT_KEYS}}),Object.defineProperty(n,"BLOCK_SCOPED_SYMBOL",{enumerable:!0,get:function(){return L.BLOCK_SCOPED_SYMBOL}}),Object.defineProperty(n,"NOT_LOCAL_BINDING",{enumerable:!0,get:function(){return L.NOT_LOCAL_BINDING}}),n.is=s,n.isType=o,n.validate=u,n.shallowEqual=l,n.appendToMemberExpression=c,n.prependToMemberExpression=p,n.ensureBlock=f,n.clone=h,n.cloneWithoutLoc=d,n.cloneDeep=y,n.buildMatchMemberExpression=m,n.removeComments=b,n.inheritsComments=g,n.inheritTrailingComments=v,n.inheritLeadingComments=x,n.inheritInnerComments=_,n.inherits=A,n.assertNode=D,n.isNode=C,n.traverseFast=S,n.removeProperties=w,
+n.removePropertiesDeep=k;var M=e("./retrievers");Object.defineProperty(n,"getBindingIdentifiers",{enumerable:!0,get:function(){return M.getBindingIdentifiers}}),Object.defineProperty(n,"getOuterBindingIdentifiers",{enumerable:!0,get:function(){return M.getOuterBindingIdentifiers}});var R=e("./validators");Object.defineProperty(n,"isBinding",{enumerable:!0,get:function(){return R.isBinding}}),Object.defineProperty(n,"isReferenced",{enumerable:!0,get:function(){return R.isReferenced}}),Object.defineProperty(n,"isValidIdentifier",{enumerable:!0,get:function(){return R.isValidIdentifier}}),Object.defineProperty(n,"isLet",{enumerable:!0,get:function(){return R.isLet}}),Object.defineProperty(n,"isBlockScoped",{enumerable:!0,get:function(){return R.isBlockScoped}}),Object.defineProperty(n,"isVar",{enumerable:!0,get:function(){return R.isVar}}),Object.defineProperty(n,"isSpecifierDefault",{enumerable:!0,get:function(){return R.isSpecifierDefault}}),Object.defineProperty(n,"isScope",{enumerable:!0,get:function(){return R.isScope}}),Object.defineProperty(n,"isImmutable",{enumerable:!0,get:function(){return R.isImmutable}}),Object.defineProperty(n,"isNodesEquivalent",{enumerable:!0,get:function(){return R.isNodesEquivalent}});var U=e("./converters");Object.defineProperty(n,"toComputedKey",{enumerable:!0,get:function(){return U.toComputedKey}}),Object.defineProperty(n,"toSequenceExpression",{enumerable:!0,get:function(){return U.toSequenceExpression}}),Object.defineProperty(n,"toKeyAlias",{enumerable:!0,get:function(){return U.toKeyAlias}}),Object.defineProperty(n,"toIdentifier",{enumerable:!0,get:function(){return U.toIdentifier}}),Object.defineProperty(n,"toBindingIdentifierName",{enumerable:!0,get:function(){return U.toBindingIdentifierName}}),Object.defineProperty(n,"toStatement",{enumerable:!0,get:function(){return U.toStatement}}),Object.defineProperty(n,"toExpression",{enumerable:!0,get:function(){return U.toExpression}}),Object.defineProperty(n,"toBlock",{enumerable:!0,get:function(){return U.toBlock}}),Object.defineProperty(n,"valueToNode",{enumerable:!0,get:function(){return U.valueToNode}});var V=e("./flow");Object.defineProperty(n,"createUnionTypeAnnotation",{enumerable:!0,get:function(){return V.createUnionTypeAnnotation}}),Object.defineProperty(n,"removeTypeDuplicates",{enumerable:!0,get:function(){return V.removeTypeDuplicates}}),Object.defineProperty(n,"createTypeAnnotationBasedOnTypeof",{enumerable:!0,get:function(){return V.createTypeAnnotationBasedOnTypeof}});var G=e("to-fast-properties"),q=i(G),K=e("lodash/compact"),X=i(K),J=e("lodash/clone"),W=i(J),z=e("lodash/each"),Y=i(z),H=e("lodash/uniq"),$=i(H);e("./definitions/init");var Q=e("./definitions"),Z=e("./react"),ee=r(Z),te=n;n.VISITOR_KEYS=Q.VISITOR_KEYS,n.ALIAS_KEYS=Q.ALIAS_KEYS,n.NODE_FIELDS=Q.NODE_FIELDS,n.BUILDER_KEYS=Q.BUILDER_KEYS,n.DEPRECATED_KEYS=Q.DEPRECATED_KEYS,n.react=ee;for(var ne in te.VISITOR_KEYS)a(ne);te.FLIPPED_ALIAS_KEYS={},(0,Y.default)(te.ALIAS_KEYS,function(e,t){(0,Y.default)(e,function(e){(te.FLIPPED_ALIAS_KEYS[e]=te.FLIPPED_ALIAS_KEYS[e]||[]).push(t)})}),(0,Y.default)(te.FLIPPED_ALIAS_KEYS,function(e,t){te[t.toUpperCase()+"_TYPES"]=e,a(t)});n.TYPES=(0,O.default)(te.VISITOR_KEYS).concat((0,O.default)(te.FLIPPED_ALIAS_KEYS)).concat((0,O.default)(te.DEPRECATED_KEYS));(0,Y.default)(te.BUILDER_KEYS,function(e,t){function n(){if(arguments.length>e.length)throw new Error("t."+t+": Too many arguments passed. Received "+arguments.length+" but can receive no more than "+e.length);var n={};n.type=t;for(var r=0,i=e,a=Array.isArray(i),s=0,i=a?i:(0,j.default)(i);;){var o;if(a){if(s>=i.length)break;o=i[s++]}else{if(s=i.next(),s.done)break;o=s.value}var l=o,c=te.NODE_FIELDS[t][l],p=arguments[r++];void 0===p&&(p=(0,W.default)(c.default)),n[l]=p}for(var f in n)u(n,f,n[f]);return n}te[t]=n,te[t[0].toLowerCase()+t.slice(1)]=n});var re=function(e){function t(t){return function(){return console.trace("The node type "+e+" has been renamed to "+n),t.apply(this,arguments)}}var n=te.DEPRECATED_KEYS[e];te[e]=te[e[0].toLowerCase()+e.slice(1)]=t(te[n]),te["is"+e]=t(te["is"+n]),te["assert"+e]=t(te["assert"+n])};for(var ie in te.DEPRECATED_KEYS)re(ie);(0,q.default)(te),(0,q.default)(te.VISITOR_KEYS);var ae=["tokens","start","end","loc","raw","rawValue"],se=te.COMMENT_KEYS.concat(["comments"]).concat(ae)},{"./constants":254,"./converters":255,"./definitions":260,"./definitions/init":261,"./flow":264,"./react":266,"./retrievers":267,"./validators":268,"babel-runtime/core-js/get-iterator":100,"babel-runtime/core-js/json/stringify":101,"babel-runtime/core-js/object/get-own-property-symbols":106,"babel-runtime/core-js/object/keys":107,"lodash/clone":455,"lodash/compact":458,"lodash/each":461,"lodash/uniq":509,"to-fast-properties":273}],266:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return!!e&&/^[a-z]|\-/.test(e)}function a(e,t){for(var n=e.value.split(/\r\n|\n|\r/),r=0,i=0;i=0)return!0}else if(a===e)return!0}return!1}function s(e,t){switch(t.type){case"BindExpression":return t.object===e||t.callee===e;case"MemberExpression":case"JSXMemberExpression":return!(t.property!==e||!t.computed)||t.object===e;case"MetaProperty":return!1;case"ObjectProperty":if(t.key===e)return t.computed;case"VariableDeclarator":return t.id!==e;case"ArrowFunctionExpression":case"FunctionDeclaration":case"FunctionExpression":for(var n=t.params,r=Array.isArray(n),i=0,n=r?n:(0,x.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}if(a===e)return!1}return t.id!==e;case"ExportSpecifier":return!t.source&&t.local===e;case"ExportNamespaceSpecifier":case"ExportDefaultSpecifier":return!1;case"JSXAttribute":return t.name!==e;case"ClassProperty":return t.key===e?t.computed:t.value===e;case"ImportDefaultSpecifier":case"ImportNamespaceSpecifier":case"ImportSpecifier":return!1;case"ClassDeclaration":case"ClassExpression":return t.id!==e;case"ClassMethod":case"ObjectMethod":return t.key===e&&t.computed;case"LabeledStatement":return!1;case"CatchClause":return t.param!==e;case"RestElement":return!1;case"AssignmentExpression":return t.right===e;case"AssignmentPattern":return t.right===e;case"ObjectPattern":case"ArrayPattern":return!1}return!0}function o(e){return"string"==typeof e&&!A.default.keyword.isReservedWordES6(e,!0)&&A.default.keyword.isIdentifierNameES6(e)}function u(e){return C.isVariableDeclaration(e)&&("var"!==e.kind||e[S.BLOCK_SCOPED_SYMBOL])}function l(e){return C.isFunctionDeclaration(e)||C.isClassDeclaration(e)||C.isLet(e)}function c(e){return C.isVariableDeclaration(e,{kind:"var"})&&!e[S.BLOCK_SCOPED_SYMBOL]}function p(e){return C.isImportDefaultSpecifier(e)||C.isIdentifier(e.imported||e.exported,{name:"default"})}function f(e,t){return(!C.isBlockStatement(e)||!C.isFunction(t,{body:e}))&&C.isScopable(e)}function h(e){return!!C.isType(e.type,"Immutable")||!!C.isIdentifier(e)&&"undefined"===e.name}function d(e,t){if("object"!==(void 0===e?"undefined":(0,g.default)(e))||"object"!==(void 0===e?"undefined":(0,g.default)(e))||null==e||null==t)return e===t;if(e.type!==t.type)return!1;for(var n=(0,m.default)(C.NODE_FIELDS[e.type]||e.type),r=n,i=Array.isArray(r),a=0,r=i?r:(0,x.default)(r);;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;if((0,g.default)(e[o])!==(0,g.default)(t[o]))return!1;if(Array.isArray(e[o])){if(!Array.isArray(t[o]))return!1;if(e[o].length!==t[o].length)return!1;for(var u=0;u=0}}function i(e,t){for(var n=65536,r=0;re)return!1;if(n+=t[r+1],n>=e)return!0}}function a(e){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&T.test(String.fromCharCode(e)):i(e,j)))}function s(e){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&P.test(String.fromCharCode(e)):i(e,j)||i(e,B))))}function o(e){var t={};for(var n in O)t[n]=e&&n in e?e[n]:O[n];return t}function u(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function l(e,t){return new I(e,{beforeExpr:!0,binop:t})}function c(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t.keyword=e,R[e]=M["_"+e]=new I(e,t)}function p(e){return 10===e||13===e||8232===e||8233===e}function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function h(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function d(e,t){for(var n=1,r=0;;){V.lastIndex=r;var i=V.exec(e);if(!(i&&i.index>10)+55296,(e-65536&1023)+56320)}function g(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function v(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function x(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function E(e,t,n,r){return e.type=t,e.end=n,e.loc.end=r,this.processComment(e),e}function A(e){return e[e.length-1]}function D(e){return"JSXIdentifier"===e.type?e.name:"JSXNamespacedName"===e.type?e.namespace.name+":"+e.name.name:"JSXMemberExpression"===e.type?D(e.object)+"."+D(e.property):void 0}function C(e,t){return new $(t,e).parse()}Object.defineProperty(n,"__esModule",{value:!0});var S={6:r("enum await"),strict:r("implements interface let package private protected public static yield"),strictBind:r("eval arguments")},w=r("break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this let const class extends export import yield super"),k="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿕ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞮꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ",F="‌‍·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛ࣔ-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఃా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ഁ-ഃാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ංඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ູົຼ່-ໍ໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠐-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭ᳲ-᳴᳸᳹᷀-᷵᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱꤀-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_",T=new RegExp("["+k+"]"),P=new RegExp("["+k+F+"]");k=F=null;var j=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,17,26,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,157,310,10,21,11,7,153,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,26,45,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,785,52,76,44,33,24,27,35,42,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,85,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,159,52,19,3,54,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,86,25,391,63,32,0,449,56,264,8,2,36,18,0,50,29,881,921,103,110,18,195,2749,1070,4050,582,8634,568,8,30,114,29,19,47,17,3,32,20,6,18,881,68,12,0,67,12,65,0,32,6124,20,754,9486,1,3071,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,4149,196,60,67,1213,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42710,42,4148,12,221,3,5761,10591,541],B=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,1306,2,54,14,32,9,16,3,46,10,54,9,7,2,37,13,2,9,52,0,13,2,49,13,10,2,4,9,83,11,7,0,161,11,6,9,7,3,57,0,2,6,3,1,3,2,10,0,11,1,3,6,4,4,193,17,10,9,87,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,84,14,5,9,423,9,838,7,2,7,17,9,57,21,2,13,19882,9,135,4,60,6,26,9,1016,45,17,3,19723,1,5319,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,2214,6,110,6,6,9,792487,239],O={sourceType:"script",sourceFilename:void 0,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowSuperOutsideMethod:!1,plugins:[],strictMode:null},I=function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};u(this,e),this.label=t,this.keyword=n.keyword,this.beforeExpr=!!n.beforeExpr,this.startsExpr=!!n.startsExpr,this.rightAssociative=!!n.rightAssociative,this.isLoop=!!n.isLoop,this.isAssign=!!n.isAssign,this.prefix=!!n.prefix,this.postfix=!!n.postfix,this.binop=n.binop||null,this.updateContext=null},N={beforeExpr:!0},L={startsExpr:!0},M={num:new I("num",L),regexp:new I("regexp",L),string:new I("string",L),name:new I("name",L),eof:new I("eof"),bracketL:new I("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new I("]"),braceL:new I("{",{beforeExpr:!0,startsExpr:!0}),braceBarL:new I("{|",{beforeExpr:!0,startsExpr:!0}),braceR:new I("}"),braceBarR:new I("|}"),parenL:new I("(",{beforeExpr:!0,startsExpr:!0}),parenR:new I(")"),comma:new I(",",N),semi:new I(";",N),colon:new I(":",N),doubleColon:new I("::",N),dot:new I("."),question:new I("?",N),arrow:new I("=>",N),template:new I("template"),ellipsis:new I("...",N),backQuote:new I("`",L),dollarBraceL:new I("${",{beforeExpr:!0,startsExpr:!0}),at:new I("@"),eq:new I("=",{beforeExpr:!0,isAssign:!0}),assign:new I("_=",{beforeExpr:!0,isAssign:!0}),incDec:new I("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new I("prefix",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:l("||",1),logicalAND:l("&&",2),bitwiseOR:l("|",3),bitwiseXOR:l("^",4),bitwiseAND:l("&",5),equality:l("==/!=",6),relational:l("",7),bitShift:l("<>",8),plusMin:new I("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:l("%",10),star:l("*",10),slash:l("/",10),exponent:new I("**",{beforeExpr:!0,binop:11,rightAssociative:!0})},R={};c("break"),c("case",N),c("catch"),c("continue"),c("debugger"),c("default",N),c("do",{isLoop:!0,beforeExpr:!0}),c("else",N),c("finally"),c("for",{isLoop:!0}),c("function",L),c("if"),c("return",N),c("switch"),c("throw",N),c("try"),c("var"),c("let"),c("const"),c("while",{isLoop:!0}),c("with"),c("new",{beforeExpr:!0,startsExpr:!0}),c("this",L),c("super",L),c("class"),c("extends",N),c("export"),c("import"),c("yield",{beforeExpr:!0,startsExpr:!0}),c("null",L),c("true",L),c("false",L),c("in",{beforeExpr:!0,binop:7}),c("instanceof",{beforeExpr:!0,binop:7}),c("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),c("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),c("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0});var U=/\r\n?|\n|\u2028|\u2029/,V=new RegExp(U.source,"g"),G=/[\u1680\u180e\u2000-\u200a\u202f\u205f\u3000\ufeff]/,q=function e(t,n,r,i){f(this,e),this.token=t,this.isExpr=!!n,this.preserveSpace=!!r,this.override=i},K={braceStatement:new q("{",!1),braceExpression:new q("{",!0),templateQuasi:new q("${",!0),parenStatement:new q("(",!1),parenExpression:new q("(",!0),template:new q("`",!0,!0,function(e){return e.readTmplToken()}),functionExpression:new q("function",!0)};M.parenR.updateContext=M.braceR.updateContext=function(){if(1===this.state.context.length)return void(this.state.exprAllowed=!0);var e=this.state.context.pop();e===K.braceStatement&&this.curContext()===K.functionExpression?(this.state.context.pop(),this.state.exprAllowed=!1):e===K.templateQuasi?this.state.exprAllowed=!0:this.state.exprAllowed=!e.isExpr},M.name.updateContext=function(e){this.state.exprAllowed=!1,e!==M._let&&e!==M._const&&e!==M._var||U.test(this.input.slice(this.state.end))&&(this.state.exprAllowed=!0)},M.braceL.updateContext=function(e){this.state.context.push(this.braceIsBlock(e)?K.braceStatement:K.braceExpression),this.state.exprAllowed=!0},M.dollarBraceL.updateContext=function(){this.state.context.push(K.templateQuasi),this.state.exprAllowed=!0},M.parenL.updateContext=function(e){var t=e===M._if||e===M._for||e===M._with||e===M._while;this.state.context.push(t?K.parenStatement:K.parenExpression),this.state.exprAllowed=!0},M.incDec.updateContext=function(){},M._function.updateContext=function(){this.curContext()!==K.braceStatement&&this.state.context.push(K.functionExpression),this.state.exprAllowed=!1},M.backQuote.updateContext=function(){this.curContext()===K.template?this.state.context.pop():this.state.context.push(K.template),this.state.exprAllowed=!1};var X=function e(t,n){h(this,e),this.line=t,this.column=n},J=function e(t,n){h(this,e),this.start=t,this.end=n},W=function(){function e(){y(this,e)}return e.prototype.init=function(e,t){return this.strict=e.strictMode!==!1&&"module"===e.sourceType,this.input=t,this.potentialArrowAt=-1,this.inMethod=this.inFunction=this.inGenerator=this.inAsync=this.inType=this.noAnonFunctionType=!1,this.labels=[],this.decorators=[],this.tokens=[],this.comments=[],this.trailingComments=[],this.leadingComments=[],this.commentStack=[],this.pos=this.lineStart=0,this.curLine=1,this.type=M.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=[K.braceStatement],this.exprAllowed=!0,this.containsEsc=this.containsOctal=!1,this.octalPosition=null,this.exportedIdentifiers=[],this},e.prototype.curPosition=function(){return new X(this.curLine,this.pos-this.lineStart)},e.prototype.clone=function(t){var n=new e;for(var r in this){var i=this[r];t&&"context"!==r||!Array.isArray(i)||(i=i.slice()),n[r]=i}return n},e}(),z=function e(t){m(this,e),this.type=t.type,this.value=t.value,this.start=t.start,this.end=t.end,this.loc=new J(t.startLoc,t.endLoc)},Y=function(){function e(t,n){m(this,e),this.state=new W,this.state.init(t,n)}return e.prototype.next=function(){this.isLookahead||this.state.tokens.push(new z(this.state)),this.state.lastTokEnd=this.state.end,this.state.lastTokStart=this.state.start,this.state.lastTokEndLoc=this.state.endLoc,this.state.lastTokStartLoc=this.state.startLoc,this.nextToken()},e.prototype.eat=function(e){return!!this.match(e)&&(this.next(),!0)},e.prototype.match=function(e){return this.state.type===e},e.prototype.isKeyword=function(e){return w(e)},e.prototype.lookahead=function(){var e=this.state;this.state=e.clone(!0),this.isLookahead=!0,this.next(),this.isLookahead=!1;var t=this.state.clone(!0);return this.state=e,t},e.prototype.setStrict=function(e){if(this.state.strict=e,this.match(M.num)||this.match(M.string)){for(this.state.pos=this.state.start;this.state.pos=this.input.length?this.finishToken(M.eof):e.override?e.override(this):this.readToken(this.fullCharCodeAtPos())},e.prototype.readToken=function(e){return a(e)||92===e?this.readWord():this.getTokenFromCode(e)},e.prototype.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.state.pos);return e<=55295||e>=57344?e:(e<<10)+this.input.charCodeAt(this.state.pos+1)-56613888},e.prototype.pushComment=function(e,t,n,r,i,a){var s={type:e?"CommentBlock":"CommentLine",value:t,start:n,end:r,loc:new J(i,a)};this.isLookahead||(this.state.tokens.push(s),this.state.comments.push(s),this.addComment(s))},e.prototype.skipBlockComment=function(){var e=this.state.curPosition(),t=this.state.pos,n=this.input.indexOf("*/",this.state.pos+=2);n===-1&&this.raise(this.state.pos-2,"Unterminated comment"),this.state.pos=n+2,V.lastIndex=t;for(var r=void 0;(r=V.exec(this.input))&&r.index8&&e<14||e>=5760&&G.test(String.fromCharCode(e))))break e;++this.state.pos}}},e.prototype.finishToken=function(e,t){this.state.end=this.state.pos,this.state.endLoc=this.state.curPosition();var n=this.state.type;this.state.type=e,this.state.value=t,this.updateContext(n)},e.prototype.readToken_dot=function(){var e=this.input.charCodeAt(this.state.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.state.pos+2);return 46===e&&46===t?(this.state.pos+=3,this.finishToken(M.ellipsis)):(++this.state.pos,this.finishToken(M.dot))},e.prototype.readToken_slash=function(){return this.state.exprAllowed?(++this.state.pos,this.readRegexp()):61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.assign,2):this.finishOp(M.slash,1)},e.prototype.readToken_mult_modulo=function(e){var t=42===e?M.star:M.modulo,n=1,r=this.input.charCodeAt(this.state.pos+1);return 42===r&&(n++,r=this.input.charCodeAt(this.state.pos+2),t=M.exponent),61===r&&(n++,t=M.assign),this.finishOp(t,n)},e.prototype.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?this.finishOp(124===e?M.logicalOR:M.logicalAND,2):61===t?this.finishOp(M.assign,2):124===e&&125===t&&this.hasPlugin("flow")?this.finishOp(M.braceBarR,2):this.finishOp(124===e?M.bitwiseOR:M.bitwiseAND,1)},e.prototype.readToken_caret=function(){return 61===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.assign,2):this.finishOp(M.bitwiseXOR,1)},e.prototype.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.state.pos+1);return t===e?45===t&&62===this.input.charCodeAt(this.state.pos+2)&&U.test(this.input.slice(this.state.lastTokEnd,this.state.pos))?(this.skipLineComment(3),this.skipSpace(),this.nextToken()):this.finishOp(M.incDec,2):61===t?this.finishOp(M.assign,2):this.finishOp(M.plusMin,1)},e.prototype.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.state.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.state.pos+2)?3:2,61===this.input.charCodeAt(this.state.pos+n)?this.finishOp(M.assign,n+1):this.finishOp(M.bitShift,n)):33===t&&60===e&&45===this.input.charCodeAt(this.state.pos+2)&&45===this.input.charCodeAt(this.state.pos+3)?(this.inModule&&this.unexpected(),this.skipLineComment(4),this.skipSpace(),this.nextToken()):(61===t&&(n=2),this.finishOp(M.relational,n))},e.prototype.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.state.pos+1);return 61===t?this.finishOp(M.equality,61===this.input.charCodeAt(this.state.pos+2)?3:2):61===e&&62===t?(this.state.pos+=2,this.finishToken(M.arrow)):this.finishOp(61===e?M.eq:M.prefix,1)},e.prototype.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.state.pos,this.finishToken(M.parenL);case 41:return++this.state.pos,this.finishToken(M.parenR);case 59:return++this.state.pos,this.finishToken(M.semi);case 44:return++this.state.pos,this.finishToken(M.comma);case 91:return++this.state.pos,this.finishToken(M.bracketL);case 93:return++this.state.pos,this.finishToken(M.bracketR);case 123:return this.hasPlugin("flow")&&124===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.braceBarL,2):(++this.state.pos,this.finishToken(M.braceL));case 125:return++this.state.pos,this.finishToken(M.braceR);case 58:return this.hasPlugin("functionBind")&&58===this.input.charCodeAt(this.state.pos+1)?this.finishOp(M.doubleColon,2):(++this.state.pos,this.finishToken(M.colon));case 63:return++this.state.pos,this.finishToken(M.question);case 64:return++this.state.pos,this.finishToken(M.at);case 96:return++this.state.pos,this.finishToken(M.backQuote);case 48:var t=this.input.charCodeAt(this.state.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2);case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 126:return this.finishOp(M.prefix,1)}this.raise(this.state.pos,"Unexpected character '"+b(e)+"'")},e.prototype.finishOp=function(e,t){var n=this.input.slice(this.state.pos,this.state.pos+t);return this.state.pos+=t,this.finishToken(e,n)},e.prototype.readRegexp=function(){for(var e=void 0,t=void 0,n=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(n,"Unterminated regular expression");var r=this.input.charAt(this.state.pos);if(U.test(r)&&this.raise(n,"Unterminated regular expression"),e)e=!1;else{if("["===r)t=!0;else if("]"===r&&t)t=!1;else if("/"===r&&!t)break;e="\\"===r}++this.state.pos}var i=this.input.slice(n,this.state.pos);++this.state.pos;var a=this.readWord1();if(a){/^[gmsiyu]*$/.test(a)||this.raise(n,"Invalid regular expression flag")}return this.finishToken(M.regexp,{pattern:i,flags:a})},e.prototype.readInt=function(e,t){for(var n=this.state.pos,r=0,i=0,a=null==t?1/0:t;i=97?s-97+10:s>=65?s-65+10:s>=48&&s<=57?s-48:1/0,o>=e)break;++this.state.pos,r=r*e+o}return this.state.pos===n||null!=t&&this.state.pos-n!==t?null:r},e.prototype.readRadixNumber=function(e){this.state.pos+=2;var t=this.readInt(e);return null==t&&this.raise(this.state.start+2,"Expected number in radix "+e),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number"),this.finishToken(M.num,t)},
+e.prototype.readNumber=function(e){var t=this.state.pos,n=!1,r=48===this.input.charCodeAt(this.state.pos);e||null!==this.readInt(10)||this.raise(t,"Invalid number");var i=this.input.charCodeAt(this.state.pos);46===i&&(++this.state.pos,this.readInt(10),n=!0,i=this.input.charCodeAt(this.state.pos)),69!==i&&101!==i||(i=this.input.charCodeAt(++this.state.pos),43!==i&&45!==i||++this.state.pos,null===this.readInt(10)&&this.raise(t,"Invalid number"),n=!0),a(this.fullCharCodeAtPos())&&this.raise(this.state.pos,"Identifier directly after number");var s=this.input.slice(t,this.state.pos),o=void 0;return n?o=parseFloat(s):r&&1!==s.length?/[89]/.test(s)||this.state.strict?this.raise(t,"Invalid number"):o=parseInt(s,8):o=parseInt(s,10),this.finishToken(M.num,o)},e.prototype.readCodePoint=function(){var e=this.input.charCodeAt(this.state.pos),t=void 0;if(123===e){var n=++this.state.pos;t=this.readHexChar(this.input.indexOf("}",this.state.pos)-this.state.pos),++this.state.pos,t>1114111&&this.raise(n,"Code point out of bounds")}else t=this.readHexChar(4);return t},e.prototype.readString=function(e){for(var t="",n=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var r=this.input.charCodeAt(this.state.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.state.pos),t+=this.readEscapedChar(!1),n=this.state.pos):(p(r)&&this.raise(this.state.start,"Unterminated string constant"),++this.state.pos)}return t+=this.input.slice(n,this.state.pos++),this.finishToken(M.string,t)},e.prototype.readTmplToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated template");var n=this.input.charCodeAt(this.state.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.state.pos+1))return this.state.pos===this.state.start&&this.match(M.template)?36===n?(this.state.pos+=2,this.finishToken(M.dollarBraceL)):(++this.state.pos,this.finishToken(M.backQuote)):(e+=this.input.slice(t,this.state.pos),this.finishToken(M.template,e));if(92===n)e+=this.input.slice(t,this.state.pos),e+=this.readEscapedChar(!0),t=this.state.pos;else if(p(n)){switch(e+=this.input.slice(t,this.state.pos),++this.state.pos,n){case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}++this.state.curLine,this.state.lineStart=this.state.pos,t=this.state.pos}else++this.state.pos}},e.prototype.readEscapedChar=function(e){var t=this.input.charCodeAt(++this.state.pos);switch(++this.state.pos,t){case 110:return"\n";case 114:return"\r";case 120:return String.fromCharCode(this.readHexChar(2));case 117:return b(this.readCodePoint());case 116:return"\t";case 98:return"\b";case 118:return"\v";case 102:return"\f";case 13:10===this.input.charCodeAt(this.state.pos)&&++this.state.pos;case 10:return this.state.lineStart=this.state.pos,++this.state.curLine,"";default:if(t>=48&&t<=55){var n=this.input.substr(this.state.pos-1,3).match(/^[0-7]+/)[0],r=parseInt(n,8);return r>255&&(n=n.slice(0,-1),r=parseInt(n,8)),r>0&&(this.state.containsOctal||(this.state.containsOctal=!0,this.state.octalPosition=this.state.pos-2),(this.state.strict||e)&&this.raise(this.state.pos-2,"Octal literal in strict mode")),this.state.pos+=n.length-1,String.fromCharCode(r)}return String.fromCharCode(t)}},e.prototype.readHexChar=function(e){var t=this.state.pos,n=this.readInt(16,e);return null===n&&this.raise(t,"Bad character escape sequence"),n},e.prototype.readWord1=function(){this.state.containsEsc=!1;for(var e="",t=!0,n=this.state.pos;this.state.pos=0)return this.loadAllPlugins(),{"*":!0};var t={};e.indexOf("flow")>=0&&(e=e.filter(function(e){return"flow"!==e}),e.push("flow"));for(var n=e,r=Array.isArray(n),i=0,n=r?n:n[Symbol.iterator]();;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}var s=a;if(!t[s]){t[s]=!0;var o=H[s];o&&o(this)}}return t},t.prototype.parse=function(){var e=this.startNode(),t=this.startNode();return this.nextToken(),this.parseTopLevel(e,t)},t}(Y),Q="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Z=$.prototype;Z.addExtra=function(e,t,n){if(e){(e.extra=e.extra||{})[t]=n}},Z.isRelational=function(e){return this.match(M.relational)&&this.state.value===e},Z.expectRelational=function(e){this.isRelational(e)?this.next():this.unexpected(null,M.relational)},Z.isContextual=function(e){return this.match(M.name)&&this.state.value===e},Z.eatContextual=function(e){return this.state.value===e&&this.eat(M.name)},Z.expectContextual=function(e,t){this.eatContextual(e)||this.unexpected(null,t)},Z.canInsertSemicolon=function(){return this.match(M.eof)||this.match(M.braceR)||U.test(this.input.slice(this.state.lastTokEnd,this.state.start))},Z.isLineTerminator=function(){return this.eat(M.semi)||this.canInsertSemicolon()},Z.semicolon=function(){this.isLineTerminator()||this.unexpected(null,M.semi)},Z.expect=function(e,t){return this.eat(e)||this.unexpected(t,e)},Z.unexpected=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"Unexpected token";t&&"object"===(void 0===t?"undefined":Q(t))&&t.label&&(t="Unexpected token, expected "+t.label),this.raise(null!=e?e:this.state.start,t)};var ee=$.prototype;ee.parseTopLevel=function(e,t){return t.sourceType=this.options.sourceType,this.parseBlockBody(t,!0,!0,M.eof),e.program=this.finishNode(t,"Program"),e.comments=this.state.comments,e.tokens=this.state.tokens,this.finishNode(e,"File")};var te={kind:"loop"},ne={kind:"switch"};ee.stmtToDirective=function(e){var t=e.expression,n=this.startNodeAt(t.start,t.loc.start),r=this.startNodeAt(e.start,e.loc.start),i=this.input.slice(t.start,t.end),a=n.value=i.slice(1,-1);return this.addExtra(n,"raw",i),this.addExtra(n,"rawValue",a),r.value=this.finishNodeAt(n,"DirectiveLiteral",t.end,t.loc.end),this.finishNodeAt(r,"Directive",e.end,e.loc.end)},ee.parseStatement=function(e,t){this.match(M.at)&&this.parseDecorators(!0);var n=this.state.type,r=this.startNode();switch(n){case M._break:case M._continue:return this.parseBreakContinueStatement(r,n.keyword);case M._debugger:return this.parseDebuggerStatement(r);case M._do:return this.parseDoStatement(r);case M._for:return this.parseForStatement(r);case M._function:return e||this.unexpected(),this.parseFunctionStatement(r);case M._class:return e||this.unexpected(),this.takeDecorators(r),this.parseClass(r,!0);case M._if:return this.parseIfStatement(r);case M._return:return this.parseReturnStatement(r);case M._switch:return this.parseSwitchStatement(r);case M._throw:return this.parseThrowStatement(r);case M._try:return this.parseTryStatement(r);case M._let:case M._const:e||this.unexpected();case M._var:return this.parseVarStatement(r,n);case M._while:return this.parseWhileStatement(r);case M._with:return this.parseWithStatement(r);case M.braceL:return this.parseBlock();case M.semi:return this.parseEmptyStatement(r);case M._export:case M._import:if(this.hasPlugin("dynamicImport")&&this.lookahead().type===M.parenL)break;return this.options.allowImportExportEverywhere||(t||this.raise(this.state.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.state.start,"'import' and 'export' may appear only with 'sourceType: module'")),n===M._import?this.parseImport(r):this.parseExport(r);case M.name:if("async"===this.state.value){var i=this.state.clone();if(this.next(),this.match(M._function)&&!this.canInsertSemicolon())return this.expect(M._function),this.parseFunction(r,!0,!1,!0);this.state=i}}var a=this.state.value,s=this.parseExpression();return n===M.name&&"Identifier"===s.type&&this.eat(M.colon)?this.parseLabeledStatement(r,a,s):this.parseExpressionStatement(r,s)},ee.takeDecorators=function(e){this.state.decorators.length&&(e.decorators=this.state.decorators,this.state.decorators=[])},ee.parseDecorators=function(e){for(;this.match(M.at);)this.state.decorators.push(this.parseDecorator());e&&this.match(M._export)||this.match(M._class)||this.raise(this.state.start,"Leading decorators must be attached to a class declaration")},ee.parseDecorator=function(){this.hasPlugin("decorators")||this.unexpected();var e=this.startNode();return this.next(),e.expression=this.parseMaybeAssign(),this.finishNode(e,"Decorator")},ee.parseBreakContinueStatement=function(e,t){var n="break"===t;this.next(),this.isLineTerminator()?e.label=null:this.match(M.name)?(e.label=this.parseIdentifier(),this.semicolon()):this.unexpected();var r=void 0;for(r=0;r=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}s.name===t&&this.raise(n.start,"Label '"+t+"' is already declared")}for(var o=this.state.type.isLoop?"loop":this.match(M._switch)?"switch":null,u=this.state.labels.length-1;u>=0;u--){var l=this.state.labels[u];if(l.statementStart!==e.start)break;l.statementStart=this.state.start,l.kind=o}return this.state.labels.push({name:t,kind:o,statementStart:this.state.start}),e.body=this.parseStatement(!0),this.state.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},ee.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},ee.parseBlock=function(e){var t=this.startNode();return this.expect(M.braceL),this.parseBlockBody(t,e,!1,M.braceR),this.finishNode(t,"BlockStatement")},ee.parseBlockBody=function(e,t,n,r){e.body=[],e.directives=[];for(var i=!1,a=void 0,s=void 0;!this.eat(r);){i||!this.state.containsOctal||s||(s=this.state.octalPosition);var o=this.parseStatement(!0,n);if(!t||i||"ExpressionStatement"!==o.type||"StringLiteral"!==o.expression.type||o.expression.extra.parenthesized)i=!0,e.body.push(o);else{var u=this.stmtToDirective(o);e.directives.push(u),void 0===a&&"use strict"===u.value.value&&(a=this.state.strict,this.setStrict(!0),s&&this.raise(s,"Octal literal in strict mode"))}}a===!1&&this.setStrict(!1)},ee.parseFor=function(e,t){return e.init=t,this.expect(M.semi),e.test=this.match(M.semi)?null:this.parseExpression(),this.expect(M.semi),e.update=this.match(M.parenR)?null:this.parseExpression(),this.expect(M.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,"ForStatement")},ee.parseForIn=function(e,t,n){var r=void 0;return n?(this.eatContextual("of"),r="ForAwaitStatement"):(r=this.match(M._in)?"ForInStatement":"ForOfStatement",this.next()),e.left=t,e.right=this.parseExpression(),this.expect(M.parenR),e.body=this.parseStatement(!1),this.state.labels.pop(),this.finishNode(e,r)},ee.parseVar=function(e,t,n){for(e.declarations=[],e.kind=n.keyword;;){var r=this.startNode();if(this.parseVarHead(r),this.eat(M.eq)?r.init=this.parseMaybeAssign(t):n!==M._const||this.match(M._in)||this.isContextual("of")?"Identifier"===r.id.type||t&&(this.match(M._in)||this.isContextual("of"))?r.init=null:this.raise(this.state.lastTokEnd,"Complex binding patterns require an initialization value"):this.unexpected(),e.declarations.push(this.finishNode(r,"VariableDeclarator")),!this.eat(M.comma))break}return e},ee.parseVarHead=function(e){e.id=this.parseBindingAtom(),this.checkLVal(e.id,!0,void 0,"variable declaration")},ee.parseFunction=function(e,t,n,r,i){var a=this.state.inMethod;return this.state.inMethod=!1,this.initFunction(e,r),this.match(M.star)&&(e.async&&!this.hasPlugin("asyncGenerators")?this.unexpected():(e.generator=!0,this.next())),!t||i||this.match(M.name)||this.match(M._yield)||this.unexpected(),(this.match(M.name)||this.match(M._yield))&&(e.id=this.parseBindingIdentifier()),this.parseFunctionParams(e),this.parseFunctionBody(e,n),this.state.inMethod=a,this.finishNode(e,t?"FunctionDeclaration":"FunctionExpression")},ee.parseFunctionParams=function(e){this.expect(M.parenL),e.params=this.parseBindingList(M.parenR)},ee.parseClass=function(e,t,n){return this.next(),this.parseClassId(e,t,n),this.parseClassSuper(e),this.parseClassBody(e),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},ee.isClassProperty=function(){return this.match(M.eq)||this.isLineTerminator()},ee.isClassMutatorStarter=function(){return!1},ee.parseClassBody=function(e){var t=this.state.strict;this.state.strict=!0;var n=!1,r=!1,i=[],a=this.startNode();for(a.body=[],this.expect(M.braceL);!this.eat(M.braceR);)if(!this.eat(M.semi))if(this.match(M.at))i.push(this.parseDecorator());else{var s=this.startNode();i.length&&(s.decorators=i,i=[]);var o=!1,u=this.match(M.name)&&"static"===this.state.value,l=this.eat(M.star),c=!1,p=!1;if(this.parsePropertyName(s),s.static=u&&!this.match(M.parenL),s.static&&(l=this.eat(M.star),this.parsePropertyName(s)),!l){if(this.isClassProperty()){a.body.push(this.parseClassProperty(s));continue}"Identifier"===s.key.type&&!s.computed&&this.hasPlugin("classConstructorCall")&&"call"===s.key.name&&this.match(M.name)&&"constructor"===this.state.value&&(o=!0,this.parsePropertyName(s))}var f=!this.match(M.parenL)&&!s.computed&&"Identifier"===s.key.type&&"async"===s.key.name;if(f&&(this.hasPlugin("asyncGenerators")&&this.eat(M.star)&&(l=!0),p=!0,this.parsePropertyName(s)),s.kind="method",!s.computed){var h=s.key;p||l||this.isClassMutatorStarter()||"Identifier"!==h.type||this.match(M.parenL)||"get"!==h.name&&"set"!==h.name||(c=!0,s.kind=h.name,h=this.parsePropertyName(s));var d=!o&&!s.static&&("Identifier"===h.type&&"constructor"===h.name||"StringLiteral"===h.type&&"constructor"===h.value);d&&(r&&this.raise(h.start,"Duplicate constructor in the same class"),c&&this.raise(h.start,"Constructor can't have get/set modifier"),l&&this.raise(h.start,"Constructor can't be a generator"),p&&this.raise(h.start,"Constructor can't be an async function"),s.kind="constructor",r=!0);var y=s.static&&("Identifier"===h.type&&"prototype"===h.name||"StringLiteral"===h.type&&"prototype"===h.value);y&&this.raise(h.start,"Classes may not have static property named prototype")}if(o&&(n&&this.raise(s.start,"Duplicate constructor call in the same class"),s.kind="constructorCall",n=!0),"constructor"!==s.kind&&"constructorCall"!==s.kind||!s.decorators||this.raise(s.start,"You can't attach decorators to a class constructor"),this.parseClassMethod(a,s,l,p),c){var m="get"===s.kind?0:1;if(s.params.length!==m){var b=s.start;"get"===s.kind?this.raise(b,"getter should have no params"):this.raise(b,"setter should have exactly one param")}}}i.length&&this.raise(this.state.start,"You have trailing decorators with no method"),e.body=this.finishNode(a,"ClassBody"),this.state.strict=t},ee.parseClassProperty=function(e){return this.match(M.eq)?(this.hasPlugin("classProperties")||this.unexpected(),this.next(),e.value=this.parseMaybeAssign()):e.value=null,this.semicolon(),this.finishNode(e,"ClassProperty")},ee.parseClassMethod=function(e,t,n,r){this.parseMethod(t,n,r),e.body.push(this.finishNode(t,"ClassMethod"))},ee.parseClassId=function(e,t,n){this.match(M.name)?e.id=this.parseIdentifier():n||!t?e.id=null:this.unexpected()},ee.parseClassSuper=function(e){e.superClass=this.eat(M._extends)?this.parseExprSubscripts():null},ee.parseExport=function(e){if(this.next(),this.match(M.star)){var t=this.startNode();if(this.next(),!this.hasPlugin("exportExtensions")||!this.eatContextual("as"))return this.parseExportFrom(e,!0),this.finishNode(e,"ExportAllDeclaration");t.exported=this.parseIdentifier(),e.specifiers=[this.finishNode(t,"ExportNamespaceSpecifier")],this.parseExportSpecifiersMaybe(e),this.parseExportFrom(e,!0)}else if(this.hasPlugin("exportExtensions")&&this.isExportDefaultSpecifier()){var n=this.startNode();if(n.exported=this.parseIdentifier(!0),e.specifiers=[this.finishNode(n,"ExportDefaultSpecifier")],this.match(M.comma)&&this.lookahead().type===M.star){this.expect(M.comma);var r=this.startNode();this.expect(M.star),this.expectContextual("as"),r.exported=this.parseIdentifier(),e.specifiers.push(this.finishNode(r,"ExportNamespaceSpecifier"))}else this.parseExportSpecifiersMaybe(e);this.parseExportFrom(e,!0)}else{if(this.eat(M._default)){var i=this.startNode(),a=!1;return this.eat(M._function)?i=this.parseFunction(i,!0,!1,!1,!0):this.match(M._class)?i=this.parseClass(i,!0,!0):(a=!0,i=this.parseMaybeAssign()),e.declaration=i,a&&this.semicolon(),this.checkExport(e,!0,!0),this.finishNode(e,"ExportDefaultDeclaration")}this.state.type.keyword||this.shouldParseExportDeclaration()?(e.specifiers=[],e.source=null,e.declaration=this.parseExportDeclaration(e)):(e.declaration=null,e.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(e))}return this.checkExport(e,!0),this.finishNode(e,"ExportNamedDeclaration")},ee.parseExportDeclaration=function(){return this.parseStatement(!0)},ee.isExportDefaultSpecifier=function(){if(this.match(M.name))return"type"!==this.state.value&&"async"!==this.state.value&&"interface"!==this.state.value;if(!this.match(M._default))return!1;var e=this.lookahead();return e.type===M.comma||e.type===M.name&&"from"===e.value},ee.parseExportSpecifiersMaybe=function(e){this.eat(M.comma)&&(e.specifiers=e.specifiers.concat(this.parseExportSpecifiers()))},ee.parseExportFrom=function(e,t){this.eatContextual("from")?(e.source=this.match(M.string)?this.parseExprAtom():this.unexpected(),this.checkExport(e)):t?this.unexpected():e.source=null,this.semicolon()},ee.shouldParseExportDeclaration=function(){return this.isContextual("async")},ee.checkExport=function(e,t,n){if(t)if(n)this.checkDuplicateExports(e,"default");else if(e.specifiers&&e.specifiers.length)for(var r=e.specifiers,i=Array.isArray(r),a=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;this.checkDuplicateExports(o,o.exported.name)}else if(e.declaration)if("FunctionDeclaration"===e.declaration.type||"ClassDeclaration"===e.declaration.type)this.checkDuplicateExports(e,e.declaration.id.name);else if("VariableDeclaration"===e.declaration.type)for(var u=e.declaration.declarations,l=Array.isArray(u),c=0,u=l?u:u[Symbol.iterator]();;){var p;if(l){if(c>=u.length)break;p=u[c++]}else{if(c=u.next(),c.done)break;p=c.value}var f=p;this.checkDeclaration(f.id)}if(this.state.decorators.length){var h=e.declaration&&("ClassDeclaration"===e.declaration.type||"ClassExpression"===e.declaration.type);e.declaration&&h||this.raise(e.start,"You can only use decorators on an export when exporting a class"),this.takeDecorators(e.declaration)}},ee.checkDeclaration=function(e){if("ObjectPattern"===e.type)for(var t=e.properties,n=Array.isArray(t),r=0,t=n?t:t[Symbol.iterator]();;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i;this.checkDeclaration(a)}else if("ArrayPattern"===e.type)for(var s=e.elements,o=Array.isArray(s),u=0,s=o?s:s[Symbol.iterator]();;){var l;if(o){if(u>=s.length)break;l=s[u++]}else{if(u=s.next(),u.done)break;l=u.value}var c=l;c&&this.checkDeclaration(c)}else"ObjectProperty"===e.type?this.checkDeclaration(e.value):"RestElement"===e.type||"RestProperty"===e.type?this.checkDeclaration(e.argument):"Identifier"===e.type&&this.checkDuplicateExports(e,e.name)},ee.checkDuplicateExports=function(e,t){this.state.exportedIdentifiers.indexOf(t)>-1&&this.raiseDuplicateExportError(e,t),this.state.exportedIdentifiers.push(t)},ee.raiseDuplicateExportError=function(e,t){this.raise(e.start,"default"===t?"Only one default export allowed per module.":"`"+t+"` has already been exported. Exported identifiers must be unique.")},ee.parseExportSpecifiers=function(){var e=[],t=!0,n=void 0;for(this.expect(M.braceL);!this.eat(M.braceR);){if(t)t=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;var r=this.match(M._default);r&&!n&&(n=!0);var i=this.startNode();i.local=this.parseIdentifier(r),i.exported=this.eatContextual("as")?this.parseIdentifier(!0):i.local.__clone(),e.push(this.finishNode(i,"ExportSpecifier"))}return n&&!this.isContextual("from")&&this.unexpected(),e},ee.parseImport=function(e){return this.next(),this.match(M.string)?(e.specifiers=[],e.source=this.parseExprAtom()):(e.specifiers=[],this.parseImportSpecifiers(e),this.expectContextual("from"),e.source=this.match(M.string)?this.parseExprAtom():this.unexpected()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},ee.parseImportSpecifiers=function(e){var t=!0;if(this.match(M.name)){var n=this.state.start,r=this.state.startLoc;if(e.specifiers.push(this.parseImportSpecifierDefault(this.parseIdentifier(),n,r)),!this.eat(M.comma))return}if(this.match(M.star)){var i=this.startNode();return this.next(),this.expectContextual("as"),i.local=this.parseIdentifier(),this.checkLVal(i.local,!0,void 0,"import namespace specifier"),void e.specifiers.push(this.finishNode(i,"ImportNamespaceSpecifier"))}for(this.expect(M.braceL);!this.eat(M.braceR);){if(t)t=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;var a=this.startNode();a.imported=this.parseIdentifier(!0),a.local=this.eatContextual("as")?this.parseIdentifier():a.imported.__clone(),this.checkLVal(a.local,!0,void 0,"import specifier"),e.specifiers.push(this.finishNode(a,"ImportSpecifier"))}},ee.parseImportSpecifierDefault=function(e,t,n){var r=this.startNodeAt(t,n);return r.local=e,this.checkLVal(r.local,!0,void 0,"default import specifier"),this.finishNode(r,"ImportDefaultSpecifier")};var ie=$.prototype;ie.toAssignable=function(e,t,n){if(e)switch(e.type){case"Identifier":case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":break;case"ObjectExpression":e.type="ObjectPattern";for(var r=e.properties,i=Array.isArray(r),a=0,r=i?r:r[Symbol.iterator]();;){var s;if(i){if(a>=r.length)break;s=r[a++]}else{if(a=r.next(),a.done)break;s=a.value}var o=s;"ObjectMethod"===o.type?"get"===o.kind||"set"===o.kind?this.raise(o.key.start,"Object pattern can't contain getter or setter"):this.raise(o.key.start,"Object pattern can't contain methods"):this.toAssignable(o,t,"object destructuring pattern")}break;case"ObjectProperty":this.toAssignable(e.value,t,n);break;case"SpreadProperty":e.type="RestProperty";break;case"ArrayExpression":e.type="ArrayPattern",this.toAssignableList(e.elements,t,n);break;case"AssignmentExpression":"="===e.operator?(e.type="AssignmentPattern",delete e.operator):this.raise(e.left.end,"Only '=' operator can be used for specifying default value.");break;case"MemberExpression":if(!t)break;default:var u="Invalid left-hand side"+(n?" in "+n:"expression");this.raise(e.start,u)}return e},ie.toAssignableList=function(e,t,n){var r=e.length;if(r){var i=e[r-1];if(i&&"RestElement"===i.type)--r;else if(i&&"SpreadElement"===i.type){i.type="RestElement";var a=i.argument;this.toAssignable(a,t,n),"Identifier"!==a.type&&"MemberExpression"!==a.type&&"ArrayPattern"!==a.type&&this.unexpected(a.start),--r}}for(var s=0;s=a.length)break;u=a[o++]}else{if(o=a.next(),o.done)break;u=o.value}var l=u;"ObjectProperty"===l.type&&(l=l.value),this.checkLVal(l,t,n,"object destructuring pattern")}break;case"ArrayPattern":for(var c=e.elements,p=Array.isArray(c),f=0,c=p?c:c[Symbol.iterator]();;){var h;if(p){if(f>=c.length)break;h=c[f++]}else{if(f=c.next(),f.done)break;h=f.value}var d=h;d&&this.checkLVal(d,t,n,"array destructuring pattern")}break;case"AssignmentPattern":this.checkLVal(e.left,t,n,"assignment pattern");break;case"RestProperty":this.checkLVal(e.argument,t,n,"rest property");break;case"RestElement":this.checkLVal(e.argument,t,n,"rest element");break;default:
+var y=(t?"Binding invalid":"Invalid")+" left-hand side"+(r?" in "+r:"expression");this.raise(e.start,y)}};var ae=$.prototype;ae.checkPropClash=function(e,t){if(!e.computed){var n=e.key,r=void 0;switch(n.type){case"Identifier":r=n.name;break;case"StringLiteral":case"NumericLiteral":r=String(n.value);break;default:return}"__proto__"!==r||e.kind||(t.proto&&this.raise(n.start,"Redefinition of __proto__ property"),t.proto=!0)}},ae.parseExpression=function(e,t){var n=this.state.start,r=this.state.startLoc,i=this.parseMaybeAssign(e,t);if(this.match(M.comma)){var a=this.startNodeAt(n,r);for(a.expressions=[i];this.eat(M.comma);)a.expressions.push(this.parseMaybeAssign(e,t));return this.toReferencedList(a.expressions),this.finishNode(a,"SequenceExpression")}return i},ae.parseMaybeAssign=function(e,t,n,r){var i=this.state.start,a=this.state.startLoc;if(this.match(M._yield)&&this.state.inGenerator){var s=this.parseYield();return n&&(s=n.call(this,s,i,a)),s}var o=void 0;t?o=!1:(t={start:0},o=!0),(this.match(M.parenL)||this.match(M.name))&&(this.state.potentialArrowAt=this.state.start);var u=this.parseMaybeConditional(e,t,r);if(n&&(u=n.call(this,u,i,a)),this.state.type.isAssign){var l=this.startNodeAt(i,a);if(l.operator=this.state.value,l.left=this.match(M.eq)?this.toAssignable(u,void 0,"assignment expression"):u,t.start=0,this.checkLVal(u,void 0,void 0,"assignment expression"),u.extra&&u.extra.parenthesized){var c=void 0;"ObjectPattern"===u.type?c="`({a}) = 0` use `({a} = 0)`":"ArrayPattern"===u.type&&(c="`([a]) = 0` use `([a] = 0)`"),c&&this.raise(u.start,"You're trying to assign to a parenthesized expression, eg. instead of "+c)}return this.next(),l.right=this.parseMaybeAssign(e),this.finishNode(l,"AssignmentExpression")}return o&&t.start&&this.unexpected(t.start),u},ae.parseMaybeConditional=function(e,t,n){var r=this.state.start,i=this.state.startLoc,a=this.parseExprOps(e,t);return t&&t.start?a:this.parseConditional(a,e,r,i,n)},ae.parseConditional=function(e,t,n,r){if(this.eat(M.question)){var i=this.startNodeAt(n,r);return i.test=e,i.consequent=this.parseMaybeAssign(),this.expect(M.colon),i.alternate=this.parseMaybeAssign(t),this.finishNode(i,"ConditionalExpression")}return e},ae.parseExprOps=function(e,t){var n=this.state.start,r=this.state.startLoc,i=this.parseMaybeUnary(t);return t&&t.start?i:this.parseExprOp(i,n,r,-1,e)},ae.parseExprOp=function(e,t,n,r,i){var a=this.state.type.binop;if(!(null==a||i&&this.match(M._in))&&a>r){var s=this.startNodeAt(t,n);s.left=e,s.operator=this.state.value,"**"!==s.operator||"UnaryExpression"!==e.type||!e.extra||e.extra.parenthesizedArgument||e.extra.parenthesized||this.raise(e.argument.start,"Illegal expression. Wrap left hand side or entire exponentiation in parentheses.");var o=this.state.type;this.next();var u=this.state.start,l=this.state.startLoc;return s.right=this.parseExprOp(this.parseMaybeUnary(),u,l,o.rightAssociative?a-1:a,i),this.finishNode(s,o===M.logicalOR||o===M.logicalAND?"LogicalExpression":"BinaryExpression"),this.parseExprOp(s,t,n,r,i)}return e},ae.parseMaybeUnary=function(e){if(this.state.type.prefix){var t=this.startNode(),n=this.match(M.incDec);t.operator=this.state.value,t.prefix=!0,this.next();var r=this.state.type;return t.argument=this.parseMaybeUnary(),this.addExtra(t,"parenthesizedArgument",!(r!==M.parenL||t.argument.extra&&t.argument.extra.parenthesized)),e&&e.start&&this.unexpected(e.start),n?this.checkLVal(t.argument,void 0,void 0,"prefix operation"):this.state.strict&&"delete"===t.operator&&"Identifier"===t.argument.type&&this.raise(t.start,"Deleting local variable in strict mode"),this.finishNode(t,n?"UpdateExpression":"UnaryExpression")}var i=this.state.start,a=this.state.startLoc,s=this.parseExprSubscripts(e);if(e&&e.start)return s;for(;this.state.type.postfix&&!this.canInsertSemicolon();){var o=this.startNodeAt(i,a);o.operator=this.state.value,o.prefix=!1,o.argument=s,this.checkLVal(s,void 0,void 0,"postfix operation"),this.next(),s=this.finishNode(o,"UpdateExpression")}return s},ae.parseExprSubscripts=function(e){var t=this.state.start,n=this.state.startLoc,r=this.state.potentialArrowAt,i=this.parseExprAtom(e);return"ArrowFunctionExpression"===i.type&&i.start===r?i:e&&e.start?i:this.parseSubscripts(i,t,n)},ae.parseSubscripts=function(e,t,n,r){for(;;){if(!r&&this.eat(M.doubleColon)){var i=this.startNodeAt(t,n);return i.object=e,i.callee=this.parseNoCallExpr(),this.parseSubscripts(this.finishNode(i,"BindExpression"),t,n,r)}if(this.eat(M.dot)){var a=this.startNodeAt(t,n);a.object=e,a.property=this.parseIdentifier(!0),a.computed=!1,e=this.finishNode(a,"MemberExpression")}else if(this.eat(M.bracketL)){var s=this.startNodeAt(t,n);s.object=e,s.property=this.parseExpression(),s.computed=!0,this.expect(M.bracketR),e=this.finishNode(s,"MemberExpression")}else if(!r&&this.match(M.parenL)){var o=this.state.potentialArrowAt===e.start&&"Identifier"===e.type&&"async"===e.name&&!this.canInsertSemicolon();this.next();var u=this.startNodeAt(t,n);if(u.callee=e,u.arguments=this.parseCallExpressionArguments(M.parenR,o),"Import"===u.callee.type&&1!==u.arguments.length&&this.raise(u.start,"import() requires exactly one argument"),e=this.finishNode(u,"CallExpression"),o&&this.shouldParseAsyncArrow())return this.parseAsyncArrowFromCallExpression(this.startNodeAt(t,n),u);this.toReferencedList(u.arguments)}else{if(!this.match(M.backQuote))return e;var l=this.startNodeAt(t,n);l.tag=e,l.quasi=this.parseTemplate(),e=this.finishNode(l,"TaggedTemplateExpression")}}},ae.parseCallExpressionArguments=function(e,t){for(var n=void 0,r=[],i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(M.comma),this.eat(e))break;this.match(M.parenL)&&!n&&(n=this.state.start),r.push(this.parseExprListItem(void 0,t?{start:0}:void 0))}return t&&n&&this.shouldParseAsyncArrow()&&this.unexpected(),r},ae.shouldParseAsyncArrow=function(){return this.match(M.arrow)},ae.parseAsyncArrowFromCallExpression=function(e,t){return this.expect(M.arrow),this.parseArrowExpression(e,t.arguments,!0)},ae.parseNoCallExpr=function(){var e=this.state.start,t=this.state.startLoc;return this.parseSubscripts(this.parseExprAtom(),e,t,!0)},ae.parseExprAtom=function(e){var t=void 0,n=this.state.potentialArrowAt===this.state.start;switch(this.state.type){case M._super:return this.state.inMethod||this.options.allowSuperOutsideMethod||this.raise(this.state.start,"'super' outside of function or class"),t=this.startNode(),this.next(),this.match(M.parenL)||this.match(M.bracketL)||this.match(M.dot)||this.unexpected(),this.match(M.parenL)&&"constructor"!==this.state.inMethod&&!this.options.allowSuperOutsideMethod&&this.raise(t.start,"super() outside of class constructor"),this.finishNode(t,"Super");case M._import:return this.hasPlugin("dynamicImport")||this.unexpected(),t=this.startNode(),this.next(),this.match(M.parenL)||this.unexpected(null,M.parenL),this.finishNode(t,"Import");case M._this:return t=this.startNode(),this.next(),this.finishNode(t,"ThisExpression");case M._yield:this.state.inGenerator&&this.unexpected();case M.name:t=this.startNode();var r="await"===this.state.value&&this.state.inAsync,i=this.shouldAllowYieldIdentifier(),a=this.parseIdentifier(r||i);if("await"===a.name){if(this.state.inAsync||this.inModule)return this.parseAwait(t)}else{if("async"===a.name&&this.match(M._function)&&!this.canInsertSemicolon())return this.next(),this.parseFunction(t,!1,!1,!0);if(n&&"async"===a.name&&this.match(M.name)){var s=[this.parseIdentifier()];return this.expect(M.arrow),this.parseArrowExpression(t,s,!0)}}return n&&!this.canInsertSemicolon()&&this.eat(M.arrow)?this.parseArrowExpression(t,[a]):a;case M._do:if(this.hasPlugin("doExpressions")){var o=this.startNode();this.next();var u=this.state.inFunction,l=this.state.labels;return this.state.labels=[],this.state.inFunction=!1,o.body=this.parseBlock(!1,!0),this.state.inFunction=u,this.state.labels=l,this.finishNode(o,"DoExpression")}case M.regexp:var c=this.state.value;return t=this.parseLiteral(c.value,"RegExpLiteral"),t.pattern=c.pattern,t.flags=c.flags,t;case M.num:return this.parseLiteral(this.state.value,"NumericLiteral");case M.string:return this.parseLiteral(this.state.value,"StringLiteral");case M._null:return t=this.startNode(),this.next(),this.finishNode(t,"NullLiteral");case M._true:case M._false:return t=this.startNode(),t.value=this.match(M._true),this.next(),this.finishNode(t,"BooleanLiteral");case M.parenL:return this.parseParenAndDistinguishExpression(null,null,n);case M.bracketL:return t=this.startNode(),this.next(),t.elements=this.parseExprList(M.bracketR,!0,e),this.toReferencedList(t.elements),this.finishNode(t,"ArrayExpression");case M.braceL:return this.parseObj(!1,e);case M._function:return this.parseFunctionExpression();case M.at:this.parseDecorators();case M._class:return t=this.startNode(),this.takeDecorators(t),this.parseClass(t,!1);case M._new:return this.parseNew();case M.backQuote:return this.parseTemplate();case M.doubleColon:t=this.startNode(),this.next(),t.object=null;var p=t.callee=this.parseNoCallExpr();if("MemberExpression"===p.type)return this.finishNode(t,"BindExpression");this.raise(p.start,"Binding should be performed on object property.");default:this.unexpected()}},ae.parseFunctionExpression=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.state.inGenerator&&this.eat(M.dot)&&this.hasPlugin("functionSent")?this.parseMetaProperty(e,t,"sent"):this.parseFunction(e,!1)},ae.parseMetaProperty=function(e,t,n){return e.meta=t,e.property=this.parseIdentifier(!0),e.property.name!==n&&this.raise(e.property.start,"The only valid meta property for new is "+t.name+"."+n),this.finishNode(e,"MetaProperty")},ae.parseLiteral=function(e,t){var n=this.startNode();return this.addExtra(n,"rawValue",e),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),n.value=e,this.next(),this.finishNode(n,t)},ae.parseParenExpression=function(){this.expect(M.parenL);var e=this.parseExpression();return this.expect(M.parenR),e},ae.parseParenAndDistinguishExpression=function(e,t,n){e=e||this.state.start,t=t||this.state.startLoc;var r=void 0;this.expect(M.parenL);for(var i=this.state.start,a=this.state.startLoc,s=[],o=!0,u={start:0},l=void 0,c=void 0,p={start:0};!this.match(M.parenR);){if(o)o=!1;else if(this.expect(M.comma,p.start||null),this.match(M.parenR)){c=this.state.start;break}if(this.match(M.ellipsis)){var f=this.state.start,h=this.state.startLoc;l=this.state.start,s.push(this.parseParenItem(this.parseRest(),h,f));break}s.push(this.parseMaybeAssign(!1,u,this.parseParenItem,p))}var d=this.state.start,y=this.state.startLoc;this.expect(M.parenR);var m=this.startNodeAt(e,t);if(n&&this.shouldParseArrow()&&(m=this.parseArrow(m))){for(var b=s,g=Array.isArray(b),v=0,b=g?b:b[Symbol.iterator]();;){var x;if(g){if(v>=b.length)break;x=b[v++]}else{if(v=b.next(),v.done)break;x=v.value}var _=x;_.extra&&_.extra.parenthesized&&this.unexpected(_.extra.parenStart)}return this.parseArrowExpression(m,s)}return s.length||this.unexpected(this.state.lastTokStart),c&&this.unexpected(c),l&&this.unexpected(l),u.start&&this.unexpected(u.start),p.start&&this.unexpected(p.start),s.length>1?(r=this.startNodeAt(i,a),r.expressions=s,this.toReferencedList(r.expressions),this.finishNodeAt(r,"SequenceExpression",d,y)):r=s[0],this.addExtra(r,"parenthesized",!0),this.addExtra(r,"parenStart",e),r},ae.shouldParseArrow=function(){return!this.canInsertSemicolon()},ae.parseArrow=function(e){if(this.eat(M.arrow))return e},ae.parseParenItem=function(e){return e},ae.parseNew=function(){var e=this.startNode(),t=this.parseIdentifier(!0);return this.eat(M.dot)?this.parseMetaProperty(e,t,"target"):(e.callee=this.parseNoCallExpr(),this.eat(M.parenL)?(e.arguments=this.parseExprList(M.parenR),this.toReferencedList(e.arguments)):e.arguments=[],this.finishNode(e,"NewExpression"))},ae.parseTemplateElement=function(){var e=this.startNode();return e.value={raw:this.input.slice(this.state.start,this.state.end).replace(/\r\n?/g,"\n"),cooked:this.state.value},this.next(),e.tail=this.match(M.backQuote),this.finishNode(e,"TemplateElement")},ae.parseTemplate=function(){var e=this.startNode();this.next(),e.expressions=[];var t=this.parseTemplateElement();for(e.quasis=[t];!t.tail;)this.expect(M.dollarBraceL),e.expressions.push(this.parseExpression()),this.expect(M.braceR),e.quasis.push(t=this.parseTemplateElement());return this.next(),this.finishNode(e,"TemplateLiteral")},ae.parseObj=function(e,t){var n=[],r=Object.create(null),i=!0,a=this.startNode();a.properties=[],this.next();for(var s=null;!this.eat(M.braceR);){if(i)i=!1;else if(this.expect(M.comma),this.eat(M.braceR))break;for(;this.match(M.at);)n.push(this.parseDecorator());var o=this.startNode(),u=!1,l=!1,c=void 0,p=void 0;if(n.length&&(o.decorators=n,n=[]),this.hasPlugin("objectRestSpread")&&this.match(M.ellipsis)){if(o=this.parseSpread(),o.type=e?"RestProperty":"SpreadProperty",a.properties.push(o),!e)continue;var f=this.state.start;if(null===s){if(this.eat(M.braceR))break;if(this.match(M.comma)&&this.lookahead().type===M.braceR)continue;s=f;continue}this.unexpected(s,"Cannot have multiple rest elements when destructuring")}if(o.method=!1,o.shorthand=!1,(e||t)&&(c=this.state.start,p=this.state.startLoc),e||(u=this.eat(M.star)),!e&&this.isContextual("async")){u&&this.unexpected();var h=this.parseIdentifier();this.match(M.colon)||this.match(M.parenL)||this.match(M.braceR)||this.match(M.eq)||this.match(M.comma)?o.key=h:(l=!0,this.hasPlugin("asyncGenerators")&&(u=this.eat(M.star)),this.parsePropertyName(o))}else this.parsePropertyName(o);this.parseObjPropValue(o,c,p,u,l,e,t),this.checkPropClash(o,r),o.shorthand&&this.addExtra(o,"shorthand",!0),a.properties.push(o)}return null!==s&&this.unexpected(s,"The rest element has to be the last element when destructuring"),n.length&&this.raise(this.state.start,"You have trailing decorators with no property"),this.finishNode(a,e?"ObjectPattern":"ObjectExpression")},ae.parseObjPropValue=function(e,t,n,r,i,a,s){if(i||r||this.match(M.parenL))return a&&this.unexpected(),e.kind="method",e.method=!0,this.parseMethod(e,r,i),this.finishNode(e,"ObjectMethod");if(this.eat(M.colon))return e.value=a?this.parseMaybeDefault(this.state.start,this.state.startLoc):this.parseMaybeAssign(!1,s),this.finishNode(e,"ObjectProperty");if(!(a||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.match(M.comma)||this.match(M.braceR))){(r||i)&&this.unexpected(),e.kind=e.key.name,this.parsePropertyName(e),this.parseMethod(e,!1);var o="get"===e.kind?0:1;if(e.params.length!==o){var u=e.start;"get"===e.kind?this.raise(u,"getter should have no params"):this.raise(u,"setter should have exactly one param")}return this.finishNode(e,"ObjectMethod")}if(!e.computed&&"Identifier"===e.key.type)return a?(this.checkReservedWord(e.key.name,e.key.start,!0,!0),e.value=this.parseMaybeDefault(t,n,e.key.__clone())):this.match(M.eq)&&s?(s.start||(s.start=this.state.start),e.value=this.parseMaybeDefault(t,n,e.key.__clone())):e.value=e.key.__clone(),e.shorthand=!0,this.finishNode(e,"ObjectProperty");this.unexpected()},ae.parsePropertyName=function(e){return this.eat(M.bracketL)?(e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(M.bracketR),e.key):(e.computed=!1,e.key=this.match(M.num)||this.match(M.string)?this.parseExprAtom():this.parseIdentifier(!0))},ae.initFunction=function(e,t){e.id=null,e.generator=!1,e.expression=!1,e.async=!!t},ae.parseMethod=function(e,t,n){var r=this.state.inMethod;return this.state.inMethod=e.kind||!0,this.initFunction(e,n),this.expect(M.parenL),e.params=this.parseBindingList(M.parenR),e.generator=t,this.parseFunctionBody(e),this.state.inMethod=r,e},ae.parseArrowExpression=function(e,t,n){return this.initFunction(e,n),e.params=this.toAssignableList(t,!0,"arrow function parameters"),this.parseFunctionBody(e,!0),this.finishNode(e,"ArrowFunctionExpression")},ae.parseFunctionBody=function(e,t){var n=t&&!this.match(M.braceL),r=this.state.inAsync;if(this.state.inAsync=e.async,n)e.body=this.parseMaybeAssign(),e.expression=!0;else{var i=this.state.inFunction,a=this.state.inGenerator,s=this.state.labels;this.state.inFunction=!0,this.state.inGenerator=e.generator,this.state.labels=[],e.body=this.parseBlock(!0),e.expression=!1,this.state.inFunction=i,this.state.inGenerator=a,this.state.labels=s}this.state.inAsync=r;var o=this.state.strict,u=!1;if(t&&(o=!0),!n&&e.body.directives.length)for(var l=e.body.directives,c=Array.isArray(l),p=0,l=c?l:l[Symbol.iterator]();;){var f;if(c){if(p>=l.length)break;f=l[p++]}else{if(p=l.next(),p.done)break;f=p.value}var h=f;if("use strict"===h.value.value){u=!0,o=!0;break}}if(u&&e.id&&"Identifier"===e.id.type&&"yield"===e.id.name&&this.raise(e.id.start,"Binding yield in strict mode"),o){var d=Object.create(null),y=this.state.strict;u&&(this.state.strict=!0),e.id&&this.checkLVal(e.id,!0,void 0,"function name");for(var m=e.params,b=Array.isArray(m),g=0,m=b?m:m[Symbol.iterator]();;){var v;if(b){if(g>=m.length)break;v=m[g++]}else{if(g=m.next(),g.done)break;v=g.value}var x=v;u&&"Identifier"!==x.type&&this.raise(x.start,"Non-simple parameter in strict mode"),this.checkLVal(x,!0,d,"function parameter list")}this.state.strict=y}},ae.parseExprList=function(e,t,n){for(var r=[],i=!0;!this.eat(e);){if(i)i=!1;else if(this.expect(M.comma),this.eat(e))break;r.push(this.parseExprListItem(t,n))}return r},ae.parseExprListItem=function(e,t){return e&&this.match(M.comma)?null:this.match(M.ellipsis)?this.parseSpread(t):this.parseMaybeAssign(!1,t,this.parseParenItem)},ae.parseIdentifier=function(e){var t=this.startNode();return this.match(M.name)?(e||this.checkReservedWord(this.state.value,this.state.start,!1,!1),t.name=this.state.value):e&&this.state.type.keyword?t.name=this.state.type.keyword:this.unexpected(),!e&&"await"===t.name&&this.state.inAsync&&this.raise(t.start,"invalid use of await inside of an async function"),t.loc.identifierName=t.name,this.next(),this.finishNode(t,"Identifier")},ae.checkReservedWord=function(e,t,n,r){(this.isReservedWord(e)||n&&this.isKeyword(e))&&this.raise(t,e+" is a reserved word"),this.state.strict&&(S.strict(e)||r&&S.strictBind(e))&&this.raise(t,e+" is a reserved word in strict mode")},ae.parseAwait=function(e){return this.state.inAsync||this.unexpected(),this.match(M.star)&&this.raise(e.start,"await* has been removed from the async functions proposal. Use Promise.all() instead."),e.argument=this.parseMaybeUnary(),this.finishNode(e,"AwaitExpression")},ae.parseYield=function(){var e=this.startNode();return this.next(),this.match(M.semi)||this.canInsertSemicolon()||!this.match(M.star)&&!this.state.type.startsExpr?(e.delegate=!1,e.argument=null):(e.delegate=this.eat(M.star),e.argument=this.parseMaybeAssign()),this.finishNode(e,"YieldExpression")};var se=$.prototype,oe=["leadingComments","trailingComments","innerComments"],ue=function(){function e(t,n,r){_(this,e),this.type="",this.start=t,this.end=0,this.loc=new J(n),r&&(this.loc.filename=r)}return e.prototype.__clone=function(){var t=new e;for(var n in this)oe.indexOf(n)<0&&(t[n]=this[n]);return t},e}();se.startNode=function(){return new ue(this.state.start,this.state.startLoc,this.filename)},se.startNodeAt=function(e,t){return new ue(e,t,this.filename)},se.finishNode=function(e,t){return E.call(this,e,t,this.state.lastTokEnd,this.state.lastTokEndLoc)},se.finishNodeAt=function(e,t,n,r){return E.call(this,e,t,n,r)},$.prototype.raise=function(e,t){var n=d(this.input,e);t+=" ("+n.line+":"+n.column+")";var r=new SyntaxError(t);throw r.pos=e,r.loc=n,r};var le=$.prototype;le.addComment=function(e){this.filename&&(e.loc.filename=this.filename),this.state.trailingComments.push(e),this.state.leadingComments.push(e)},le.processComment=function(e){if(!("Program"===e.type&&e.body.length>0)){var t=this.state.commentStack,n=void 0,r=void 0,i=void 0,a=void 0;if(this.state.trailingComments.length>0)this.state.trailingComments[0].start>=e.end?(r=this.state.trailingComments,this.state.trailingComments=[]):this.state.trailingComments.length=0;else{var s=A(t);t.length>0&&s.trailingComments&&s.trailingComments[0].start>=e.end&&(r=s.trailingComments,s.trailingComments=null)}for(;t.length>0&&A(t).start>=e.start;)n=t.pop();if(n){if(n.leadingComments)if(n!==e&&A(n.leadingComments).end<=e.start)e.leadingComments=n.leadingComments,n.leadingComments=null;else for(i=n.leadingComments.length-2;i>=0;--i)if(n.leadingComments[i].end<=e.start){e.leadingComments=n.leadingComments.splice(0,i+1);break}}else if(this.state.leadingComments.length>0)if(A(this.state.leadingComments).end<=e.start){if(this.state.commentPreviousNode)for(a=0;a0&&(e.leadingComments=this.state.leadingComments,this.state.leadingComments=[])}else{for(i=0;ie.start);i++);e.leadingComments=this.state.leadingComments.slice(0,i),0===e.leadingComments.length&&(e.leadingComments=null),r=this.state.leadingComments.slice(i),0===r.length&&(r=null)}this.state.commentPreviousNode=e,r&&(r.length&&r[0].start>=e.start&&A(r).end<=e.end?e.innerComments=r:e.trailingComments=r),t.push(e)}};var ce=$.prototype;ce.flowParseTypeInitialiser=function(e,t){var n=this.state.inType;this.state.inType=!0,this.expect(e||M.colon),t&&(this.match(M.bitwiseAND)||this.match(M.bitwiseOR))&&this.next();var r=this.flowParseType();return this.state.inType=n,r},ce.flowParseDeclareClass=function(e){return this.next(),this.flowParseInterfaceish(e,!0),this.finishNode(e,"DeclareClass")},ce.flowParseDeclareFunction=function(e){this.next();var t=e.id=this.parseIdentifier(),n=this.startNode(),r=this.startNode();this.isRelational("<")?n.typeParameters=this.flowParseTypeParameterDeclaration():n.typeParameters=null,this.expect(M.parenL);var i=this.flowParseFunctionTypeParams();return n.params=i.params,n.rest=i.rest,this.expect(M.parenR),n.returnType=this.flowParseTypeInitialiser(),r.typeAnnotation=this.finishNode(n,"FunctionTypeAnnotation"),t.typeAnnotation=this.finishNode(r,"TypeAnnotation"),this.finishNode(t,t.type),this.semicolon(),this.finishNode(e,"DeclareFunction")},ce.flowParseDeclare=function(e){return this.match(M._class)?this.flowParseDeclareClass(e):this.match(M._function)?this.flowParseDeclareFunction(e):this.match(M._var)?this.flowParseDeclareVariable(e):this.isContextual("module")?this.lookahead().type===M.dot?this.flowParseDeclareModuleExports(e):this.flowParseDeclareModule(e):this.isContextual("type")?this.flowParseDeclareTypeAlias(e):this.isContextual("interface")?this.flowParseDeclareInterface(e):void this.unexpected()},ce.flowParseDeclareVariable=function(e){return this.next(),e.id=this.flowParseTypeAnnotatableIdentifier(),this.semicolon(),this.finishNode(e,"DeclareVariable")},ce.flowParseDeclareModule=function(e){this.next(),this.match(M.string)?e.id=this.parseExprAtom():e.id=this.parseIdentifier();var t=e.body=this.startNode(),n=t.body=[];for(this.expect(M.braceL);!this.match(M.braceR);){var r=this.startNode();this.expectContextual("declare","Unexpected token. Only declares are allowed inside declare module"),n.push(this.flowParseDeclare(r))}return this.expect(M.braceR),this.finishNode(t,"BlockStatement"),this.finishNode(e,"DeclareModule")},ce.flowParseDeclareModuleExports=function(e){return this.expectContextual("module"),this.expect(M.dot),this.expectContextual("exports"),e.typeAnnotation=this.flowParseTypeAnnotation(),this.semicolon(),this.finishNode(e,"DeclareModuleExports")},ce.flowParseDeclareTypeAlias=function(e){return this.next(),this.flowParseTypeAlias(e),this.finishNode(e,"DeclareTypeAlias")},ce.flowParseDeclareInterface=function(e){return this.next(),this.flowParseInterfaceish(e),this.finishNode(e,"DeclareInterface")},ce.flowParseInterfaceish=function(e,t){if(e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.extends=[],e.mixins=[],this.eat(M._extends))do e.extends.push(this.flowParseInterfaceExtends());while(this.eat(M.comma));if(this.isContextual("mixins")){this.next();do e.mixins.push(this.flowParseInterfaceExtends());while(this.eat(M.comma))}e.body=this.flowParseObjectType(t)},ce.flowParseInterfaceExtends=function(){var e=this.startNode();return e.id=this.flowParseQualifiedTypeIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterInstantiation():e.typeParameters=null,this.finishNode(e,"InterfaceExtends")},ce.flowParseInterface=function(e){return this.flowParseInterfaceish(e,!1),this.finishNode(e,"InterfaceDeclaration")},ce.flowParseTypeAlias=function(e){return e.id=this.parseIdentifier(),this.isRelational("<")?e.typeParameters=this.flowParseTypeParameterDeclaration():e.typeParameters=null,e.right=this.flowParseTypeInitialiser(M.eq,!0),this.semicolon(),this.finishNode(e,"TypeAlias")},ce.flowParseTypeParameter=function(){var e=this.startNode(),t=this.flowParseVariance(),n=this.flowParseTypeAnnotatableIdentifier();return e.name=n.name,e.variance=t,e.bound=n.typeAnnotation,this.match(M.eq)&&(this.eat(M.eq),e.default=this.flowParseType()),this.finishNode(e,"TypeParameter")},ce.flowParseTypeParameterDeclaration=function(){var e=this.state.inType,t=this.startNode();t.params=[],this.state.inType=!0,this.isRelational("<")||this.match(M.jsxTagStart)?this.next():this.unexpected();do t.params.push(this.flowParseTypeParameter()),this.isRelational(">")||this.expect(M.comma);while(!this.isRelational(">"));return this.expectRelational(">"),this.state.inType=e,this.finishNode(t,"TypeParameterDeclaration")},ce.flowParseTypeParameterInstantiation=function(){var e=this.startNode(),t=this.state.inType;for(e.params=[],this.state.inType=!0,this.expectRelational("<");!this.isRelational(">");)e.params.push(this.flowParseType()),this.isRelational(">")||this.expect(M.comma);return this.expectRelational(">"),this.state.inType=t,this.finishNode(e,"TypeParameterInstantiation")},ce.flowParseObjectPropertyKey=function(){return this.match(M.num)||this.match(M.string)?this.parseExprAtom():this.parseIdentifier(!0)},ce.flowParseObjectTypeIndexer=function(e,t,n){return e.static=t,this.expect(M.bracketL),this.lookahead().type===M.colon?(e.id=this.flowParseObjectPropertyKey(),e.key=this.flowParseTypeInitialiser()):(e.id=null,e.key=this.flowParseType()),this.expect(M.bracketR),e.value=this.flowParseTypeInitialiser(),e.variance=n,this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeIndexer")},ce.flowParseObjectTypeMethodish=function(e){for(e.params=[],e.rest=null,e.typeParameters=null,this.isRelational("<")&&(e.typeParameters=this.flowParseTypeParameterDeclaration()),this.expect(M.parenL);this.match(M.name);)e.params.push(this.flowParseFunctionTypeParam()),this.match(M.parenR)||this.expect(M.comma);return this.eat(M.ellipsis)&&(e.rest=this.flowParseFunctionTypeParam()),this.expect(M.parenR),e.returnType=this.flowParseTypeInitialiser(),this.finishNode(e,"FunctionTypeAnnotation")},ce.flowParseObjectTypeMethod=function(e,t,n,r){var i=this.startNodeAt(e,t);return i.value=this.flowParseObjectTypeMethodish(this.startNodeAt(e,t)),i.static=n,i.key=r,i.optional=!1,this.flowObjectTypeSemicolon(),this.finishNode(i,"ObjectTypeProperty")},ce.flowParseObjectTypeCallProperty=function(e,t){var n=this.startNode();return e.static=t,e.value=this.flowParseObjectTypeMethodish(n),this.flowObjectTypeSemicolon(),this.finishNode(e,"ObjectTypeCallProperty")},ce.flowParseObjectType=function(e,t){var n=this.state.inType;this.state.inType=!0;var r=this.startNode(),i=void 0,a=void 0,s=!1;r.callProperties=[],r.properties=[],r.indexers=[];var o=void 0,u=void 0;for(t&&this.match(M.braceBarL)?(this.expect(M.braceBarL),o=M.braceBarR,u=!0):(this.expect(M.braceL),o=M.braceR,u=!1),r.exact=u;!this.match(o);){var l=!1,c=this.state.start,p=this.state.startLoc;i=this.startNode(),e&&this.isContextual("static")&&this.lookahead().type!==M.colon&&(this.next(),s=!0);var f=this.state.start,h=this.flowParseVariance();this.match(M.bracketL)?r.indexers.push(this.flowParseObjectTypeIndexer(i,s,h)):this.match(M.parenL)||this.isRelational("<")?(h&&this.unexpected(f),r.callProperties.push(this.flowParseObjectTypeCallProperty(i,e))):(a=this.flowParseObjectPropertyKey(),this.isRelational("<")||this.match(M.parenL)?(h&&this.unexpected(f),r.properties.push(this.flowParseObjectTypeMethod(c,p,s,a))):(this.eat(M.question)&&(l=!0),i.key=a,i.value=this.flowParseTypeInitialiser(),i.optional=l,i.static=s,i.variance=h,this.flowObjectTypeSemicolon(),r.properties.push(this.finishNode(i,"ObjectTypeProperty")))),s=!1}this.expect(o);var d=this.finishNode(r,"ObjectTypeAnnotation");return this.state.inType=n,d},ce.flowObjectTypeSemicolon=function(){this.eat(M.semi)||this.eat(M.comma)||this.match(M.braceR)||this.match(M.braceBarR)||this.unexpected()},ce.flowParseQualifiedTypeIdentifier=function(e,t,n){e=e||this.state.start,t=t||this.state.startLoc;for(var r=n||this.parseIdentifier();this.eat(M.dot);){var i=this.startNodeAt(e,t);i.qualification=r,i.id=this.parseIdentifier(),r=this.finishNode(i,"QualifiedTypeIdentifier")}return r},ce.flowParseGenericType=function(e,t,n){var r=this.startNodeAt(e,t);return r.typeParameters=null,r.id=this.flowParseQualifiedTypeIdentifier(e,t,n),this.isRelational("<")&&(r.typeParameters=this.flowParseTypeParameterInstantiation()),this.finishNode(r,"GenericTypeAnnotation")},ce.flowParseTypeofType=function(){var e=this.startNode();return this.expect(M._typeof),e.argument=this.flowParsePrimaryType(),this.finishNode(e,"TypeofTypeAnnotation")},ce.flowParseTupleType=function(){var e=this.startNode();for(e.types=[],this.expect(M.bracketL);this.state.pos0&&void 0!==arguments[0]?arguments[0]:[],t={params:e,rest:null};this.match(M.name);)t.params.push(this.flowParseFunctionTypeParam()),this.match(M.parenR)||this.expect(M.comma);return this.eat(M.ellipsis)&&(t.rest=this.flowParseFunctionTypeParam()),t},ce.flowIdentToTypeAnnotation=function(e,t,n,r){switch(r.name){case"any":return this.finishNode(n,"AnyTypeAnnotation");case"void":return this.finishNode(n,"VoidTypeAnnotation");case"bool":case"boolean":return this.finishNode(n,"BooleanTypeAnnotation");case"mixed":return this.finishNode(n,"MixedTypeAnnotation");case"empty":return this.finishNode(n,"EmptyTypeAnnotation");case"number":return this.finishNode(n,"NumberTypeAnnotation");case"string":return this.finishNode(n,"StringTypeAnnotation");default:return this.flowParseGenericType(e,t,r)}},ce.flowParsePrimaryType=function(){var e=this.state.start,t=this.state.startLoc,n=this.startNode(),r=void 0,i=void 0,a=!1,s=this.state.noAnonFunctionType;switch(this.state.type){case M.name:return this.flowIdentToTypeAnnotation(e,t,n,this.parseIdentifier());case M.braceL:return this.flowParseObjectType(!1,!1);case M.braceBarL:return this.flowParseObjectType(!1,!0);case M.bracketL:return this.flowParseTupleType();case M.relational:if("<"===this.state.value)return n.typeParameters=this.flowParseTypeParameterDeclaration(),this.expect(M.parenL),r=this.flowParseFunctionTypeParams(),n.params=r.params,n.rest=r.rest,this.expect(M.parenR),this.expect(M.arrow),
+n.returnType=this.flowParseType(),this.finishNode(n,"FunctionTypeAnnotation");break;case M.parenL:if(this.next(),!this.match(M.parenR)&&!this.match(M.ellipsis))if(this.match(M.name)){var o=this.lookahead().type;a=o!==M.question&&o!==M.colon}else a=!0;if(a){if(this.state.noAnonFunctionType=!1,i=this.flowParseType(),this.state.noAnonFunctionType=s,this.state.noAnonFunctionType||!(this.match(M.comma)||this.match(M.parenR)&&this.lookahead().type===M.arrow))return this.expect(M.parenR),i;this.eat(M.comma)}return r=i?this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(i)]):this.flowParseFunctionTypeParams(),n.params=r.params,n.rest=r.rest,this.expect(M.parenR),this.expect(M.arrow),n.returnType=this.flowParseType(),n.typeParameters=null,this.finishNode(n,"FunctionTypeAnnotation");case M.string:return n.value=this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"StringLiteralTypeAnnotation");case M._true:case M._false:return n.value=this.match(M._true),this.next(),this.finishNode(n,"BooleanLiteralTypeAnnotation");case M.plusMin:if("-"===this.state.value)return this.next(),this.match(M.num)||this.unexpected(),n.value=-this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"NumericLiteralTypeAnnotation");case M.num:return n.value=this.state.value,this.addExtra(n,"rawValue",n.value),this.addExtra(n,"raw",this.input.slice(this.state.start,this.state.end)),this.next(),this.finishNode(n,"NumericLiteralTypeAnnotation");case M._null:return n.value=this.match(M._null),this.next(),this.finishNode(n,"NullLiteralTypeAnnotation");case M._this:return n.value=this.match(M._this),this.next(),this.finishNode(n,"ThisTypeAnnotation");case M.star:return this.next(),this.finishNode(n,"ExistentialTypeParam");default:if("typeof"===this.state.type.keyword)return this.flowParseTypeofType()}this.unexpected()},ce.flowParsePostfixType=function(){for(var e=this.state.start,t=this.state.startLoc,n=this.flowParsePrimaryType();!this.canInsertSemicolon()&&this.match(M.bracketL);){var r=this.startNodeAt(e,t);r.elementType=n,this.expect(M.bracketL),this.expect(M.bracketR),n=this.finishNode(r,"ArrayTypeAnnotation")}return n},ce.flowParsePrefixType=function(){var e=this.startNode();return this.eat(M.question)?(e.typeAnnotation=this.flowParsePrefixType(),this.finishNode(e,"NullableTypeAnnotation")):this.flowParsePostfixType()},ce.flowParseAnonFunctionWithoutParens=function(){var e=this.flowParsePrefixType();if(!this.state.noAnonFunctionType&&this.eat(M.arrow)){var t=this.startNodeAt(e.start,e.loc);return t.params=[this.reinterpretTypeAsFunctionTypeParam(e)],t.rest=null,t.returnType=this.flowParseType(),t.typeParameters=null,this.finishNode(t,"FunctionTypeAnnotation")}return e},ce.flowParseIntersectionType=function(){var e=this.startNode(),t=this.flowParseAnonFunctionWithoutParens();for(e.types=[t];this.eat(M.bitwiseAND);)e.types.push(this.flowParseAnonFunctionWithoutParens());return 1===e.types.length?t:this.finishNode(e,"IntersectionTypeAnnotation")},ce.flowParseUnionType=function(){var e=this.startNode(),t=this.flowParseIntersectionType();for(e.types=[t];this.eat(M.bitwiseOR);)e.types.push(this.flowParseIntersectionType());return 1===e.types.length?t:this.finishNode(e,"UnionTypeAnnotation")},ce.flowParseType=function(){var e=this.state.inType;this.state.inType=!0;var t=this.flowParseUnionType();return this.state.inType=e,t},ce.flowParseTypeAnnotation=function(){var e=this.startNode();return e.typeAnnotation=this.flowParseTypeInitialiser(),this.finishNode(e,"TypeAnnotation")},ce.flowParseTypeAnnotatableIdentifier=function(){var e=this.parseIdentifier();return this.match(M.colon)&&(e.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(e,e.type)),e},ce.typeCastToParameter=function(e){return e.expression.typeAnnotation=e.typeAnnotation,this.finishNodeAt(e.expression,e.expression.type,e.typeAnnotation.end,e.typeAnnotation.loc.end)},ce.flowParseVariance=function(){var e=null;return this.match(M.plusMin)&&("+"===this.state.value?e="plus":"-"===this.state.value&&(e="minus"),this.next()),e};var pe=function(e){e.extend("parseFunctionBody",function(e){return function(t,n){return this.match(M.colon)&&!n&&(t.returnType=this.flowParseTypeAnnotation()),e.call(this,t,n)}}),e.extend("parseStatement",function(e){return function(t,n){if(this.state.strict&&this.match(M.name)&&"interface"===this.state.value){var r=this.startNode();return this.next(),this.flowParseInterface(r)}return e.call(this,t,n)}}),e.extend("parseExpressionStatement",function(e){return function(t,n){if("Identifier"===n.type)if("declare"===n.name){if(this.match(M._class)||this.match(M.name)||this.match(M._function)||this.match(M._var))return this.flowParseDeclare(t)}else if(this.match(M.name)){if("interface"===n.name)return this.flowParseInterface(t);if("type"===n.name)return this.flowParseTypeAlias(t)}return e.call(this,t,n)}}),e.extend("shouldParseExportDeclaration",function(e){return function(){return this.isContextual("type")||this.isContextual("interface")||e.call(this)}}),e.extend("parseConditional",function(e){return function(t,n,r,i,a){if(a&&this.match(M.question)){var s=this.state.clone();try{return e.call(this,t,n,r,i)}catch(e){if(e instanceof SyntaxError)return this.state=s,a.start=e.pos||this.state.start,t;throw e}}return e.call(this,t,n,r,i)}}),e.extend("parseParenItem",function(e){return function(t,n,r){if(t=e.call(this,t,n,r),this.eat(M.question)&&(t.optional=!0),this.match(M.colon)){var i=this.startNodeAt(n,r);return i.expression=t,i.typeAnnotation=this.flowParseTypeAnnotation(),this.finishNode(i,"TypeCastExpression")}return t}}),e.extend("parseExport",function(e){return function(t){return t=e.call(this,t),"ExportNamedDeclaration"===t.type&&(t.exportKind=t.exportKind||"value"),t}}),e.extend("parseExportDeclaration",function(e){return function(t){if(this.isContextual("type")){t.exportKind="type";var n=this.startNode();return this.next(),this.match(M.braceL)?(t.specifiers=this.parseExportSpecifiers(),this.parseExportFrom(t),null):this.flowParseTypeAlias(n)}if(this.isContextual("interface")){t.exportKind="type";var r=this.startNode();return this.next(),this.flowParseInterface(r)}return e.call(this,t)}}),e.extend("parseClassId",function(e){return function(t){e.apply(this,arguments),this.isRelational("<")&&(t.typeParameters=this.flowParseTypeParameterDeclaration())}}),e.extend("isKeyword",function(e){return function(t){return(!this.state.inType||"void"!==t)&&e.call(this,t)}}),e.extend("parsePropertyName",function(e){return function(t){var n=this.state.inType;this.state.inType=!0;var r=e.call(this,t);return this.state.inType=n,r}}),e.extend("readToken",function(e){return function(t){return!this.state.inType||62!==t&&60!==t?e.call(this,t):this.finishOp(M.relational,1)}}),e.extend("jsx_readToken",function(e){return function(){if(!this.state.inType)return e.call(this)}}),e.extend("toAssignable",function(e){return function(t,n,r){return"TypeCastExpression"===t.type?e.call(this,this.typeCastToParameter(t),n,r):e.call(this,t,n,r)}}),e.extend("toAssignableList",function(e){return function(t,n,r){for(var i=0;i",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",lang:"〈",rang:"〉",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦"},he=/^[\da-fA-F]+$/,de=/^\d+$/;K.j_oTag=new q("...",!0,!0),M.jsxName=new I("jsxName"),M.jsxText=new I("jsxText",{beforeExpr:!0}),M.jsxTagStart=new I("jsxTagStart",{startsExpr:!0}),M.jsxTagEnd=new I("jsxTagEnd"),M.jsxTagStart.updateContext=function(){this.state.context.push(K.j_expr),this.state.context.push(K.j_oTag),this.state.exprAllowed=!1},M.jsxTagEnd.updateContext=function(e){var t=this.state.context.pop();t===K.j_oTag&&e===M.slash||t===K.j_cTag?(this.state.context.pop(),this.state.exprAllowed=this.curContext()===K.j_expr):this.state.exprAllowed=!0};var ye=$.prototype;ye.jsxReadToken=function(){for(var e="",t=this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated JSX contents");var n=this.input.charCodeAt(this.state.pos);switch(n){case 60:case 123:return this.state.pos===this.state.start?60===n&&this.state.exprAllowed?(++this.state.pos,this.finishToken(M.jsxTagStart)):this.getTokenFromCode(n):(e+=this.input.slice(t,this.state.pos),this.finishToken(M.jsxText,e));case 38:e+=this.input.slice(t,this.state.pos),e+=this.jsxReadEntity(),t=this.state.pos;break;default:p(n)?(e+=this.input.slice(t,this.state.pos),e+=this.jsxReadNewLine(!0),t=this.state.pos):++this.state.pos}}},ye.jsxReadNewLine=function(e){var t=this.input.charCodeAt(this.state.pos),n=void 0;return++this.state.pos,13===t&&10===this.input.charCodeAt(this.state.pos)?(++this.state.pos,n=e?"\n":"\r\n"):n=String.fromCharCode(t),++this.state.curLine,this.state.lineStart=this.state.pos,n},ye.jsxReadString=function(e){for(var t="",n=++this.state.pos;;){this.state.pos>=this.input.length&&this.raise(this.state.start,"Unterminated string constant");var r=this.input.charCodeAt(this.state.pos);if(r===e)break;38===r?(t+=this.input.slice(n,this.state.pos),t+=this.jsxReadEntity(),n=this.state.pos):p(r)?(t+=this.input.slice(n,this.state.pos),t+=this.jsxReadNewLine(!1),n=this.state.pos):++this.state.pos}return t+=this.input.slice(n,this.state.pos++),this.finishToken(M.string,t)},ye.jsxReadEntity=function(){for(var e="",t=0,n=void 0,r=this.input[this.state.pos],i=++this.state.pos;this.state.pos")}return n.openingElement=i,n.closingElement=a,n.children=r,this.match(M.relational)&&"<"===this.state.value&&this.raise(this.state.start,"Adjacent JSX elements must be wrapped in an enclosing tag"),this.finishNode(n,"JSXElement")},ye.jsxParseElement=function(){var e=this.state.start,t=this.state.startLoc;return this.next(),this.jsxParseElementAt(e,t)};var me=function(e){e.extend("parseExprAtom",function(e){return function(t){if(this.match(M.jsxText)){var n=this.parseLiteral(this.state.value,"JSXText");return n.extra=null,n}return this.match(M.jsxTagStart)?this.jsxParseElement():e.call(this,t)}}),e.extend("readToken",function(e){return function(t){var n=this.curContext();if(n===K.j_expr)return this.jsxReadToken();if(n===K.j_oTag||n===K.j_cTag){if(a(t))return this.jsxReadWord();if(62===t)return++this.state.pos,this.finishToken(M.jsxTagEnd);if((34===t||39===t)&&n===K.j_oTag)return this.jsxReadString(t)}return 60===t&&this.state.exprAllowed?(++this.state.pos,this.finishToken(M.jsxTagStart)):e.call(this,t)}}),e.extend("updateContext",function(e){return function(t){if(this.match(M.braceL)){var n=this.curContext();n===K.j_oTag?this.state.context.push(K.braceExpression):n===K.j_expr?this.state.context.push(K.templateQuasi):e.call(this,t),this.state.exprAllowed=!0}else{if(!this.match(M.slash)||t!==M.jsxTagStart)return e.call(this,t);this.state.context.length-=2,this.state.context.push(K.j_cTag),this.state.exprAllowed=!1}}})};H.flow=pe,H.jsx=me,n.parse=C,n.tokTypes=M},{}],275:[function(e,t,n){(function(t){"use strict";function r(e){return new t(e,"base64").toString()}function i(e){return e.split(",").pop()}function a(e,t){var n=p.exec(e);p.lastIndex=0;var r=n[1]||n[2],i=l.resolve(t,r);try{return u.readFileSync(i,"utf8")}catch(e){throw new Error("An error occurred while trying to read the map file at "+i+"\n"+e)}}function s(e,t){t=t||{},t.isFileComment&&(e=a(e,t.commentFileDir)),t.hasComment&&(e=i(e)),t.isEncoded&&(e=r(e)),(t.isJSON||t.isEncoded)&&(e=JSON.parse(e)),this.sourcemap=e}function o(e){for(var t,r=e.split("\n"),i=r.length-1;i>0;i--)if(t=r[i],~t.indexOf("sourceMappingURL=data:"))return n.fromComment(t)}var u=e("fs"),l=e("path"),c=/^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+;)?base64,(.*)$/gm,p=/(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/gm;s.prototype.toJSON=function(e){return JSON.stringify(this.sourcemap,null,e)},s.prototype.toBase64=function(){return new t(this.toJSON()).toString("base64")},s.prototype.toComment=function(e){var t=this.toBase64(),n="sourceMappingURL=data:application/json;base64,"+t;return e&&e.multiline?"/*# "+n+" */":"//# "+n},s.prototype.toObject=function(){return JSON.parse(this.toJSON())},s.prototype.addProperty=function(e,t){if(this.sourcemap.hasOwnProperty(e))throw new Error("property %s already exists on the sourcemap, use set property instead");return this.setProperty(e,t)},s.prototype.setProperty=function(e,t){return this.sourcemap[e]=t,this},s.prototype.getProperty=function(e){return this.sourcemap[e]},n.fromObject=function(e){return new s(e)},n.fromJSON=function(e){return new s(e,{isJSON:!0})},n.fromBase64=function(e){return new s(e,{isEncoded:!0})},n.fromComment=function(e){return e=e.replace(/^\/\*/g,"//").replace(/\*\/$/g,""),new s(e,{isEncoded:!0,hasComment:!0})},n.fromMapFileComment=function(e,t){return new s(e,{commentFileDir:t,isFileComment:!0,isJSON:!0})},n.fromSource=function(e,t){if(t){var r=o(e);return r?r:null}var i=e.match(c);return c.lastIndex=0,i?n.fromComment(i.pop()):null},n.fromMapFileSource=function(e,t){var r=e.match(p);return p.lastIndex=0,r?n.fromMapFileComment(r.pop(),t):null},n.removeComments=function(e){return c.lastIndex=0,e.replace(c,"")},n.removeMapFileComments=function(e){return p.lastIndex=0,e.replace(p,"")},n.generateMapFileComment=function(e,t){var n="sourceMappingURL="+e;return t&&t.multiline?"/*# "+n+" */":"//# "+n},Object.defineProperty(n,"commentRegex",{get:function(){return c.lastIndex=0,c}}),Object.defineProperty(n,"mapFileCommentRegex",{get:function(){return p.lastIndex=0,p}})}).call(this,e("buffer").Buffer)},{buffer:4,fs:1,path:12}],276:[function(e,t,n){t.exports=e("./src/node")},{"./src/node":280}],277:[function(e,t,n){function r(e){if(e=String(e),!(e.length>1e4)){var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(t){var n=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return n*p;case"days":case"day":case"d":return n*c;case"hours":case"hour":case"hrs":case"hr":case"h":return n*l;case"minutes":case"minute":case"mins":case"min":case"m":return n*u;case"seconds":case"second":case"secs":case"sec":case"s":return n*o;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function i(e){return e>=c?Math.round(e/c)+"d":e>=l?Math.round(e/l)+"h":e>=u?Math.round(e/u)+"m":e>=o?Math.round(e/o)+"s":e+"ms"}function a(e){return s(e,c,"day")||s(e,l,"hour")||s(e,u,"minute")||s(e,o,"second")||e+" ms"}function s(e,t,n){if(!(e0)return r(e);if("number"===n&&isNaN(e)===!1)return t.long?a(e):i(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}],278:[function(e,t,n){(function(r){function i(){return"undefined"!=typeof window&&void 0!==window.process&&"renderer"===window.process.type||("undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style||"undefined"!=typeof window&&window.console&&(console.firebug||console.exception&&console.table)||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function a(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),t){var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))}),e.splice(a,0,r)}}function s(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function o(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(e){}}function u(){try{return n.storage.debug}catch(e){}if(void 0!==r&&"env"in r)return r.env.DEBUG}function l(){try{return window.localStorage}catch(e){}}n=t.exports=e("./debug"),n.log=s,n.formatArgs=a,n.save=o,n.load=u,n.useColors=i,n.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:l(),n.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],n.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},n.enable(u()),"undefined"!=typeof window&&(window.debug=n)}).call(this,e("_process"))},{"./debug":279,_process:13}],279:[function(e,t,n){function r(e){var t,r=0;for(t in e)r=(r<<5)-r+e.charCodeAt(t),r|=0;return n.colors[Math.abs(r)%n.colors.length]}function i(e){function t(){if(t.enabled){var e=t,r=+new Date,i=r-(l||r);e.diff=i,e.prev=l,e.curr=r,l=r;for(var a=new Array(arguments.length),s=0;s"z")&&(r<"A"||r>"Z")&&l("Bad identifier as unquoted key");c()&&("_"===r||"$"===r||r>="a"&&r<="z"||r>="A"&&r<="Z"||r>="0"&&r<="9");)e+=r;return e},h=function(){var e,t="",n="",i=10;if("-"!==r&&"+"!==r||(t=r,c(r)),"I"===r)return e=v(),("number"!=typeof e||isNaN(e))&&l("Unexpected word for number"),"-"===t?-e:e;if("N"===r)return e=v(),isNaN(e)||l("expected word to be NaN"),e;switch("0"===r&&(n+=r,c(),"x"===r||"X"===r?(n+=r,c(),i=16):r>="0"&&r<="9"&&l("Octal literal")),i){case 10:for(;r>="0"&&r<="9";)n+=r,c();if("."===r)for(n+=".";c()&&r>="0"&&r<="9";)n+=r;if("e"===r||"E"===r)for(n+=r,c(),"-"!==r&&"+"!==r||(n+=r,c());r>="0"&&r<="9";)n+=r,c();break;case 16:for(;r>="0"&&r<="9"||r>="A"&&r<="F"||r>="a"&&r<="f";)n+=r,c()}if(e="-"===t?-n:+n,isFinite(e))return e;l("Bad number")},d=function(){var e,t,n,i,a="";if('"'===r||"'"===r)for(n=r;c();){if(r===n)return c(),a;if("\\"===r)if(c(),"u"===r){for(i=0,t=0;t<4&&(e=parseInt(c(),16),isFinite(e));t+=1)i=16*i+e;a+=String.fromCharCode(i)}else if("\r"===r)"\n"===p()&&c();else{if("string"!=typeof s[r])break;a+=s[r]}else{if("\n"===r)break;a+=r}}l("Bad string")},y=function(){"/"!==r&&l("Not an inline comment");do if(c(),"\n"===r||"\r"===r)return void c();while(r)},m=function(){"*"!==r&&l("Not a block comment");do for(c();"*"===r;)if(c("*"),"/"===r)return void c("/");while(r);l("Unterminated block comment")},b=function(){"/"!==r&&l("Not a comment"),c("/"),"/"===r?y():"*"===r?m():l("Unrecognized comment")},g=function(){for(;r;)if("/"===r)b();else{if(!(o.indexOf(r)>=0))return;c()}},v=function(){switch(r){case"t":return c("t"),c("r"),c("u"),c("e"),!0;case"f":return c("f"),c("a"),c("l"),c("s"),c("e"),!1;case"n":return c("n"),c("u"),c("l"),c("l"),null;case"I":return c("I"),c("n"),c("f"),c("i"),c("n"),c("i"),c("t"),c("y"),1/0;case"N":return c("N"),c("a"),c("N"),NaN}l("Unexpected "+u(r))},x=function(){var e=[];if("["===r)for(c("["),g();r;){if("]"===r)return c("]"),e;if(","===r?l("Missing array element"):e.push(a()),g(),","!==r)return c("]"),e;c(","),g()}l("Bad array")},_=function(){var e,t={};if("{"===r)for(c("{"),g();r;){if("}"===r)return c("}"),t;if(e='"'===r||"'"===r?d():f(),g(),c(":"),t[e]=a(),g(),","!==r)return c("}"),t;c(","),g()}l("Bad object")};return a=function(){switch(g(),r){case"{":return _();case"[":return x();case'"':case"'":return d();case"-":case"+":case".":return h();default:return r>="0"&&r<="9"?h():v()}},function(s,o){var u;return i=String(s),e=0,t=1,n=1,r=" ",u=a(),g(),r&&l("Syntax error"),"function"==typeof o?function e(t,n){var r,i,a=t[n];if(a&&"object"==typeof a)for(r in a)Object.prototype.hasOwnProperty.call(a,r)&&(i=e(a,r),void 0!==i?a[r]=i:delete a[r]);return o.call(t,n,a)}({"":u},""):u}}(),r.stringify=function(e,t,n){function i(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||e>="0"&&e<="9"||"_"===e||"$"===e}function a(e){return e>="a"&&e<="z"||e>="A"&&e<="Z"||"_"===e||"$"===e}function s(e){if("string"!=typeof e)return!1;if(!a(e[0]))return!1;for(var t=1,n=e.length;t10&&(e=e.substring(0,10));for(var r=n?"":"\n",i=0;i=0?i:void 0:i};r.isWord=s;var d,y=[];n&&("string"==typeof n?d=n:"number"==typeof n&&n>=0&&(d=c(" ",n,!0)));var m=/[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,b={"\b":"\\b","\t":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},g={"":e};return void 0===e?h(g,"",!0):f(g,"",!0)}},{}],282:[function(e,t,n){var r=e("./_getNative"),i=e("./_root"),a=r(i,"DataView");t.exports=a},{"./_getNative":391,"./_root":436}],283:[function(e,t,n){function r(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t-1}var i=e("./_baseIndexOf");t.exports=r},{"./_baseIndexOf":326}],300:[function(e,t,n){function r(e,t,n){for(var r=-1,i=null==e?0:e.length;++r=t?e:t)),e}t.exports=r},{}],314:[function(e,t,n){function r(e,t,n,P,j,B){var O,I=t&A,N=t&D,L=t&C;if(n&&(O=j?n(e,P,j,B):n(e)),void 0!==O)return O;if(!_(e))return e;var M=v(e);if(M){if(O=m(e),!I)return c(e,O)}else{var R=y(e),U=R==w||R==k;if(x(e))return l(e,I);if(R==F||R==S||U&&!j){if(O=N||U?{}:g(e),!I)return N?f(e,u(O,e)):p(e,o(O,e))}else{if(!T[R])return j?e:{};O=b(e,R,r,I)}}B||(B=new i);var V=B.get(e);if(V)return V;B.set(e,O);var G=L?N?d:h:N?keysIn:E,q=M?void 0:G(e);return a(q||e,function(i,a){q&&(a=i,i=e[a]),s(O,a,r(i,t,n,a,e,B))}),O}var i=e("./_Stack"),a=e("./_arrayEach"),s=e("./_assignValue"),o=e("./_baseAssign"),u=e("./_baseAssignIn"),l=e("./_cloneBuffer"),c=e("./_copyArray"),p=e("./_copySymbols"),f=e("./_copySymbolsIn"),h=e("./_getAllKeys"),d=e("./_getAllKeysIn"),y=e("./_getTag"),m=e("./_initCloneArray"),b=e("./_initCloneByTag"),g=e("./_initCloneObject"),v=e("./isArray"),x=e("./isBuffer"),_=e("./isObject"),E=e("./keys"),A=1,D=2,C=4,S="[object Arguments]",w="[object Function]",k="[object GeneratorFunction]",F="[object Object]",T={};T[S]=T["[object Array]"]=T["[object ArrayBuffer]"]=T["[object DataView]"]=T["[object Boolean]"]=T["[object Date]"]=T["[object Float32Array]"]=T["[object Float64Array]"]=T["[object Int8Array]"]=T["[object Int16Array]"]=T["[object Int32Array]"]=T["[object Map]"]=T["[object Number]"]=T[F]=T["[object RegExp]"]=T["[object Set]"]=T["[object String]"]=T["[object Symbol]"]=T["[object Uint8Array]"]=T["[object Uint8ClampedArray]"]=T["[object Uint16Array]"]=T["[object Uint32Array]"]=!0,T["[object Error]"]=T[w]=T["[object WeakMap]"]=!1,t.exports=r},{"./_Stack":290,"./_arrayEach":297,"./_assignValue":308,"./_baseAssign":310,"./_baseAssignIn":311,"./_cloneBuffer":362,"./_copyArray":371,"./_copySymbols":373,"./_copySymbolsIn":374,"./_getAllKeys":387,"./_getAllKeysIn":388,"./_getTag":396,"./_initCloneArray":405,"./_initCloneByTag":406,"./_initCloneObject":407,"./isArray":475,"./isBuffer":479,"./isObject":484,"./keys":491}],315:[function(e,t,n){var r=e("./isObject"),i=Object.create,a=function(){function e(){}return function(t){if(!r(t))return{};if(i)return i(t);e.prototype=t;var n=new e;return e.prototype=void 0,n}}();t.exports=a},{"./isObject":484}],316:[function(e,t,n){var r=e("./_baseForOwn"),i=e("./_createBaseEach"),a=i(r);t.exports=a},{"./_baseForOwn":320,"./_createBaseEach":377}],317:[function(e,t,n){function r(e,t,n,r){for(var i=e.length,a=n+(r?1:-1);r?a--:++a0&&n(c)?t>1?r(c,t-1,n,s,o):i(o,c):s||(o[o.length]=c)}return o}var i=e("./_arrayPush"),a=e("./_isFlattenable");t.exports=r},{"./_arrayPush":303,"./_isFlattenable":408}],319:[function(e,t,n){var r=e("./_createBaseFor"),i=r();t.exports=i},{"./_createBaseFor":378}],320:[function(e,t,n){function r(e,t){return e&&i(e,t,a)}var i=e("./_baseFor"),a=e("./keys");t.exports=r},{"./_baseFor":319,"./keys":491}],321:[function(e,t,n){function r(e,t){t=i(t,e);for(var n=0,r=t.length;null!=e&&ni)return n;do t%2&&(n+=e),t=a(t/2),t&&(e+=e);while(t);return n}var i=9007199254740991,a=Math.floor;t.exports=r},{}],347:[function(e,t,n){function r(e,t){return s(a(e,t,i),e+"")}var i=e("./identity"),a=e("./_overRest"),s=e("./_setToString");t.exports=r},{"./_overRest":435,"./_setToString":440,"./identity":472}],348:[function(e,t,n){var r=e("./constant"),i=e("./_defineProperty"),a=e("./identity"),s=i?function(e,t){return i(e,"toString",{configurable:!0,enumerable:!1,value:r(t),writable:!0})}:a;t.exports=s},{"./_defineProperty":382,"./constant":459,"./identity":472}],349:[function(e,t,n){function r(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r=c){var m=t?null:u(e);if(m)return l(m);h=!1,p=o,y=new i}else y=t?[]:d;e:for(;++r=r?e:i(e,t,n)}var i=e("./_baseSlice");t.exports=r},{"./_baseSlice":349}],360:[function(e,t,n){function r(e,t){for(var n=e.length;n--&&i(t,e[n],0)>-1;);return n}var i=e("./_baseIndexOf");t.exports=r},{"./_baseIndexOf":326}],361:[function(e,t,n){function r(e){var t=new e.constructor(e.byteLength);return new i(t).set(new i(e)),t}var i=e("./_Uint8Array");t.exports=r},{"./_Uint8Array":292}],362:[function(e,t,n){function r(e,t){if(t)return e.slice();var n=e.length,r=l?l(n):new e.constructor(n);return e.copy(r),r}var i=e("./_root"),a="object"==typeof n&&n&&!n.nodeType&&n,s=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===a,u=o?i.Buffer:void 0,l=u?u.allocUnsafe:void 0;t.exports=r},{"./_root":436}],363:[function(e,t,n){function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}var i=e("./_cloneArrayBuffer");t.exports=r},{"./_cloneArrayBuffer":361}],364:[function(e,t,n){function r(e,t,n){return a(t?n(s(e),o):s(e),i,new e.constructor)}var i=e("./_addMapEntry"),a=e("./_arrayReduce"),s=e("./_mapToArray"),o=1;t.exports=r},{"./_addMapEntry":294,"./_arrayReduce":304,"./_mapToArray":426}],365:[function(e,t,n){function r(e){var t=new e.constructor(e.source,i.exec(e));return t.lastIndex=e.lastIndex,t}var i=/\w*$/;t.exports=r},{}],366:[function(e,t,n){function r(e,t,n){return a(t?n(s(e),o):s(e),i,new e.constructor)}var i=e("./_addSetEntry"),a=e("./_arrayReduce"),s=e("./_setToArray"),o=1;t.exports=r},{"./_addSetEntry":295,"./_arrayReduce":304,"./_setToArray":439}],367:[function(e,t,n){function r(e){return s?Object(s.call(e)):{}}var i=e("./_Symbol"),a=i?i.prototype:void 0,s=a?a.valueOf:void 0;t.exports=r},{"./_Symbol":291}],368:[function(e,t,n){function r(e,t){var n=t?i(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}var i=e("./_cloneArrayBuffer");t.exports=r},{"./_cloneArrayBuffer":361}],369:[function(e,t,n){function r(e,t){if(e!==t){var n=void 0!==e,r=null===e,a=e===e,s=i(e),o=void 0!==t,u=null===t,l=t===t,c=i(t);if(!u&&!c&&!s&&e>t||s&&o&&l&&!u&&!c||r&&o&&l||!n&&l||!a)return 1;if(!r&&!s&&!c&&e=u)return l;return l*("desc"==n[r]?-1:1)}}return e.index-t.index}var i=e("./_compareAscending");t.exports=r},{"./_compareAscending":369}],371:[function(e,t,n){function r(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n1?n[i-1]:void 0,o=i>2?n[2]:void 0;for(s=e.length>3&&"function"==typeof s?(i--,s):void 0,o&&a(n[0],n[1],o)&&(s=i<3?void 0:s,i=1),t=Object(t);++r-1?o[u?t[l]:l]:void 0}}var i=e("./_baseIteratee"),a=e("./isArrayLike"),s=e("./keys");t.exports=r},{"./_baseIteratee":335,"./isArrayLike":476,"./keys":491}],380:[function(e,t,n){var r=e("./_Set"),i=e("./noop"),a=e("./_setToArray"),s=1/0,o=r&&1/a(new r([,-0]))[1]==s?function(e){return new r(e)}:i;t.exports=o},{"./_Set":288,"./_setToArray":439,"./noop":496}],381:[function(e,t,n){function r(e,t,n,r){return void 0===e||i(e,a[n])&&!s.call(r,n)?t:e}var i=e("./eq"),a=Object.prototype,s=a.hasOwnProperty;t.exports=r},{"./eq":462}],382:[function(e,t,n){var r=e("./_getNative"),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(e){}}();t.exports=i},{"./_getNative":391}],383:[function(e,t,n){function r(e,t,n,r,l,c){var p=n&o,f=e.length,h=t.length;if(f!=h&&!(p&&h>f))return!1;var d=c.get(e);if(d&&c.get(t))return d==t;var y=-1,m=!0,b=n&u?new i:void 0;for(c.set(e,t),c.set(t,e);++y-1&&e%1==0&&e-1}var i=e("./_assocIndexOf");t.exports=r},{"./_assocIndexOf":309}],420:[function(e,t,n){function r(e,t){var n=this.__data__,r=i(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}var i=e("./_assocIndexOf");t.exports=r},{"./_assocIndexOf":309}],421:[function(e,t,n){function r(){this.size=0,this.__data__={hash:new i,map:new(s||a),string:new i}}var i=e("./_Hash"),a=e("./_ListCache"),s=e("./_Map");t.exports=r},{"./_Hash":283,"./_ListCache":284,"./_Map":285}],422:[function(e,t,n){function r(e){var t=i(this,e).delete(e);return this.size-=t?1:0,t}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],423:[function(e,t,n){function r(e){return i(this,e).get(e)}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],424:[function(e,t,n){function r(e){return i(this,e).has(e)}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],425:[function(e,t,n){function r(e,t){var n=i(this,e),r=n.size;return n.set(e,t),this.size+=n.size==r?0:1,this}var i=e("./_getMapData");t.exports=r},{"./_getMapData":389}],426:[function(e,t,n){function r(e){var t=-1,n=Array(e.size);return e.forEach(function(e,r){n[++t]=[r,e]}),n}t.exports=r},{}],427:[function(e,t,n){function r(e,t){return function(n){return null!=n&&(n[e]===t&&(void 0!==t||e in Object(n)))}}t.exports=r},{}],428:[function(e,t,n){function r(e){var t=i(e,function(e){return n.size===a&&n.clear(),e}),n=t.cache;return t}var i=e("./memoize"),a=500;t.exports=r},{"./memoize":494}],429:[function(e,t,n){var r=e("./_getNative"),i=r(Object,"create");t.exports=i},{"./_getNative":391}],430:[function(e,t,n){var r=e("./_overArg"),i=r(Object.keys,Object);t.exports=i},{"./_overArg":434}],431:[function(e,t,n){function r(e){var t=[];if(null!=e)for(var n in Object(e))t.push(n);return t}t.exports=r},{}],432:[function(e,t,n){var r=e("./_freeGlobal"),i="object"==typeof n&&n&&!n.nodeType&&n,a=i&&"object"==typeof t&&t&&!t.nodeType&&t,s=a&&a.exports===i,o=s&&r.process,u=function(){try{return o&&o.binding&&o.binding("util")}catch(e){}}();t.exports=u},{"./_freeGlobal":386}],433:[function(e,t,n){function r(e){return a.call(e)}var i=Object.prototype,a=i.toString;t.exports=r},{}],434:[function(e,t,n){function r(e,t){return function(n){return e(t(n))}}t.exports=r},{}],435:[function(e,t,n){function r(e,t,n){return t=a(void 0===t?e.length-1:t,0),function(){for(var r=arguments,s=-1,o=a(r.length-t,0),u=Array(o);++s0){if(++t>=i)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}var i=800,a=16,s=Date.now;t.exports=r},{}],442:[function(e,t,n){function r(){this.__data__=new i,this.size=0}var i=e("./_ListCache");t.exports=r},{"./_ListCache":284}],443:[function(e,t,n){function r(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n}t.exports=r},{}],444:[function(e,t,n){function r(e){return this.__data__.get(e)}t.exports=r},{}],445:[function(e,t,n){function r(e){return this.__data__.has(e)}t.exports=r},{}],446:[function(e,t,n){function r(e,t){var n=this.__data__;if(n instanceof i){var r=n.__data__;if(!a||r.length-1:!!c&&i(e,t,n)>-1}var i=e("./_baseIndexOf"),a=e("./isArrayLike"),s=e("./isString"),o=e("./toInteger"),u=e("./values"),l=Math.max;t.exports=r},{"./_baseIndexOf":326,"./isArrayLike":476,"./isString":488,"./toInteger":504,"./values":510}],474:[function(e,t,n){var r=e("./_baseIsArguments"),i=e("./isObjectLike"),a=Object.prototype,s=a.hasOwnProperty,o=a.propertyIsEnumerable,u=r(function(){return arguments}())?r:function(e){return i(e)&&s.call(e,"callee")&&!o.call(e,"callee")};t.exports=u},{"./_baseIsArguments":327,"./isObjectLike":485}],475:[function(e,t,n){var r=Array.isArray;t.exports=r},{}],476:[function(e,t,n){function r(e){return null!=e&&a(e.length)&&!i(e)}var i=e("./isFunction"),a=e("./isLength");t.exports=r},{"./isFunction":480,"./isLength":482}],477:[function(e,t,n){function r(e){return a(e)&&i(e)}var i=e("./isArrayLike"),a=e("./isObjectLike");t.exports=r},{"./isArrayLike":476,"./isObjectLike":485}],478:[function(e,t,n){function r(e){return e===!0||e===!1||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Boolean]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],479:[function(e,t,n){var r=e("./_root"),i=e("./stubFalse"),a="object"==typeof n&&n&&!n.nodeType&&n,s=a&&"object"==typeof t&&t&&!t.nodeType&&t,o=s&&s.exports===a,u=o?r.Buffer:void 0,l=u?u.isBuffer:void 0,c=l||i;t.exports=c},{"./_root":436,"./stubFalse":502}],480:[function(e,t,n){function r(e){if(!a(e))return!1;var t=i(e);return t==o||t==u||t==s||t==l}var i=e("./_baseGetTag"),a=e("./isObject"),s="[object AsyncFunction]",o="[object Function]",u="[object GeneratorFunction]",l="[object Proxy]";t.exports=r},{"./_baseGetTag":323,"./isObject":484}],481:[function(e,t,n){function r(e){return"number"==typeof e&&e==i(e)}var i=e("./toInteger");t.exports=r},{"./toInteger":504}],482:[function(e,t,n){function r(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=i}var i=9007199254740991;t.exports=r},{}],483:[function(e,t,n){function r(e){return"number"==typeof e||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Number]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],484:[function(e,t,n){function r(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}t.exports=r},{}],485:[function(e,t,n){function r(e){return null!=e&&"object"==typeof e}t.exports=r},{}],486:[function(e,t,n){function r(e){if(!s(e)||i(e)!=o)return!1;var t=a(e);if(null===t)return!0;var n=p.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&c.call(n)==f}var i=e("./_baseGetTag"),a=e("./_getPrototype"),s=e("./isObjectLike"),o="[object Object]",u=Function.prototype,l=Object.prototype,c=u.toString,p=l.hasOwnProperty,f=c.call(Object);t.exports=r},{"./_baseGetTag":323,"./_getPrototype":392,"./isObjectLike":485}],487:[function(e,t,n){var r=e("./_baseIsRegExp"),i=e("./_baseUnary"),a=e("./_nodeUtil"),s=a&&a.isRegExp,o=s?i(s):r;t.exports=o},{"./_baseIsRegExp":333,"./_baseUnary":353,"./_nodeUtil":432}],488:[function(e,t,n){function r(e){return"string"==typeof e||!a(e)&&s(e)&&i(e)==o}var i=e("./_baseGetTag"),a=e("./isArray"),s=e("./isObjectLike"),o="[object String]";t.exports=r},{"./_baseGetTag":323,"./isArray":475,"./isObjectLike":485}],489:[function(e,t,n){function r(e){return"symbol"==typeof e||a(e)&&i(e)==s}var i=e("./_baseGetTag"),a=e("./isObjectLike"),s="[object Symbol]";t.exports=r},{"./_baseGetTag":323,"./isObjectLike":485}],490:[function(e,t,n){var r=e("./_baseIsTypedArray"),i=e("./_baseUnary"),a=e("./_nodeUtil"),s=a&&a.isTypedArray,o=s?i(s):r;t.exports=o},{"./_baseIsTypedArray":334,"./_baseUnary":353,"./_nodeUtil":432}],491:[function(e,t,n){function r(e){return s(e)?i(e):a(e)}var i=e("./_arrayLikeKeys"),a=e("./_baseKeys"),s=e("./isArrayLike");t.exports=r},{"./_arrayLikeKeys":301,"./_baseKeys":336,"./isArrayLike":476}],492:[function(e,t,n){function r(e){return s(e)?i(e,!0):a(e)}var i=e("./_arrayLikeKeys"),a=e("./_baseKeysIn"),s=e("./isArrayLike");t.exports=r},{"./_arrayLikeKeys":301,"./_baseKeysIn":337,"./isArrayLike":476}],493:[function(e,t,n){function r(e,t){return(o(e)?i:s)(e,a(t,3))}var i=e("./_arrayMap"),a=e("./_baseIteratee"),s=e("./_baseMap"),o=e("./isArray");t.exports=r},{"./_arrayMap":302,"./_baseIteratee":335,"./_baseMap":338,"./isArray":475}],494:[function(e,t,n){function r(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError(a);var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var s=e.apply(this,r);return n.cache=a.set(i,s)||a,s};return n.cache=new(r.Cache||i),n}var i=e("./_MapCache"),a="Expected a function";r.Cache=i,t.exports=r},{"./_MapCache":286}],495:[function(e,t,n){var r=e("./_baseMerge"),i=e("./_createAssigner"),a=i(function(e,t,n,i){r(e,t,n,i)});t.exports=a},{"./_baseMerge":341,"./_createAssigner":376}],496:[function(e,t,n){function r(){}t.exports=r},{}],497:[function(e,t,n){function r(e){return s(e)?i(o(e)):a(e)}var i=e("./_baseProperty"),a=e("./_basePropertyDeep"),s=e("./_isKey"),o=e("./_toKey");t.exports=r},{"./_baseProperty":344,"./_basePropertyDeep":345,"./_isKey":411,"./_toKey":450}],498:[function(e,t,n){function r(e,t,n){return t=(n?a(e,t,n):void 0===t)?1:s(t),i(o(e),t)}var i=e("./_baseRepeat"),a=e("./_isIterateeCall"),s=e("./toInteger"),o=e("./toString");t.exports=r},{"./_baseRepeat":346,"./_isIterateeCall":410,"./toInteger":504,"./toString":507}],499:[function(e,t,n){var r=e("./_baseFlatten"),i=e("./_baseOrderBy"),a=e("./_baseRest"),s=e("./_isIterateeCall"),o=a(function(e,t){if(null==e)return[];var n=t.length;return n>1&&s(e,t[0],t[1])?t=[]:n>2&&s(t[0],t[1],t[2])&&(t=[t[0]]),i(e,r(t,1),[])});t.exports=o},{"./_baseFlatten":318,"./_baseOrderBy":343,"./_baseRest":347,"./_isIterateeCall":410}],500:[function(e,t,n){function r(e,t,n){return e=o(e),n=null==n?0:i(s(n),0,e.length),t=a(t),e.slice(n,n+t.length)==t}var i=e("./_baseClamp"),a=e("./_baseToString"),s=e("./toInteger"),o=e("./toString");t.exports=r},{"./_baseClamp":313,"./_baseToString":352,"./toInteger":504,"./toString":507}],501:[function(e,t,n){function r(){return[]}t.exports=r},{}],502:[function(e,t,n){function r(){return!1}t.exports=r},{}],503:[function(e,t,n){function r(e){if(!e)return 0===e?e:0;if(e=i(e),e===a||e===-a){return(e<0?-1:1)*s}return e===e?e:0}var i=e("./toNumber"),a=1/0,s=1.7976931348623157e308;t.exports=r},{"./toNumber":505}],504:[function(e,t,n){function r(e){var t=i(e),n=t%1;return t===t?n?t-n:t:0}var i=e("./toFinite");t.exports=r},{"./toFinite":503}],505:[function(e,t,n){function r(e){if("number"==typeof e)return e;if(a(e))return s;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=e.replace(o,"");var n=l.test(e);return n||c.test(e)?p(e.slice(2),n?2:8):u.test(e)?s:+e}var i=e("./isObject"),a=e("./isSymbol"),s=NaN,o=/^\s+|\s+$/g,u=/^[-+]0x[0-9a-f]+$/i,l=/^0b[01]+$/i,c=/^0o[0-7]+$/i,p=parseInt;t.exports=r},{"./isObject":484,"./isSymbol":489}],506:[function(e,t,n){function r(e){return i(e,a(e))}var i=e("./_copyObject"),a=e("./keysIn");t.exports=r},{"./_copyObject":372,"./keysIn":492}],507:[function(e,t,n){function r(e){return null==e?"":i(e)}var i=e("./_baseToString");t.exports=r},{"./_baseToString":352}],508:[function(e,t,n){function r(e,t,n){if(e=u(e),e&&(n||void 0===t))return e.replace(l,"");if(!e||!(t=i(t)))return e;var r=o(e);return a(r,0,s(r,o(t))+1).join("")}var i=e("./_baseToString"),a=e("./_castSlice"),s=e("./_charsEndIndex"),o=e("./_stringToArray"),u=e("./toString"),l=/\s+$/;t.exports=r},{"./_baseToString":352,"./_castSlice":359,"./_charsEndIndex":360,"./_stringToArray":448,"./toString":507}],509:[function(e,t,n){function r(e){return e&&e.length?i(e):[]}var i=e("./_baseUniq");t.exports=r},{"./_baseUniq":354}],510:[function(e,t,n){function r(e){return null==e?[]:i(e,a(e))}var i=e("./_baseValues"),a=e("./keys");t.exports=r},{"./_baseValues":355,"./keys":491}],511:[function(e,t,n){function r(e){return e.split("").reduce(function(e,t){return e[t]=!0,e},{})}function i(e,t){return t=t||{},function(n,r,i){return s(n,e,t)}}function a(e,t){e=e||{},t=t||{};var n={};return Object.keys(t).forEach(function(e){n[e]=t[e]}),Object.keys(e).forEach(function(t){n[t]=e[t]}),n}function s(e,t,n){if("string"!=typeof t)throw new TypeError("glob pattern string required");return n||(n={}),!(!n.nocomment&&"#"===t.charAt(0))&&(""===t.trim()?""===e:new o(t,n).match(e))}function o(e,t){if(!(this instanceof o))return new o(e,t);if("string"!=typeof e)throw new TypeError("glob pattern string required");t||(t={}),e=e.trim(),"/"!==m.sep&&(e=e.split(m.sep).join("/")),this.options=t,this.set=[],this.pattern=e,this.regexp=null,this.negate=!1,this.comment=!1,this.empty=!1,this.make()}function u(){if(!this._made){var e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate();var n=this.globSet=this.braceExpand();t.debug&&(this.debug=console.error),this.debug(this.pattern,n),n=this.globParts=n.map(function(e){return e.split(C)}),this.debug(this.pattern,n),n=n.map(function(e,t,n){return e.map(this.parse,this)},this),this.debug(this.pattern,n),n=n.filter(function(e){return e.indexOf(!1)===-1}),this.debug(this.pattern,n),this.set=n}}function l(){var e=this.pattern,t=!1,n=this.options,r=0;if(!n.nonegate){for(var i=0,a=e.length;i65536)throw new TypeError("pattern is too long");var r=this.options;if(!r.noglobstar&&"**"===e)return b;if(""===e)return"";for(var i,a,s="",o=!!r.nocase,u=!1,l=[],c=[],p=!1,f=-1,h=-1,y="."===e.charAt(0)?"":r.dot?"(?!(?:^|\\/)\\.{1,2}(?:$|\\/))":"(?!\\.)",m=this,g=0,E=e.length;g-1;P--){var j=c[P],B=s.slice(0,j.reStart),O=s.slice(j.reStart,j.reEnd-8),I=s.slice(j.reEnd-8,j.reEnd),N=s.slice(j.reEnd);I+=N;var L=B.split("(").length-1,M=N;for(g=0;g=0&&!(i=e[a]);a--);for(a=0;a>> no match, partial?",e,c,t,p),c!==s))}var h;if("string"==typeof u?(h=r.nocase?l.toLowerCase()===u.toLowerCase():l===u,this.debug("string match",u,l,h)):(h=l.match(u),this.debug("pattern match",u,l,h)),!h)return!1}if(i===s&&a===o)return!0;if(i===s)return n;if(a===o){return i===s-1&&""===e[i]}throw new Error("wtf?")}},{"brace-expansion":512,path:12}],512:[function(e,t,n){function r(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function i(e){return e.split("\\\\").join(y).split("\\{").join(m).split("\\}").join(b).split("\\,").join(g).split("\\.").join(v)}function a(e){return e.split(y).join("\\").split(m).join("{").split(b).join("}").split(g).join(",").split(v).join(".")}function s(e){if(!e)return[""];var t=[],n=d("{","}",e);if(!n)return e.split(",");var r=n.pre,i=n.body,a=n.post,o=r.split(",");o[o.length-1]+="{"+i+"}";var u=s(a);return a.length&&(o[o.length-1]+=u.shift(),o.push.apply(o,u)),t.push.apply(t,o),t}function o(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),f(i(e),!0).map(a)):[]}function u(e){return"{"+e+"}"}function l(e){return/^-?0\d/.test(e)}function c(e,t){return e<=t}function p(e,t){return e>=t}function f(e,t){var n=[],i=d("{","}",e);if(!i||/\$$/.test(i.pre))return[e];var a=/^-?\d+\.\.-?\d+(?:\.\.-?\d+)?$/.test(i.body),o=/^[a-zA-Z]\.\.[a-zA-Z](?:\.\.-?\d+)?$/.test(i.body),y=a||o,m=/^(.*,)+(.+)?$/.test(i.body);if(!y&&!m)return i.post.match(/,.*\}/)?(e=i.pre+"{"+i.body+b+i.post,f(e)):[e];var g;if(y)g=i.body.split(/\.\./);else if(g=s(i.body),1===g.length&&(g=f(g[0],!1).map(u),1===g.length)){var v=i.post.length?f(i.post,!1):[""];return v.map(function(e){return i.pre+g[0]+e})}var x,_=i.pre,v=i.post.length?f(i.post,!1):[""];if(y){var E=r(g[0]),A=r(g[1]),D=Math.max(g[0].length,g[1].length),C=3==g.length?Math.abs(r(g[2])):1,S=c;A0){var P=new Array(T+1).join("0");F=k<0?"-"+P+F.slice(1):P+F}}x.push(F)}}else x=h(g,function(e){return f(e,!1)});for(var j=0;j=0&&l>0){for(r=[],a=n.length;c>=0&&!o;)c==u?(r.push(c),u=n.indexOf(e,c+1)):1==r.length?o=[r.pop(),l]:(i=r.pop(),i=0?u:l;r.length&&(o=[a,s])}return o}t.exports=r,r.range=a},{}],514:[function(e,t,n){t.exports=function(e,t){for(var n=[],i=0;i=0&&e>1;return t?-n:n}var a=e("./base64"),s=5,o=1<>>=s,i>0&&(t|=l),n+=a.encode(t);while(i>0);return n},n.decode=function(e,t,n){var r,o,c=e.length,p=0,f=0;do{if(t>=c)throw new Error("Expected more digits in base 64 VLQ value.");if(o=a.decode(e.charCodeAt(t++)),o===-1)throw new Error("Invalid base64 digit: "+e.charAt(t-1));r=!!(o&l),o&=u,p+=o<0?t-u>1?r(u,t,i,a,s,o):o==n.LEAST_UPPER_BOUND?t1?r(e,u,i,a,s,o):o==n.LEAST_UPPER_BOUND?u:e<0?-1:e}n.GREATEST_LOWER_BOUND=1,n.LEAST_UPPER_BOUND=2,n.search=function(e,t,i,a){if(0===t.length)return-1;var s=r(-1,t.length,e,t,i,a||n.GREATEST_LOWER_BOUND);if(s<0)return-1;for(;s-1>=0&&0===i(t[s],t[s-1],!0);)--s;return s}},{}],521:[function(e,t,n){function r(e,t){var n=e.generatedLine,r=t.generatedLine,i=e.generatedColumn,s=t.generatedColumn;return r>n||r==n&&s>=i||a.compareByGeneratedPositionsInflated(e,t)<=0}function i(){this._array=[],this._sorted=!0,this._last={generatedLine:-1,generatedColumn:0}}var a=e("./util");i.prototype.unsortedForEach=function(e,t){this._array.forEach(e,t)},i.prototype.add=function(e){r(this._last,e)?(this._last=e,this._array.push(e)):(this._sorted=!1,this._array.push(e))},i.prototype.toArray=function(){return this._sorted||(this._array.sort(a.compareByGeneratedPositionsInflated),this._sorted=!0),this._array},n.MappingList=i},{"./util":526}],522:[function(e,t,n){function r(e,t,n){var r=e[t];e[t]=e[n],e[n]=r}function i(e,t){return Math.round(e+Math.random()*(t-e))}function a(e,t,n,s){if(n=0){var a=this._originalMappings[i];if(void 0===e.column)for(var s=a.originalLine;a&&a.originalLine===s;)r.push({line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i];else for(var l=a.originalColumn;a&&a.originalLine===t&&a.originalColumn==l;)r.push({line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}),a=this._originalMappings[++i]}return r},n.SourceMapConsumer=r,i.prototype=Object.create(r.prototype),i.prototype.consumer=r,i.fromSourceMap=function(e){var t=Object.create(i.prototype),n=t._names=l.fromArray(e._names.toArray(),!0),r=t._sources=l.fromArray(e._sources.toArray(),!0);t.sourceRoot=e._sourceRoot,t.sourcesContent=e._generateSourcesContent(t._sources.toArray(),t.sourceRoot),t.file=e._file;for(var s=e._mappings.toArray().slice(),u=t.__generatedMappings=[],c=t.__originalMappings=[],f=0,h=s.length;f1&&(n.source=y+i[1],y+=i[1],n.originalLine=h+i[2],h=n.originalLine,n.originalLine+=1,n.originalColumn=d+i[3],d=n.originalColumn,i.length>4&&(n.name=m+i[4],m+=i[4])),E.push(n),"number"==typeof n.originalLine&&_.push(n)}p(E,o.compareByGeneratedPositionsDeflated),this.__generatedMappings=E,p(_,o.compareByOriginalPositions),this.__originalMappings=_},i.prototype._findMapping=function(e,t,n,r,i,a){if(e[n]<=0)throw new TypeError("Line must be greater than or equal to 1, got "+e[n]);if(e[r]<0)throw new TypeError("Column must be greater than or equal to 0, got "+e[r]);return u.search(e,t,i,a)},i.prototype.computeColumnSpans=function(){for(var e=0;e=0){var i=this._generatedMappings[n];if(i.generatedLine===t.generatedLine){var a=o.getArg(i,"source",null);null!==a&&(a=this._sources.at(a),null!=this.sourceRoot&&(a=o.join(this.sourceRoot,a)));var s=o.getArg(i,"name",null);return null!==s&&(s=this._names.at(s)),{source:a,line:o.getArg(i,"originalLine",null),column:o.getArg(i,"originalColumn",null),name:s}}}return{source:null,line:null,column:null,name:null}},i.prototype.hasContentsOfAllSources=function(){return!!this.sourcesContent&&(this.sourcesContent.length>=this._sources.size()&&!this.sourcesContent.some(function(e){return null==e}))},i.prototype.sourceContentFor=function(e,t){if(!this.sourcesContent)return null;if(null!=this.sourceRoot&&(e=o.relative(this.sourceRoot,e)),this._sources.has(e))return this.sourcesContent[this._sources.indexOf(e)];var n;if(null!=this.sourceRoot&&(n=o.urlParse(this.sourceRoot))){var r=e.replace(/^file:\/\//,"");if("file"==n.scheme&&this._sources.has(r))return this.sourcesContent[this._sources.indexOf(r)];if((!n.path||"/"==n.path)&&this._sources.has("/"+e))return this.sourcesContent[this._sources.indexOf("/"+e)]}if(t)return null;throw new Error('"'+e+'" is not in the SourceMap.')},i.prototype.generatedPositionFor=function(e){var t=o.getArg(e,"source");if(null!=this.sourceRoot&&(t=o.relative(this.sourceRoot,t)),!this._sources.has(t))return{line:null,column:null,lastColumn:null};t=this._sources.indexOf(t);var n={source:t,originalLine:o.getArg(e,"line"),originalColumn:o.getArg(e,"column")},i=this._findMapping(n,this._originalMappings,"originalLine","originalColumn",o.compareByOriginalPositions,o.getArg(e,"bias",r.GREATEST_LOWER_BOUND));if(i>=0){var a=this._originalMappings[i];if(a.source===n.source)return{line:o.getArg(a,"generatedLine",null),column:o.getArg(a,"generatedColumn",null),lastColumn:o.getArg(a,"lastGeneratedColumn",null)}}return{line:null,column:null,lastColumn:null}},n.BasicSourceMapConsumer=i,s.prototype=Object.create(r.prototype),s.prototype.constructor=r,s.prototype._version=3,Object.defineProperty(s.prototype,"sources",{get:function(){for(var e=[],t=0;t0&&e.column>=0)||t||n||r)&&!(e&&"line"in e&&"column"in e&&t&&"line"in t&&"column"in t&&e.line>0&&e.column>=0&&t.line>0&&t.column>=0&&n))throw new Error("Invalid mapping: "+JSON.stringify({generated:e,source:n,original:t,name:r}))},r.prototype._serializeMappings=function(){for(var e,t,n,r,s=0,o=1,u=0,l=0,c=0,p=0,f="",h=this._mappings.toArray(),d=0,y=h.length;d0){if(!a.compareByGeneratedPositionsInflated(t,h[d-1]))continue;e+=","}e+=i.encode(t.generatedColumn-s),s=t.generatedColumn,null!=t.source&&(r=this._sources.indexOf(t.source),e+=i.encode(r-p),p=r,e+=i.encode(t.originalLine-1-l),l=t.originalLine-1,e+=i.encode(t.originalColumn-u),u=t.originalColumn,null!=t.name&&(n=this._names.indexOf(t.name),e+=i.encode(n-c),c=n)),f+=e}return f},r.prototype._generateSourcesContent=function(e,t){return e.map(function(e){if(!this._sourcesContents)return null;null!=t&&(e=a.relative(t,e));var n=a.toSetString(e);return Object.prototype.hasOwnProperty.call(this._sourcesContents,n)?this._sourcesContents[n]:null},this)},r.prototype.toJSON=function(){var e={version:this._version,sources:this._sources.toArray(),names:this._names.toArray(),mappings:this._serializeMappings()};return null!=this._file&&(e.file=this._file),null!=this._sourceRoot&&(e.sourceRoot=this._sourceRoot),this._sourcesContents&&(e.sourcesContent=this._generateSourcesContent(e.sources,e.sourceRoot)),e},r.prototype.toString=function(){return JSON.stringify(this.toJSON())},n.SourceMapGenerator=r},{"./array-set":517,"./base64-vlq":518,"./mapping-list":521,"./util":526}],525:[function(e,t,n){function r(e,t,n,r,i){this.children=[],this.sourceContents={},this.line=null==e?null:e,this.column=null==t?null:t,this.source=null==n?null:n,this.name=null==i?null:i,this[o]=!0,null!=r&&this.add(r)}var i=e("./source-map-generator").SourceMapGenerator,a=e("./util"),s=/(\r?\n)/,o="$$$isSourceNode$$$";r.fromStringWithSourceMap=function(e,t,n){function i(e,t){if(null===e||void 0===e.source)o.add(t);else{var i=n?a.join(n,e.source):e.source;o.add(new r(e.originalLine,e.originalColumn,i,t,e.name))}}var o=new r,u=e.split(s),l=function(){return u.shift()+(u.shift()||"")},c=1,p=0,f=null;return t.eachMapping(function(e){if(null!==f){if(!(c0&&(f&&i(f,l()),o.add(u.join(""))),t.sources.forEach(function(e){var r=t.sourceContentFor(e);null!=r&&(null!=n&&(e=a.join(n,e)),o.setSourceContent(e,r))}),o},r.prototype.add=function(e){if(Array.isArray(e))e.forEach(function(e){this.add(e)},this);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);e&&this.children.push(e)}return this},r.prototype.prepend=function(e){if(Array.isArray(e))for(var t=e.length-1;t>=0;t--)this.prepend(e[t]);else{if(!e[o]&&"string"!=typeof e)throw new TypeError("Expected a SourceNode, string, or an array of SourceNodes and strings. Got "+e);this.children.unshift(e)}return this},r.prototype.walk=function(e){for(var t,n=0,r=this.children.length;n0){for(t=[],n=0;n=0;c--)s=u[c],"."===s?u.splice(c,1):".."===s?l++:l>0&&(""===s?(u.splice(c+1,l),l=0):(u.splice(c,2),l--));return t=u.join("/"),""===t&&(t=o?"/":"."),r?(r.path=t,a(r)):t}function o(e,t){""===e&&(e="."),""===t&&(t=".");var n=i(t),r=i(e);if(r&&(e=r.path||"/"),n&&!n.scheme)return r&&(n.scheme=r.scheme),a(n);if(n||t.match(g))return t;if(r&&!r.host&&!r.path)return r.host=t,a(r);var o="/"===t.charAt(0)?t:s(e.replace(/\/+$/,"")+"/"+t);return r?(r.path=o,a(r)):o}function u(e,t){""===e&&(e="."),e=e.replace(/\/$/,"");for(var n=0;0!==t.indexOf(e+"/");){var r=e.lastIndexOf("/");if(r<0)return t;if(e=e.slice(0,r),e.match(/^([^\/]+:\/)?\/*$/))return t;++n}return Array(n+1).join("../")+t.substr(e.length+1)}function l(e){return e}function c(e){return f(e)?"$"+e:e}function p(e){return f(e)?e.slice(1):e}function f(e){if(!e)return!1;var t=e.length;if(t<9)return!1;if(95!==e.charCodeAt(t-1)||95!==e.charCodeAt(t-2)||111!==e.charCodeAt(t-3)||116!==e.charCodeAt(t-4)||111!==e.charCodeAt(t-5)||114!==e.charCodeAt(t-6)||112!==e.charCodeAt(t-7)||95!==e.charCodeAt(t-8)||95!==e.charCodeAt(t-9))return!1;for(var n=t-10;n>=0;n--)if(36!==e.charCodeAt(n))return!1;return!0}function h(e,t,n){var r=e.source-t.source;return 0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r||n?r:(r=e.generatedColumn-t.generatedColumn,0!==r?r:(r=e.generatedLine-t.generatedLine,0!==r?r:e.name-t.name))))}function d(e,t,n){var r=e.generatedLine-t.generatedLine;return 0!==r?r:(r=e.generatedColumn-t.generatedColumn,0!==r||n?r:(r=e.source-t.source,0!==r?r:(r=e.originalLine-t.originalLine,0!==r?r:(r=e.originalColumn-t.originalColumn,0!==r?r:e.name-t.name))))}function y(e,t){return e===t?0:e>t?1:-1}function m(e,t){var n=e.generatedLine-t.generatedLine;return 0!==n?n:(n=e.generatedColumn-t.generatedColumn,0!==n?n:(n=y(e.source,t.source),0!==n?n:(n=e.originalLine-t.originalLine,0!==n?n:(n=e.originalColumn-t.originalColumn,0!==n?n:y(e.name,t.name)))))}n.getArg=r;var b=/^(?:([\w+\-.]+):)?\/\/(?:(\w+:\w+)@)?([\w.]*)(?::(\d+))?(\S*)$/,g=/^data:.+\,.+$/;n.urlParse=i,n.urlGenerate=a,n.normalize=s,n.join=o,n.isAbsolute=function(e){return"/"===e.charAt(0)||!!e.match(b)},n.relative=u;var v=function(){return!("__proto__"in Object.create(null))}();n.toSetString=v?l:c,n.fromSetString=v?l:p,n.compareByOriginalPositions=h,n.compareByGeneratedPositionsDeflated=d,n.compareByGeneratedPositionsInflated=m},{}],527:[function(e,t,n){n.SourceMapGenerator=e("./lib/source-map-generator").SourceMapGenerator,n.SourceMapConsumer=e("./lib/source-map-consumer").SourceMapConsumer,n.SourceNode=e("./lib/source-node").SourceNode},{"./lib/source-map-consumer":523,"./lib/source-map-generator":524,"./lib/source-node":525}],528:[function(e,t,n){t.exports={name:"babel-core",version:"6.21.0",description:"Babel compiler core.",author:{name:"Sebastian McKenzie",email:"sebmck@gmail.com"},homepage:"https://babeljs.io/",license:"MIT",repository:{type:"git",url:"https://github.com/babel/babel/tree/master/packages/babel-core"},keywords:["6to5","babel","classes","const","es6","harmony","let","modules","transpile","transpiler","var","babel-core"],scripts:{bench:"make bench",test:"make test"},dependencies:{"babel-code-frame":"^6.20.0","babel-generator":"^6.21.0","babel-helpers":"^6.16.0","babel-messages":"^6.8.0","babel-template":"^6.16.0","babel-runtime":"^6.20.0","babel-register":"^6.18.0","babel-traverse":"^6.21.0","babel-types":"^6.21.0",babylon:"^6.11.0","convert-source-map":"^1.1.0",debug:"^2.1.1",json5:"^0.5.0",lodash:"^4.2.0",minimatch:"^3.0.2","path-is-absolute":"^1.0.0",private:"^0.1.6",slash:"^1.0.0","source-map":"^0.5.0"},devDependencies:{"babel-helper-fixtures":"^6.20.0","babel-helper-transform-fixture-test-runner":"^6.21.0","babel-polyfill":"^6.20.0"},_id:"babel-core@6.21.0",
+_shasum:"75525480c21c803f826ef3867d22c19f080a3724",_from:"babel-core@>=6.18.2 <7.0.0",_npmVersion:"3.10.8",_nodeVersion:"6.9.0",_npmUser:{name:"hzoo",email:"hi@henryzoo.com"},dist:{shasum:"75525480c21c803f826ef3867d22c19f080a3724",tarball:"https://registry.npmjs.org/babel-core/-/babel-core-6.21.0.tgz"},maintainers:[{name:"amasad",email:"amjad.masad@gmail.com"},{name:"hzoo",email:"hi@henryzoo.com"},{name:"jmm",email:"npm-public@jessemccarthy.net"},{name:"loganfsmyth",email:"loganfsmyth@gmail.com"},{name:"sebmck",email:"sebmck@gmail.com"},{name:"thejameskyle",email:"me@thejameskyle.com"}],_npmOperationalInternal:{host:"packages-12-west.internal.npmjs.com",tmp:"tmp/babel-core-6.21.0.tgz_1481925355362_0.2487682355567813"},directories:{},_resolved:"https://registry.npmjs.org/babel-core/-/babel-core-6.21.0.tgz",readme:"ERROR: No README data found!"}},{}],529:[function(e,t,n){function r(e,t,n){if(e){if(x.fixFaultyLocations(e,t),n){if(d.Node.check(e)&&d.SourceLocation.check(e.loc)){for(var i=n.length-1;i>=0&&!(_(n[i].loc.end,e.loc.start)<=0);--i);return void n.splice(i+1,0,e)}}else if(e[E])return e[E];var a;if(y.check(e))a=Object.keys(e);else{if(!m.check(e))return;a=h.getFieldNames(e)}n||Object.defineProperty(e,E,{value:n=[],enumerable:!1});for(var i=0,s=a.length;i>1,l=a[u];if(_(l.loc.start,t.loc.start)<=0&&_(t.loc.end,l.loc.end)<=0)return void i(t.enclosingNode=l,t,n);if(_(l.loc.end,t.loc.start)<=0){var c=l;s=u+1}else{if(!(_(t.loc.end,l.loc.start)<=0))throw new Error("Comment location overlaps with node location");var p=l;o=u}}c&&(t.precedingNode=c),p&&(t.followingNode=p)}function a(e,t){var n=e.length;if(0!==n){for(var r=e[0].precedingNode,i=e[0].followingNode,a=i.loc.start,s=n;s>0;--s){var u=e[s-1];f.strictEqual(u.precedingNode,r),f.strictEqual(u.followingNode,i);var c=t.sliceString(u.loc.end,a);if(/\S/.test(c))break;a=u.loc.start}for(;s<=n&&(u=e[s])&&("Line"===u.type||"CommentLine"===u.type)&&u.loc.start.column>i.loc.start.column;)++s;e.forEach(function(e,t){t0){var d=r[h-1];f.strictEqual(d.precedingNode===e.precedingNode,d.followingNode===e.followingNode),d.followingNode!==e.followingNode&&a(r,n)}r.push(e)}else if(s)a(r,n),l(s,e);else if(p)a(r,n),o(p,e);else{if(!c)throw new Error("AST contains no nodes at all?");a(r,n),u(c,e)}}),a(r,n),e.forEach(function(e){delete e.precedingNode,delete e.enclosingNode,delete e.followingNode})}},n.printComments=function(e,t){var n=e.getValue(),r=t(e),i=d.Node.check(n)&&h.getFieldValue(n,"comments");if(!i||0===i.length)return r;var a=[],s=[r];return e.each(function(e){var r=e.getValue(),i=h.getFieldValue(r,"leading"),o=h.getFieldValue(r,"trailing");i||o&&!d.Statement.check(n)&&"Block"!==r.type&&"CommentBlock"!==r.type?a.push(c(e,t)):o&&s.push(p(e,t))},"comments"),a.push.apply(a,s),v(a)}},{"./lines":531,"./types":537,"./util":538,assert:2,private:560}],530:[function(e,t,n){function r(e){o.ok(this instanceof r),this.stack=[e]}function i(e,t){for(var n=e.stack,r=n.length-1;r>=0;r-=2){var i=n[r];if(l.Node.check(i)&&--t<0)return i}return null}function a(e){return l.BinaryExpression.check(e)||l.LogicalExpression.check(e)}function s(e){return!!l.CallExpression.check(e)||(c.check(e)?e.some(s):!!l.Node.check(e)&&u.someField(e,function(e,t){return s(t)}))}var o=e("assert"),u=e("./types"),l=u.namedTypes,c=(l.Node,u.builtInTypes.array),p=u.builtInTypes.number,f=r.prototype;t.exports=r,r.from=function(e){if(e instanceof r)return e.copy();if(e instanceof u.NodePath){for(var t,n=Object.create(r.prototype),i=[e.value];t=e.parentPath;e=t)i.push(e.name,t.value);return n.stack=i.reverse(),n}return new r(e)},f.copy=function e(){var e=Object.create(r.prototype);return e.stack=this.stack.slice(0),e},f.getName=function(){var e=this.stack,t=e.length;return t>1?e[t-2]:null},f.getValue=function(){var e=this.stack;return e[e.length-1]},f.getNode=function(e){return i(this,~~e)},f.getParentNode=function(e){return i(this,~~e+1)},f.getRootValue=function(){var e=this.stack;return e.length%2===0?e[1]:e[0]},f.call=function(e){for(var t=this.stack,n=t.length,r=t[n-1],i=arguments.length,a=1;af)return!0;if(u===f&&"right"===n)return o.strictEqual(t.right,r),!0;default:return!1}case"SequenceExpression":switch(t.type){case"ReturnStatement":return!1;case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==n;default:return!0}case"YieldExpression":switch(t.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"IntersectionTypeAnnotation":case"UnionTypeAnnotation":return"NullableTypeAnnotation"===t.type;case"Literal":return"MemberExpression"===t.type&&p.check(r.value)&&"object"===n&&t.object===r;case"AssignmentExpression":case"ConditionalExpression":switch(t.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===n&&t.callee===r;case"ConditionalExpression":return"test"===n&&t.test===r;case"MemberExpression":return"object"===n&&t.object===r;default:return!1}case"ArrowFunctionExpression":return"CallExpression"===t.type&&"callee"===n||a(t);case"ObjectExpression":if("ArrowFunctionExpression"===t.type&&"body"===n)return!0;default:if("NewExpression"===t.type&&"callee"===n&&t.callee===r)return s(r)}return!(e===!0||this.canBeFirstInStatement()||!this.firstInStatement())};var h={};[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%","**"]].forEach(function(e,t){e.forEach(function(e){h[e]=t})}),f.canBeFirstInStatement=function(){var e=this.getNode();return!l.FunctionExpression.check(e)&&!l.ObjectExpression.check(e)},f.firstInStatement=function(){for(var e,t,n,r,i=this.stack,s=i.length-1;s>=0;s-=2)if(l.Node.check(i[s])&&(n=e,r=t,e=i[s-1],t=i[s]),t&&r){if(l.BlockStatement.check(t)&&"body"===e&&0===n)return o.strictEqual(t.body[0],r),!0;if(l.ExpressionStatement.check(t)&&"expression"===n)return o.strictEqual(t.expression,r),!0;if(l.SequenceExpression.check(t)&&"expressions"===e&&0===n)o.strictEqual(t.expressions[0],r);else if(l.CallExpression.check(t)&&"callee"===n)o.strictEqual(t.callee,r);else if(l.MemberExpression.check(t)&&"object"===n)o.strictEqual(t.object,r);else if(l.ConditionalExpression.check(t)&&"test"===n)o.strictEqual(t.test,r);else if(a(t)&&"left"===n)o.strictEqual(t.left,r);else{if(!l.UnaryExpression.check(t)||t.prefix||"argument"!==n)return!1;o.strictEqual(t.argument,r)}}return!0}},{"./types":537,assert:2}],531:[function(e,t,n){function r(e){return e[h]}function i(e,t){c.ok(this instanceof i),c.ok(e.length>0),t?y.assert(t):t=null,Object.defineProperty(this,h,{value:{infos:e,mappings:[],name:t,cachedSourceMap:null}}),t&&r(this).mappings.push(new b(this,{start:this.firstPos(),end:this.lastPos()}))}function a(e){return{line:e.line,indent:e.indent,locked:e.locked,sliceStart:e.sliceStart,sliceEnd:e.sliceEnd}}function s(e,t){for(var n=0,r=e.length,i=0;i0);var a=Math.ceil(n/t)*t;a===n?n+=t:n=a;break;case 11:case 12:case 13:case 65279:break;case 32:default:n+=1}return n}function o(e,t){if(e instanceof i)return e;e+="";var n=t&&t.tabWidth,r=e.indexOf("\t")<0,a=!(!t||!t.locked),o=!t&&r&&e.length<=_;if(c.ok(n||r,"No tab width specified but encountered tabs in string\n"+e),o&&x.call(v,e))return v[e];var u=new i(e.split(A).map(function(e){var t=E.exec(e)[0];return{line:e,indent:s(t,n),locked:a,sliceStart:t.length,sliceEnd:e.length}}),f(t).sourceFileName);return o&&(v[e]=u),u}function u(e){return!/\S/.test(e)}function l(e,t,n){var r=e.sliceStart,i=e.sliceEnd,a=Math.max(e.indent,0),s=a+i-r;return void 0===n&&(n=s),t=Math.max(t,0),n=Math.min(n,s),n=Math.max(n,t),n=0),c.ok(r<=i),c.strictEqual(s,a+i-r),e.indent===a&&e.sliceStart===r&&e.sliceEnd===i?e:{line:e.line,indent:a,locked:!1,sliceStart:r,sliceEnd:i}}var c=e("assert"),p=e("source-map"),f=e("./options").normalize,h=e("private").makeUniqueKey(),d=e("./types"),y=d.builtInTypes.string,m=e("./util").comparePos,b=e("./mapping");n.Lines=i;var g=i.prototype;Object.defineProperties(g,{length:{get:function(){return r(this).infos.length}},name:{get:function(){return r(this).name}}});var v={},x=v.hasOwnProperty,_=10;n.countSpaces=s;var E=/^\s*/,A=/\u000D\u000A|\u000D(?!\u000A)|\u000A|\u2028|\u2029/;n.fromString=o,g.toString=function(e){return this.sliceString(this.firstPos(),this.lastPos(),e)},g.getSourceMap=function(e,t){function n(n){return n=n||{},y.assert(e),n.file=e,t&&(y.assert(t),n.sourceRoot=t),n}if(!e)return null;var i=this,a=r(i);if(a.cachedSourceMap)return n(a.cachedSourceMap.toJSON());var s=new p.SourceMapGenerator(n()),o={};return a.mappings.forEach(function(e){for(var t=e.sourceLines.skipSpaces(e.sourceLoc.start)||e.sourceLines.lastPos(),n=i.skipSpaces(e.targetLoc.start)||i.lastPos();m(t,e.sourceLoc.end)<0&&m(n,e.targetLoc.end)<0;){var r=e.sourceLines.charAt(t),a=i.charAt(n);c.strictEqual(r,a);var u=e.sourceLines.name;if(s.addMapping({source:u,original:{line:t.line,column:t.column},generated:{line:n.line,column:n.column}}),!x.call(o,u)){var l=e.sourceLines.toString();s.setSourceContent(u,l),o[u]=l}i.nextPos(n,!0),e.sourceLines.nextPos(t,!0)}}),a.cachedSourceMap=s,s.toJSON()},g.bootstrapCharAt=function(e){c.strictEqual(typeof e,"object"),c.strictEqual(typeof e.line,"number"),c.strictEqual(typeof e.column,"number");var t=e.line,n=e.column,r=this.toString().split(A),i=r[t-1];return void 0===i?"":n===i.length&&t=i.length?"":i.charAt(n)},g.charAt=function(e){c.strictEqual(typeof e,"object"),c.strictEqual(typeof e.line,"number"),c.strictEqual(typeof e.column,"number");var t=e.line,n=e.column,i=r(this),a=i.infos,s=a[t-1],o=n;if(void 0===s||o<0)return"";var u=this.getIndentAt(t);return o=s.sliceEnd?"":s.line.charAt(o))},g.stripMargin=function(e,t){if(0===e)return this;if(c.ok(e>0,"negative margin: "+e),t&&1===this.length)return this;var n=r(this),s=new i(n.infos.map(function(n,r){return n.line&&(r>0||!t)&&(n=a(n),n.indent=Math.max(0,n.indent-e)),n}));if(n.mappings.length>0){var o=r(s).mappings;c.strictEqual(o.length,0),n.mappings.forEach(function(n){o.push(n.indent(e,t,!0))})}return s},g.indent=function(e){if(0===e)return this;var t=r(this),n=new i(t.infos.map(function(t){return t.line&&!t.locked&&(t=a(t),t.indent+=e),t}));if(t.mappings.length>0){var s=r(n).mappings;c.strictEqual(s.length,0),t.mappings.forEach(function(t){s.push(t.indent(e))})}return n},g.indentTail=function(e){if(0===e)return this;if(this.length<2)return this;var t=r(this),n=new i(t.infos.map(function(t,n){return n>0&&t.line&&!t.locked&&(t=a(t),t.indent+=e),t}));if(t.mappings.length>0){var s=r(n).mappings;c.strictEqual(s.length,0),t.mappings.forEach(function(t){s.push(t.indent(e,!0))})}return n},g.lockIndentTail=function(){return this.length<2?this:new i(r(this).infos.map(function(e,t){return e=a(e),e.locked=t>0,e}))},g.getIndentAt=function(e){c.ok(e>=1,"no line "+e+" (line numbers start from 1)");var t=r(this),n=t.infos[e-1];return Math.max(n.indent,0)},g.guessTabWidth=function(){var e=r(this);if(x.call(e,"cachedTabWidth"))return e.cachedTabWidth;for(var t=[],n=0,i=1,a=this.length;i<=a;++i){var s=e.infos[i-1];if(!u(s.line.slice(s.sliceStart,s.sliceEnd))){var o=Math.abs(s.indent-n);t[o]=~~t[o]+1,n=s.indent}}for(var l=-1,c=2,p=1;pl&&(l=t[p],c=p);return e.cachedTabWidth=c},g.isOnlyWhitespace=function(){return u(this.toString())},g.isPrecededOnlyByWhitespace=function(e){var t=r(this),n=t.infos[e.line-1],i=Math.max(n.indent,0),a=e.column-i;if(a<=0)return!0;var s=n.sliceStart,o=Math.min(s+a,n.sliceEnd);return u(n.line.slice(s,o))},g.getLineLength=function(e){var t=r(this),n=t.infos[e-1];return this.getIndentAt(e)+n.sliceEnd-n.sliceStart},g.nextPos=function(e,t){var n=Math.max(e.line,0);return Math.max(e.column,0)0){var o=r(s).mappings;c.strictEqual(o.length,0),n.mappings.forEach(function(n){var r=n.slice(this,e,t);r&&o.push(r)},this)}return s},g.bootstrapSliceString=function(e,t,n){return this.slice(e,t).toString(n)},g.sliceString=function(e,t,n){if(!t){if(!e)return this;t=this.lastPos()}n=f(n);for(var i=r(this).infos,a=[],o=n.tabWidth,c=e.line;c<=t.line;++c){var p=i[c-1];c===e.line?p=c===t.line?l(p,e.column,t.column):l(p,e.column):c===t.line&&(p=l(p,0,t.column));var h=Math.max(p.indent,0),d=p.line.slice(0,p.sliceStart);if(n.reuseWhitespace&&u(d)&&s(d,n.tabWidth)===h)a.push(p.line.slice(0,p.sliceEnd));else{var y=0,m=h;n.useTabs&&(y=Math.floor(h/o),m-=y*o);var b="";y>0&&(b+=new Array(y+1).join("\t")),m>0&&(b+=new Array(m+1).join(" ")),b+=p.line.slice(p.sliceStart,p.sliceEnd),a.push(b)}}return a.join(n.lineTerminator)},g.isEmpty=function(){return this.length<2&&this.getLineLength(1)<1},g.join=function(e){function t(e){if(null!==e){if(s){var t=e.infos[0],n=new Array(t.indent+1).join(" "),r=c.length,i=Math.max(s.indent,0)+s.sliceEnd-s.sliceStart;s.line=s.line.slice(0,s.sliceEnd)+n+t.line.slice(t.sliceStart,t.sliceEnd),s.locked=s.locked||t.locked,s.sliceEnd=s.line.length,e.mappings.length>0&&e.mappings.forEach(function(e){p.push(e.add(r,i))})}else e.mappings.length>0&&p.push.apply(p,e.mappings);e.infos.forEach(function(e,t){(!s||t>0)&&(s=a(e),c.push(s))})}}function n(e,n){n>0&&t(l),t(e)}var s,u=this,l=r(u),c=[],p=[];if(e.map(function(e){var t=o(e);return t.isEmpty()?null:r(t)}).forEach(u.isEmpty()?t:n),c.length<1)return D;var f=new i(c);return r(f).mappings=p,f},n.concat=function(e){return D.join(e)},g.concat=function(e){var t=arguments,n=[this];return n.push.apply(n,t),c.strictEqual(n.length,t.length+1),D.join(n)};var D=o("")},{"./mapping":532,"./options":533,"./types":537,"./util":538,assert:2,private:560,"source-map":571}],532:[function(e,t,n){function r(e,t,n){o.ok(this instanceof r),o.ok(e instanceof f.Lines),c.assert(t),n?o.ok(l.check(n.start.line)&&l.check(n.start.column)&&l.check(n.end.line)&&l.check(n.end.column)):n=t,Object.defineProperties(this,{sourceLines:{value:e},sourceLoc:{value:t},targetLoc:{value:n}})}function i(e,t,n){return{line:e.line+t-1,column:1===e.line?e.column+n:e.column}}function a(e,t,n){return{line:e.line-t+1,column:e.line===t?e.column-n:e.column}}function s(e,t,n,r,i){o.ok(e instanceof f.Lines),o.ok(n instanceof f.Lines),p.assert(t),p.assert(r),p.assert(i);var a=h(r,i);if(0===a)return t;if(a<0){var s=e.skipSpaces(t),u=n.skipSpaces(r),l=i.line-u.line;for(s.line+=l,u.line+=l,l>0?(s.column=0,u.column=0):o.strictEqual(l,0);h(u,i)<0&&n.nextPos(u,!0);)o.ok(e.nextPos(s,!0)),o.strictEqual(e.charAt(s),n.charAt(u))}else{var s=e.skipSpaces(t,!0),u=n.skipSpaces(r,!0),l=i.line-u.line;for(s.line+=l,u.line+=l,l<0?(s.column=e.getLineLength(s.line),u.column=n.getLineLength(u.line)):o.strictEqual(l,0);h(i,u)<0&&n.prevPos(u,!0);)o.ok(e.prevPos(s,!0)),o.strictEqual(e.charAt(s),n.charAt(u))}return s}var o=e("assert"),u=e("./types"),l=(u.builtInTypes.string,u.builtInTypes.number),c=u.namedTypes.SourceLocation,p=u.namedTypes.Position,f=e("./lines"),h=e("./util").comparePos,d=r.prototype;t.exports=r,d.slice=function(e,t,n){function i(r){var i=l[r],a=c[r],p=t;return"end"===r?p=n:o.strictEqual(r,"start"),s(u,i,e,a,p)}o.ok(e instanceof f.Lines),p.assert(t),n?p.assert(n):n=e.lastPos();var u=this.sourceLines,l=this.sourceLoc,c=this.targetLoc;if(h(t,c.start)<=0)if(h(c.end,n)<=0)c={start:a(c.start,t.line,t.column),end:a(c.end,t.line,t.column)};else{if(h(n,c.start)<=0)return null;l={start:l.start,end:i("end")},c={start:a(c.start,t.line,t.column),end:a(n,t.line,t.column)}}else{if(h(c.end,t)<=0)return null;h(c.end,n)<=0?(l={start:i("start"),end:l.end},c={start:{line:1,column:0},end:a(c.end,t.line,t.column)}):(l={start:i("start"),end:i("end")},c={start:{line:1,column:0},end:a(n,t.line,t.column)})}return new r(this.sourceLines,l,c)},d.add=function(e,t){return new r(this.sourceLines,this.sourceLoc,{start:i(this.targetLoc.start,e,t),end:i(this.targetLoc.end,e,t)})},d.subtract=function(e,t){return new r(this.sourceLines,this.sourceLoc,{start:a(this.targetLoc.start,e,t),end:a(this.targetLoc.end,e,t)})},d.indent=function(e,t,n){if(0===e)return this;var i=this.targetLoc,a=i.start.line,s=i.end.line;if(t&&1===a&&1===s)return this;if(i={start:i.start,end:i.end},!t||a>1){var o=i.start.column+e;i.start={line:a,column:n?Math.max(0,o):o}}if(!t||s>1){var u=i.end.column+e;i.end={line:s,column:n?Math.max(0,u):u}}return new r(this.sourceLines,this.sourceLoc,i)}},{"./lines":531,"./types":537,"./util":538,assert:2}],533:[function(e,t,n){var r={parser:e("esprima"),tabWidth:4,useTabs:!1,reuseWhitespace:!0,lineTerminator:e("os").EOL,wrapColumn:74,sourceFileName:null,sourceMapName:null,sourceRoot:null,inputSourceMap:null,range:!1,tolerant:!0,quote:null,trailingComma:!1,arrayBracketSpacing:!1,objectCurlySpacing:!0,arrowParensAlways:!1,flowObjectCommas:!0},i=r.hasOwnProperty;n.normalize=function(e){function t(t){return i.call(e,t)?e[t]:r[t]}return e=e||r,{tabWidth:+t("tabWidth"),useTabs:!!t("useTabs"),reuseWhitespace:!!t("reuseWhitespace"),lineTerminator:t("lineTerminator"),wrapColumn:Math.max(t("wrapColumn"),0),sourceFileName:t("sourceFileName"),sourceMapName:t("sourceMapName"),sourceRoot:t("sourceRoot"),inputSourceMap:t("inputSourceMap"),parser:t("esprima")||t("parser"),range:t("range"),tolerant:t("tolerant"),quote:t("quote"),trailingComma:t("trailingComma"),arrayBracketSpacing:t("arrayBracketSpacing"),objectCurlySpacing:t("objectCurlySpacing"),arrowParensAlways:t("arrowParensAlways"),flowObjectCommas:t("flowObjectCommas")}}},{esprima:559,os:11}],534:[function(e,t,n){function r(e){i.ok(this instanceof r),this.lines=e,this.indent=0}var i=e("assert"),a=e("./types"),s=(a.namedTypes,a.builders),o=a.builtInTypes.object,u=a.builtInTypes.array,l=(a.builtInTypes.function,e("./patcher").Patcher,e("./options").normalize),c=e("./lines").fromString,p=e("./comments").attach,f=e("./util");n.parse=function(e,t){t=l(t);var n=c(e,t),i=n.toString({tabWidth:t.tabWidth,reuseWhitespace:!1,useTabs:!1}),a=[],o=t.parser.parse(i,{jsx:!0,loc:!0,locations:!0,range:t.range,comment:!0,onComment:a,tolerant:t.tolerant,ecmaVersion:6,sourceType:"module"});f.fixFaultyLocations(o,n),o.loc=o.loc||{start:n.firstPos(),end:n.lastPos()},o.loc.lines=n,o.loc.indent=0;var u=f.getTrueLoc(o,n);o.loc.start=u.start,o.loc.end=u.end,o.comments&&(a=o.comments,delete o.comments);var h=o;if("Program"===h.type){var h=s.file(o);h.loc={lines:n,indent:0,start:n.firstPos(),end:n.lastPos()}}else"File"===h.type&&(o=h.program);return p(a,o.body.length?h.program:h,n),new r(n).copy(h)},r.prototype.copy=function(e){if(u.check(e))return e.map(this.copy,this);if(!o.check(e))return e;f.fixFaultyLocations(e,this.lines);var t=Object.create(Object.getPrototypeOf(e),{original:{value:e,configurable:!1,enumerable:!1,writable:!0}}),n=e.loc,r=this.indent,i=r;n&&(("Block"===e.type||"Line"===e.type||"CommentBlock"===e.type||"CommentLine"===e.type||this.lines.isPrecededOnlyByWhitespace(n.start))&&(i=this.indent=n.start.column),n.lines=this.lines,n.indent=i);for(var a=Object.keys(e),s=a.length,l=0;l0||(r(i,e.start),a.push(e.lines),i=e.end)}),r(i,t.end),m.concat(a)}}function i(e){var t=[];return e.comments&&e.comments.length>0&&e.comments.forEach(function(e){(e.leading||e.trailing)&&t.push(e)}),t}function a(e,t,n){var r=_.copyPos(t.start),i=e.prevPos(r)&&e.charAt(r),a=n.charAt(n.firstPos());return i&&w.test(i)&&a&&w.test(a)}function s(e,t,n){var r=e.charAt(t.end),i=n.lastPos(),a=n.prevPos(i)&&n.charAt(i);return a&&w.test(a)&&r&&w.test(r)}function o(e,t){var n=e.getValue();g.assert(n);var r=n.original;if(g.assert(r),y.deepEqual(t,[]),n.type!==r.type)return!1;var i=new A(r),a=d(e,i,t);return a||(t.length=0),a}function u(e,t,n){var r=e.getValue();return r===t.getValue()||(C.check(r)?l(e,t,n):!!D.check(r)&&c(e,t,n))}function l(e,t,n){var r=e.getValue(),i=t.getValue();C.assert(r);var a=r.length;if(!C.check(i)||i.length!==a)return!1;for(var s=0;s0&&o.forEach(function(e){var t=e.oldPath.getValue();y.ok(t.leading||t.trailing),r.replace(t.loc,n(e.newPath).indentTail(t.loc.indent))}),u},k.deleteComments=function(e){if(e.comments){var t=this;e.comments.forEach(function(n){n.leading?t.replace({start:n.loc.start,end:e.loc.lines.skipSpaces(n.loc.end,!1,!1)},""):n.trailing&&t.replace({start:e.loc.lines.skipSpaces(n.loc.start,!0,!1),end:n.loc.end},"")})}},n.getReprinter=function(e){y.ok(e instanceof A);var t=e.getValue();if(g.check(t)){var n=t.original,i=n&&n.loc,u=i&&i.lines,l=[];if(u&&o(e,l))return function(e){var t=new r(u);return l.forEach(function(n){var r=n.newPath.getValue(),i=n.oldPath.getValue();x.assert(i.loc,!0);var o=!t.tryToReprintComments(r,i,e);o&&t.deleteComments(i);var l=e(n.newPath,o).indentTail(i.loc.indent),c=a(u,i.loc,l),p=s(u,i.loc,l);if(c||p){var f=[];c&&f.push(" "),f.push(l),p&&f.push(" "),l=m.concat(f)}t.replace(i.loc,l)}),t.get(i).indentTail(-n.loc.indent)}}};var F={line:1,column:0},T=/\S/},{"./fast-path":530,"./lines":531,"./types":537,"./util":538,assert:2}],536:[function(e,t,n){function r(e,t){A.ok(this instanceof r),j.assert(e),this.code=e,t&&(B.assert(t),this.map=t)}function i(e){function t(e){return A.ok(e instanceof O),D(e,n)}function n(e,n){if(n)return t(e);if(A.ok(e instanceof O),!c){var r=p.tabWidth,i=e.getNode().loc;if(i&&i.lines&&i.lines.guessTabWidth){p.tabWidth=i.lines.guessTabWidth();var a=o(e);return p.tabWidth=r,a}}return o(e)}function o(e){var t=F(e);return t?a(e,t(n)):u(e)}function u(e,n){return n?D(e,u):s(e,p,t)}function l(e){return s(e,p,l)}A.ok(this instanceof i);var c=e&&e.tabWidth,p=k(e);A.notStrictEqual(p,e),p.sourceFileName=null,this.print=function(e){if(!e)return M;var t=n(O.from(e),!0);return new r(t.toString(p),I.composeSourceMaps(p.inputSourceMap,t.getSourceMap(p.sourceMapName,p.sourceRoot)))},this.printGenerically=function(e){if(!e)return M;var t=O.from(e),n=p.reuseWhitespace;p.reuseWhitespace=!1;var i=new r(l(t).toString(p));return p.reuseWhitespace=n,i}}function a(e,t){return e.needsParens()?w(["(",t,")"]):t}function s(e,t,n){A.ok(e instanceof O);var r=e.getValue(),i=[],a=!1,s=o(e,t,n);return!r||s.isEmpty()?s:(r.decorators&&r.decorators.length>0&&!I.getParentExportDeclaration(e)?e.each(function(e){i.push(n(e),"\n")},"decorators"):I.isExportDeclaration(r)&&r.declaration&&r.declaration.decorators?e.each(function(e){i.push(n(e),"\n")},"declaration","decorators"):a=e.needsParens(),a&&i.unshift("("),i.push(s),a&&i.push(")"),w(i))}function o(e,t,n){var r=e.getValue();if(!r)return S("");if("string"==typeof r)return S(r,t);P.Printable.assert(r);var i=[];switch(r.type){case"File":return e.call(n,"program");case"Program":return r.directives&&e.each(function(e){i.push(n(e),";\n")},"directives"),i.push(e.call(function(e){return u(e,t,n)},"body")),w(i);case"Noop":case"EmptyStatement":return S("");case"ExpressionStatement":return w([e.call(n,"expression"),";"]);case"ParenthesizedExpression":return w(["(",e.call(n,"expression"),")"]);case"BinaryExpression":case"LogicalExpression":case"AssignmentExpression":return S(" ").join([e.call(n,"left"),r.operator,e.call(n,"right")]);case"AssignmentPattern":return w([e.call(n,"left")," = ",e.call(n,"right")]);case"MemberExpression":i.push(e.call(n,"object"));var a=e.call(n,"property");return r.computed?i.push("[",a,"]"):i.push(".",a),w(i);case"MetaProperty":return w([e.call(n,"meta"),".",e.call(n,"property")]);case"BindExpression":return r.object&&i.push(e.call(n,"object")),i.push("::",e.call(n,"callee")),w(i);case"Path":return S(".").join(r.body);case"Identifier":return w([S(r.name,t),e.call(n,"typeAnnotation")]);case"SpreadElement":case"SpreadElementPattern":case"RestProperty":case"SpreadProperty":case"SpreadPropertyPattern":case"RestElement":return w(["...",e.call(n,"argument")]);case"FunctionDeclaration":case"FunctionExpression":return r.async&&i.push("async "),i.push("function"),r.generator&&i.push("*"),r.id&&i.push(" ",e.call(n,"id"),e.call(n,"typeParameters")),i.push("(",h(e,t,n),")",e.call(n,"returnType")," ",e.call(n,"body")),w(i);case"ArrowFunctionExpression":return r.async&&i.push("async "),r.typeParameters&&i.push(e.call(n,"typeParameters")),t.arrowParensAlways||1!==r.params.length||r.rest||"Identifier"!==r.params[0].type||r.params[0].typeAnnotation||r.returnType?i.push("(",h(e,t,n),")",e.call(n,"returnType")):i.push(e.call(n,"params",0)),i.push(" => ",e.call(n,"body")),w(i);case"MethodDefinition":return r.static&&i.push("static "),i.push(c(e,t,n)),w(i);case"YieldExpression":return i.push("yield"),r.delegate&&i.push("*"),r.argument&&i.push(" ",e.call(n,"argument")),w(i);case"AwaitExpression":return i.push("await"),r.all&&i.push("*"),r.argument&&i.push(" ",e.call(n,"argument")),w(i);case"ModuleDeclaration":return i.push("module",e.call(n,"id")),r.source?(A.ok(!r.body),i.push("from",e.call(n,"source"))):i.push(e.call(n,"body")),S(" ").join(i);case"ImportSpecifier":return r.imported?(i.push(e.call(n,"imported")),r.local&&r.local.name!==r.imported.name&&i.push(" as ",e.call(n,"local"))):r.id&&(i.push(e.call(n,"id")),r.name&&i.push(" as ",e.call(n,"name"))),w(i)
+;case"ExportSpecifier":return r.local?(i.push(e.call(n,"local")),r.exported&&r.exported.name!==r.local.name&&i.push(" as ",e.call(n,"exported"))):r.id&&(i.push(e.call(n,"id")),r.name&&i.push(" as ",e.call(n,"name"))),w(i);case"ExportBatchSpecifier":return S("*");case"ImportNamespaceSpecifier":return i.push("* as "),r.local?i.push(e.call(n,"local")):r.id&&i.push(e.call(n,"id")),w(i);case"ImportDefaultSpecifier":return r.local?e.call(n,"local"):e.call(n,"id");case"ExportDeclaration":case"ExportDefaultDeclaration":case"ExportNamedDeclaration":return y(e,t,n);case"ExportAllDeclaration":return i.push("export *"),r.exported&&i.push(" as ",e.call(n,"exported")),i.push(" from ",e.call(n,"source")),w(i);case"ExportNamespaceSpecifier":return w(["* as ",e.call(n,"exported")]);case"ExportDefaultSpecifier":return e.call(n,"exported");case"ImportDeclaration":if(i.push("import "),r.importKind&&"value"!==r.importKind&&i.push(r.importKind+" "),r.specifiers&&r.specifiers.length>0){var s=!1;e.each(function(e){e.getName()>0&&i.push(", ");var r=e.getValue();P.ImportDefaultSpecifier.check(r)||P.ImportNamespaceSpecifier.check(r)?A.strictEqual(s,!1):(P.ImportSpecifier.assert(r),s||(s=!0,i.push(t.objectCurlySpacing?"{ ":"{"))),i.push(n(e))},"specifiers"),s&&i.push(t.objectCurlySpacing?" }":"}"),i.push(" from ")}return i.push(e.call(n,"source"),";"),w(i);case"BlockStatement":var o=e.call(function(e){return u(e,t,n)},"body");return!o.isEmpty()||r.directives&&0!==r.directives.length?(i.push("{\n"),r.directives&&e.each(function(e){i.push(n(e).indent(t.tabWidth),";",r.directives.length>1||!o.isEmpty()?"\n":"")},"directives"),i.push(o.indent(t.tabWidth)),i.push("\n}"),w(i)):S("{}");case"ReturnStatement":if(i.push("return"),r.argument){var l=e.call(n,"argument");l.length>1&&P.JSXElement&&P.JSXElement.check(r.argument)?i.push(" (\n",l.indent(t.tabWidth),"\n)"):i.push(" ",l)}return i.push(";"),w(i);case"CallExpression":return w([e.call(n,"callee"),f(e,t,n)]);case"ObjectExpression":case"ObjectPattern":case"ObjectTypeAnnotation":var g=!1,x="ObjectTypeAnnotation"===r.type,E=t.flowObjectCommas?",":x?";":",",D=[];x&&D.push("indexers","callProperties"),D.push("properties");var C=0;D.forEach(function(e){C+=r[e].length});var k=x&&1===C||0===C,F=r.exact?"{|":"{",T=r.exact?"|}":"}";i.push(k?F:F+"\n");var j=i.length-1,B=0;return D.forEach(function(r){e.each(function(e){var r=n(e);k||(r=r.indent(t.tabWidth));var a=!x&&r.length>1;a&&g&&i.push("\n"),i.push(r),B0&&i.push(" "):r=r.indent(t.tabWidth),i.push(r),(n1?i.push(S(",\n").join(L).indentTail(r.kind.length+1)):i.push(L[0]);var U=e.getParentNode();return P.ForStatement.check(U)||P.ForInStatement.check(U)||P.ForOfStatement&&P.ForOfStatement.check(U)||P.ForAwaitStatement&&P.ForAwaitStatement.check(U)||i.push(";"),w(i);case"VariableDeclarator":return r.init?S(" = ").join([e.call(n,"id"),e.call(n,"init")]):e.call(n,"id");case"WithStatement":return w(["with (",e.call(n,"object"),") ",e.call(n,"body")]);case"IfStatement":var V=b(e.call(n,"consequent"),t),i=["if (",e.call(n,"test"),")",V];return r.alternate&&i.push(v(V)?" else":"\nelse",b(e.call(n,"alternate"),t)),w(i);case"ForStatement":var G=e.call(n,"init"),q=G.length>1?";\n":"; ",K="for (",X=S(q).join([G,e.call(n,"test"),e.call(n,"update")]).indentTail(K.length),J=w([K,X,")"]),W=b(e.call(n,"body"),t),i=[J];return J.length>1&&(i.push("\n"),W=W.trimLeft()),i.push(W),w(i);case"WhileStatement":return w(["while (",e.call(n,"test"),")",b(e.call(n,"body"),t)]);case"ForInStatement":return w([r.each?"for each (":"for (",e.call(n,"left")," in ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"ForOfStatement":return w(["for (",e.call(n,"left")," of ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"ForAwaitStatement":return w(["for await (",e.call(n,"left")," of ",e.call(n,"right"),")",b(e.call(n,"body"),t)]);case"DoWhileStatement":var z=w(["do",b(e.call(n,"body"),t)]),i=[z];return v(z)?i.push(" while"):i.push("\nwhile"),i.push(" (",e.call(n,"test"),");"),w(i);case"DoExpression":return w(["do {\n",e.call(function(e){return u(e,t,n)},"body").indent(t.tabWidth),"\n}"]);case"BreakStatement":return i.push("break"),r.label&&i.push(" ",e.call(n,"label")),i.push(";"),w(i);case"ContinueStatement":return i.push("continue"),r.label&&i.push(" ",e.call(n,"label")),i.push(";"),w(i);case"LabeledStatement":return w([e.call(n,"label"),":\n",e.call(n,"body")]);case"TryStatement":return i.push("try ",e.call(n,"block")),r.handler?i.push(" ",e.call(n,"handler")):r.handlers&&e.each(function(e){i.push(" ",n(e))},"handlers"),r.finalizer&&i.push(" finally ",e.call(n,"finalizer")),w(i);case"CatchClause":return i.push("catch (",e.call(n,"param")),r.guard&&i.push(" if ",e.call(n,"guard")),i.push(") ",e.call(n,"body")),w(i);case"ThrowStatement":return w(["throw ",e.call(n,"argument"),";"]);case"SwitchStatement":return w(["switch (",e.call(n,"discriminant"),") {\n",S("\n").join(e.map(n,"cases")),"\n}"]);case"SwitchCase":return r.test?i.push("case ",e.call(n,"test"),":"):i.push("default:"),r.consequent.length>0&&i.push("\n",e.call(function(e){return u(e,t,n)},"consequent").indent(t.tabWidth)),w(i);case"DebuggerStatement":return S("debugger;");case"JSXAttribute":return i.push(e.call(n,"name")),r.value&&i.push("=",e.call(n,"value")),w(i);case"JSXIdentifier":return S(r.name,t);case"JSXNamespacedName":return S(":").join([e.call(n,"namespace"),e.call(n,"name")]);case"JSXMemberExpression":return S(".").join([e.call(n,"object"),e.call(n,"property")]);case"JSXSpreadAttribute":return w(["{...",e.call(n,"argument"),"}"]);case"JSXExpressionContainer":return w(["{",e.call(n,"expression"),"}"]);case"JSXElement":var Y=e.call(n,"openingElement");if(r.openingElement.selfClosing)return A.ok(!r.closingElement),Y;return w([Y,w(e.map(function(e){var t=e.getValue();if(P.Literal.check(t)&&"string"==typeof t.value){if(/\S/.test(t.value))return t.value.replace(/^\s+|\s+$/g,"");if(/\n/.test(t.value))return"\n"}return n(e)},"children")).indentTail(t.tabWidth),e.call(n,"closingElement")]);case"JSXOpeningElement":i.push("<",e.call(n,"name"));var H=[];e.each(function(e){H.push(" ",n(e))},"attributes");var $=w(H);return($.length>1||$.getLineLength(1)>t.wrapColumn)&&(H.forEach(function(e,t){" "===e&&(A.strictEqual(t%2,0),H[t]="\n")}),$=w(H).indentTail(t.tabWidth)),i.push($,r.selfClosing?" />":">"),w(i);case"JSXClosingElement":return w([""]);case"JSXText":return S(r.value,t);case"JSXEmptyExpression":return S("");case"TypeAnnotatedIdentifier":return w([e.call(n,"annotation")," ",e.call(n,"identifier")]);case"ClassBody":return 0===r.body.length?S("{}"):w(["{\n",e.call(function(e){return u(e,t,n)},"body").indent(t.tabWidth),"\n}"]);case"ClassPropertyDefinition":return i.push("static ",e.call(n,"definition")),P.MethodDefinition.check(r.definition)||i.push(";"),w(i);case"ClassProperty":r.static&&i.push("static ");var O=e.call(n,"key");return r.computed?O=w(["[",O,"]"]):"plus"===r.variance?O=w(["+",O]):"minus"===r.variance&&(O=w(["-",O])),i.push(O),r.typeAnnotation&&i.push(e.call(n,"typeAnnotation")),r.value&&i.push(" = ",e.call(n,"value")),i.push(";"),w(i);case"ClassDeclaration":case"ClassExpression":return i.push("class"),r.id&&i.push(" ",e.call(n,"id"),e.call(n,"typeParameters")),r.superClass&&i.push(" extends ",e.call(n,"superClass"),e.call(n,"superTypeParameters")),r.implements&&r.implements.length>0&&i.push(" implements ",S(", ").join(e.map(n,"implements"))),i.push(" ",e.call(n,"body")),w(i);case"TemplateElement":return S(r.value.raw,t).lockIndentTail();case"TemplateLiteral":var Q=e.map(n,"expressions");return i.push("`"),e.each(function(e){var t=e.getName();i.push(n(e)),t ":": ",e.call(n,"returnType")),w(i);case"FunctionTypeParam":return w([e.call(n,"name"),r.optional?"?":"",": ",e.call(n,"typeAnnotation")]);case"GenericTypeAnnotation":return w([e.call(n,"id"),e.call(n,"typeParameters")]);case"DeclareInterface":i.push("declare ");case"InterfaceDeclaration":return i.push(S("interface ",t),e.call(n,"id"),e.call(n,"typeParameters")," "),r.extends&&i.push("extends ",S(", ").join(e.map(n,"extends"))),i.push(" ",e.call(n,"body")),w(i);case"ClassImplements":case"InterfaceExtends":return w([e.call(n,"id"),e.call(n,"typeParameters")]);case"IntersectionTypeAnnotation":return S(" & ").join(e.map(n,"types"));case"NullableTypeAnnotation":return w(["?",e.call(n,"typeAnnotation")]);case"NullLiteralTypeAnnotation":return S("null",t);case"ThisTypeAnnotation":return S("this",t);case"NumberTypeAnnotation":return S("number",t);case"ObjectTypeCallProperty":return e.call(n,"value");case"ObjectTypeIndexer":var te="plus"===r.variance?"+":"minus"===r.variance?"-":"";return w([te,"[",e.call(n,"id"),": ",e.call(n,"key"),"]: ",e.call(n,"value")]);case"ObjectTypeProperty":var te="plus"===r.variance?"+":"minus"===r.variance?"-":"";return w([te,e.call(n,"key"),r.optional?"?":"",": ",e.call(n,"value")]);case"QualifiedTypeIdentifier":return w([e.call(n,"qualification"),".",e.call(n,"id")]);case"StringLiteralTypeAnnotation":return S(_(r.value,t),t);case"NumberLiteralTypeAnnotation":return A.strictEqual(typeof r.value,"number"),S(""+r.value,t);case"StringTypeAnnotation":return S("string",t);case"DeclareTypeAlias":i.push("declare ");case"TypeAlias":return w(["type ",e.call(n,"id"),e.call(n,"typeParameters")," = ",e.call(n,"right"),";"]);case"TypeCastExpression":return w(["(",e.call(n,"expression"),e.call(n,"typeAnnotation"),")"]);case"TypeParameterDeclaration":case"TypeParameterInstantiation":return w(["<",S(", ").join(e.map(n,"params")),">"]);case"TypeParameter":switch(r.variance){case"plus":i.push("+");break;case"minus":i.push("-")}return i.push(e.call(n,"name")),r.bound&&i.push(e.call(n,"bound")),r.default&&i.push("=",e.call(n,"default")),w(i);case"TypeofTypeAnnotation":return w([S("typeof ",t),e.call(n,"argument")]);case"UnionTypeAnnotation":return S(" | ").join(e.map(n,"types"));case"VoidTypeAnnotation":return S("void",t);case"NullTypeAnnotation":return S("null",t);case"ClassHeritage":case"ComprehensionBlock":case"ComprehensionExpression":case"Glob":case"GeneratorExpression":case"LetStatement":case"LetExpression":case"GraphExpression":case"GraphIndexExpression":case"XMLDefaultDeclaration":case"XMLAnyName":case"XMLQualifiedIdentifier":case"XMLFunctionQualifiedIdentifier":case"XMLAttributeSelector":case"XMLFilterExpression":case"XML":case"XMLElement":case"XMLList":case"XMLEscape":case"XMLText":case"XMLStartTag":case"XMLEndTag":case"XMLPointTag":case"XMLName":case"XMLAttribute":case"XMLCdata":case"XMLComment":case"XMLProcessingInstruction":default:throw new Error("unknown type: "+JSON.stringify(r.type))}return p}function u(e,t,n){var r=(P.ClassBody&&P.ClassBody.check(e.getParentNode()),[]),i=!1,a=!1;e.each(function(e){var t=(e.getName(),e.getValue());t&&"EmptyStatement"!==t.type&&(P.Comment.check(t)?i=!0:P.Statement.check(t)?a=!0:j.assert(t),r.push({node:t,printed:n(e)}))}),i&&A.strictEqual(a,!1,"Comments may appear as statements in otherwise empty statement lists, but may not coexist with non-Comment nodes.");var s=null,o=r.length,u=[];return r.forEach(function(e,n){var r,i,a=e.printed,c=e.node,p=a.length>1,f=n>0,h=nn.length?r:n}function c(e,t,n){var r=e.getNode(),i=r.kind,a=[];"ObjectMethod"===r.type||"ClassMethod"===r.type?r.value=r:P.FunctionExpression.assert(r.value),r.value.async&&a.push("async "),i&&"init"!==i&&"method"!==i&&"constructor"!==i?(A.ok("get"===i||"set"===i),a.push(i," ")):r.value.generator&&a.push("*");var s=e.call(n,"key");return r.computed&&(s=w(["[",s,"]"])),a.push(s,e.call(n,"value","typeParameters"),"(",e.call(function(e){return h(e,t,n)},"value"),")",e.call(n,"value","returnType")," ",e.call(n,"value","body")),w(a)}function f(e,t,n){var r=e.map(n,"arguments"),i=I.isTrailingCommaEnabled(t,"parameters"),a=S(", ").join(r);return a.getLineLength(1)>t.wrapColumn?(a=S(",\n").join(r),w(["(\n",a.indent(t.tabWidth),i?",\n)":"\n)"])):w(["(",a,")"])}function h(e,t,n){var r=e.getValue();P.Function.assert(r);var i=e.map(n,"params");r.defaults&&e.each(function(e){var t=e.getName(),r=i[t];r&&e.getValue()&&(i[t]=w([r," = ",n(e)]))},"defaults"),r.rest&&i.push(w(["...",e.call(n,"rest")]));var a=S(", ").join(i);return a.length>1||a.getLineLength(1)>t.wrapColumn?(a=S(",\n").join(i),a=w(I.isTrailingCommaEnabled(t,"parameters")&&!r.rest&&"RestElement"!==r.params[r.params.length-1].type?[a,",\n"]:[a,"\n"]),w(["\n",a.indent(t.tabWidth)])):a}function d(e,t,n){var r=e.getValue(),i=[];if(r.async&&i.push("async "),r.generator&&i.push("*"),r.method||"get"===r.kind||"set"===r.kind)return c(e,t,n);var a=e.call(n,"key");return r.computed?i.push("[",a,"]"):i.push(a),i.push("(",h(e,t,n),")",e.call(n,"returnType")," ",e.call(n,"body")),w(i)}function y(e,t,n){var r=e.getValue(),i=["export "],a=t.objectCurlySpacing;P.Declaration.assert(r),(r.default||"ExportDefaultDeclaration"===r.type)&&i.push("default "),r.declaration?i.push(e.call(n,"declaration")):r.specifiers&&r.specifiers.length>0&&(1===r.specifiers.length&&"ExportBatchSpecifier"===r.specifiers[0].type?i.push("*"):i.push(a?"{ ":"{",S(", ").join(e.map(n,"specifiers")),a?" }":"}"),r.source&&i.push(" from ",e.call(n,"source")));var s=w(i);return";"===g(s)||r.declaration&&("FunctionDeclaration"===r.declaration.type||"ClassDeclaration"===r.declaration.type)||(s=w([s,";"])),s}function m(e,t){var n=I.getParentExportDeclaration(e);return n?A.strictEqual(n.type,"DeclareExportDeclaration"):t.unshift("declare "),w(t)}function b(e,t){return w(e.length>1?[" ",e]:["\n",E(e).indent(t.tabWidth)])}function g(e){var t=e.lastPos();do{var n=e.charAt(t);if(/\S/.test(n))return n}while(e.prevPos(t))}function v(e){return"}"===g(e)}function x(e){return e.replace(/['"]/g,function(e){return'"'===e?"'":'"'})}function _(e,t){switch(j.assert(e),t.quote){case"auto":var n=JSON.stringify(e),r=x(JSON.stringify(x(e)));return n.length>r.length?r:n;case"single":return x(JSON.stringify(x(e)));case"double":default:return JSON.stringify(e)}}function E(e){var t=g(e);return!t||"\n};".indexOf(t)<0?w([e,";"]):e}var A=e("assert"),D=(e("source-map"),e("./comments").printComments),C=e("./lines"),S=C.fromString,w=C.concat,k=e("./options").normalize,F=e("./patcher").getReprinter,T=e("./types"),P=T.namedTypes,j=T.builtInTypes.string,B=T.builtInTypes.object,O=e("./fast-path"),I=e("./util"),N=r.prototype,L=!1;N.toString=function(){return L||(console.warn("Deprecation warning: recast.print now returns an object with a .code property. You appear to be treating the object as a string, which might still work but is strongly discouraged."),L=!0),this.code};var M=new r("");n.Printer=i},{"./comments":529,"./fast-path":530,"./lines":531,"./options":533,"./patcher":535,"./types":537,"./util":538,assert:2,"source-map":571}],537:[function(e,t,n){t.exports=e("ast-types")},{"ast-types":558}],538:[function(e,t,n){function r(){for(var e={},t=arguments.length,n=0;n",">=","<<",">>",">>>","+","-","*","/","%","&","|","^","in","instanceof","..");i("BinaryExpression").bases("Expression").build("operator","left","right").field("operator",c).field("left",i("Expression")).field("right",i("Expression"));var p=a("=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","|=","^=","&=");i("AssignmentExpression").bases("Expression").build("operator","left","right").field("operator",p).field("left",i("Pattern")).field("right",i("Expression"));var f=a("++","--");i("UpdateExpression").bases("Expression").build("operator","argument","prefix").field("operator",f).field("argument",i("Expression")).field("prefix",Boolean);var h=a("||","&&");i("LogicalExpression").bases("Expression").build("operator","left","right").field("operator",h).field("left",i("Expression")).field("right",i("Expression")),i("ConditionalExpression").bases("Expression").build("test","consequent","alternate").field("test",i("Expression")).field("consequent",i("Expression")).field("alternate",i("Expression")),i("NewExpression").bases("Expression").build("callee","arguments").field("callee",i("Expression")).field("arguments",[i("Expression")]),i("CallExpression").bases("Expression").build("callee","arguments").field("callee",i("Expression")).field("arguments",[i("Expression")]),i("MemberExpression").bases("Expression").build("object","property","computed").field("object",i("Expression")).field("property",a(i("Identifier"),i("Expression"))).field("computed",Boolean,function(){var e=this.property.type;return"Literal"===e||"MemberExpression"===e||"BinaryExpression"===e}),i("Pattern").bases("Node"),i("SwitchCase").bases("Node").build("test","consequent").field("test",a(i("Expression"),null)).field("consequent",[i("Statement")]),i("Identifier").bases("Node","Expression","Pattern").build("name").field("name",String),i("Literal").bases("Node","Expression").build("value").field("value",a(String,Boolean,null,Number,RegExp)).field("regex",a({pattern:String,flags:String},null),function(){if(this.value instanceof RegExp){var e="";return this.value.ignoreCase&&(e+="i"),this.value.multiline&&(e+="m"),this.value.global&&(e+="g"),{pattern:this.value.source,flags:e}}return null}),i("Comment").bases("Printable").field("value",String).field("leading",Boolean,o.true).field("trailing",Boolean,o.false)}},{"../lib/shared":556,"../lib/types":557}],543:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or;r("XMLDefaultDeclaration").bases("Declaration").field("namespace",r("Expression")),r("XMLAnyName").bases("Expression"),r("XMLQualifiedIdentifier").bases("Expression").field("left",i(r("Identifier"),r("XMLAnyName"))).field("right",i(r("Identifier"),r("Expression"))).field("computed",Boolean),r("XMLFunctionQualifiedIdentifier").bases("Expression").field("right",i(r("Identifier"),r("Expression"))).field("computed",Boolean),r("XMLAttributeSelector").bases("Expression").field("attribute",r("Expression")),r("XMLFilterExpression").bases("Expression").field("left",r("Expression")).field("right",r("Expression")),r("XMLElement").bases("XML","Expression").field("contents",[r("XML")]),r("XMLList").bases("XML","Expression").field("contents",[r("XML")]),r("XML").bases("Node"),r("XMLEscape").bases("XML").field("expression",r("Expression")),r("XMLText").bases("XML").field("text",String),r("XMLStartTag").bases("XML").field("contents",[r("XML")]),r("XMLEndTag").bases("XML").field("contents",[r("XML")]),r("XMLPointTag").bases("XML").field("contents",[r("XML")]),r("XMLName").bases("XML").field("contents",i(String,[r("XML")])),r("XMLAttribute").bases("XML").field("value",String),r("XMLCdata").bases("XML").field("contents",String),r("XMLComment").bases("XML").field("contents",String),r("XMLProcessingInstruction").bases("XML").field("target",String).field("contents",i(String,null))}},{"../lib/types":557,"./core":542}],544:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("Function").field("generator",Boolean,a.false).field("expression",Boolean,a.false).field("defaults",[i(r("Expression"),null)],a.emptyArray).field("rest",i(r("Identifier"),null),a.null),r("RestElement").bases("Pattern").build("argument").field("argument",r("Pattern")),r("SpreadElementPattern").bases("Pattern").build("argument").field("argument",r("Pattern")),r("FunctionDeclaration").build("id","params","body","generator","expression"),r("FunctionExpression").build("id","params","body","generator","expression"),r("ArrowFunctionExpression").bases("Function","Expression").build("params","body","expression").field("id",null,a.null).field("body",i(r("BlockStatement"),r("Expression"))).field("generator",!1,a.false),r("YieldExpression").bases("Expression").build("argument","delegate").field("argument",i(r("Expression"),null)).field("delegate",Boolean,a.false),r("GeneratorExpression").bases("Expression").build("body","blocks","filter").field("body",r("Expression")).field("blocks",[r("ComprehensionBlock")]).field("filter",i(r("Expression"),null)),r("ComprehensionExpression").bases("Expression").build("body","blocks","filter").field("body",r("Expression")).field("blocks",[r("ComprehensionBlock")]).field("filter",i(r("Expression"),null)),r("ComprehensionBlock").bases("Node").build("left","right","each").field("left",r("Pattern")).field("right",r("Expression")).field("each",Boolean),r("Property").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("value",i(r("Expression"),r("Pattern"))).field("method",Boolean,a.false).field("shorthand",Boolean,a.false).field("computed",Boolean,a.false),r("PropertyPattern").bases("Pattern").build("key","pattern").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("pattern",r("Pattern")).field("computed",Boolean,a.false),r("ObjectPattern").bases("Pattern").build("properties").field("properties",[i(r("PropertyPattern"),r("Property"))]),r("ArrayPattern").bases("Pattern").build("elements").field("elements",[i(r("Pattern"),null)]),r("MethodDefinition").bases("Declaration").build("kind","key","value","static").field("kind",i("constructor","method","get","set")).field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("value",r("Function")).field("computed",Boolean,a.false).field("static",Boolean,a.false),r("SpreadElement").bases("Node").build("argument").field("argument",r("Expression")),r("ArrayExpression").field("elements",[i(r("Expression"),r("SpreadElement"),r("RestElement"),null)]),r("NewExpression").field("arguments",[i(r("Expression"),r("SpreadElement"))]),r("CallExpression").field("arguments",[i(r("Expression"),r("SpreadElement"))]),r("AssignmentPattern").bases("Pattern").build("left","right").field("left",r("Pattern")).field("right",r("Expression"));var s=i(r("MethodDefinition"),r("VariableDeclarator"),r("ClassPropertyDefinition"),r("ClassProperty"));r("ClassProperty").bases("Declaration").build("key").field("key",i(r("Literal"),r("Identifier"),r("Expression"))).field("computed",Boolean,a.false),r("ClassPropertyDefinition").bases("Declaration").build("definition").field("definition",s),r("ClassBody").bases("Declaration").build("body").field("body",[s]),r("ClassDeclaration").bases("Declaration").build("id","body","superClass").field("id",i(r("Identifier"),null)).field("body",r("ClassBody")).field("superClass",i(r("Expression"),null),a.null),r("ClassExpression").bases("Expression").build("id","body","superClass").field("id",i(r("Identifier"),null),a.null).field("body",r("ClassBody")).field("superClass",i(r("Expression"),null),a.null).field("implements",[r("ClassImplements")],a.emptyArray),r("ClassImplements").bases("Node").build("id").field("id",r("Identifier")).field("superClass",i(r("Expression"),null),a.null),r("Specifier").bases("Node"),r("ModuleSpecifier").bases("Specifier").field("local",i(r("Identifier"),null),a.null).field("id",i(r("Identifier"),null),a.null).field("name",i(r("Identifier"),null),a.null),r("TaggedTemplateExpression").bases("Expression").build("tag","quasi").field("tag",r("Expression")).field("quasi",r("TemplateLiteral")),r("TemplateLiteral").bases("Expression").build("quasis","expressions").field("quasis",[r("TemplateElement")]).field("expressions",[r("Expression")]),r("TemplateElement").bases("Node").build("value","tail").field("value",{cooked:String,raw:String}).field("tail",Boolean)}},{"../lib/shared":556,"../lib/types":557,"./core":542}],545:[function(e,t,n){t.exports=function(t){t.use(e("./es6"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=(n.builtInTypes,t.use(e("../lib/shared")).defaults);r("Function").field("async",Boolean,a.false),r("SpreadProperty").bases("Node").build("argument").field("argument",r("Expression")),r("ObjectExpression").field("properties",[i(r("Property"),r("SpreadProperty"))]),r("SpreadPropertyPattern").bases("Pattern").build("argument").field("argument",r("Pattern")),r("ObjectPattern").field("properties",[i(r("Property"),r("PropertyPattern"),r("SpreadPropertyPattern"))]),r("AwaitExpression").bases("Expression").build("argument","all").field("argument",i(r("Expression"),null)).field("all",Boolean,a.false)}},{"../lib/shared":556,"../lib/types":557,"./es6":544}],546:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=t.use(e("../lib/shared")).defaults,i=n.Type.def,a=n.Type.or;i("VariableDeclaration").field("declarations",[a(i("VariableDeclarator"),i("Identifier"))]),i("Property").field("value",a(i("Expression"),i("Pattern"))),i("ArrayPattern").field("elements",[a(i("Pattern"),i("SpreadElement"),null)]),i("ObjectPattern").field("properties",[a(i("Property"),i("PropertyPattern"),i("SpreadPropertyPattern"),i("SpreadProperty"))]),i("ExportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ExportBatchSpecifier").bases("Specifier").build(),i("ImportSpecifier").bases("ModuleSpecifier").build("id","name"),i("ImportNamespaceSpecifier").bases("ModuleSpecifier").build("id"),i("ImportDefaultSpecifier").bases("ModuleSpecifier").build("id"),i("ExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",a(i("Declaration"),i("Expression"),null)).field("specifiers",[a(i("ExportSpecifier"),i("ExportBatchSpecifier"))],r.emptyArray).field("source",a(i("Literal"),null),r.null),i("ImportDeclaration").bases("Declaration").build("specifiers","source").field("specifiers",[a(i("ImportSpecifier"),i("ImportNamespaceSpecifier"),i("ImportDefaultSpecifier"))],r.emptyArray).field("source",i("Literal")),i("Block").bases("Comment").build("value","leading","trailing"),i("Line").bases("Comment").build("value","leading","trailing")}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],547:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("Type").bases("Node"),r("AnyTypeAnnotation").bases("Type").build(),r("EmptyTypeAnnotation").bases("Type").build(),r("MixedTypeAnnotation").bases("Type").build(),r("VoidTypeAnnotation").bases("Type").build(),r("NumberTypeAnnotation").bases("Type").build(),r("NumberLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Number).field("raw",String),r("StringTypeAnnotation").bases("Type").build(),r("StringLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",String).field("raw",String),r("BooleanTypeAnnotation").bases("Type").build(),r("BooleanLiteralTypeAnnotation").bases("Type").build("value","raw").field("value",Boolean).field("raw",String),r("TypeAnnotation").bases("Node").build("typeAnnotation").field("typeAnnotation",r("Type")),r("NullableTypeAnnotation").bases("Type").build("typeAnnotation").field("typeAnnotation",r("Type")),r("NullLiteralTypeAnnotation").bases("Type").build(),r("NullTypeAnnotation").bases("Type").build(),r("ThisTypeAnnotation").bases("Type").build(),r("ExistsTypeAnnotation").bases("Type").build(),r("ExistentialTypeParam").bases("Type").build(),r("FunctionTypeAnnotation").bases("Type").build("params","returnType","rest","typeParameters").field("params",[r("FunctionTypeParam")]).field("returnType",r("Type")).field("rest",i(r("FunctionTypeParam"),null)).field("typeParameters",i(r("TypeParameterDeclaration"),null)),r("FunctionTypeParam").bases("Node").build("name","typeAnnotation","optional").field("name",r("Identifier")).field("typeAnnotation",r("Type")).field("optional",Boolean),r("ArrayTypeAnnotation").bases("Type").build("elementType").field("elementType",r("Type")),r("ObjectTypeAnnotation").bases("Type").build("properties","indexers","callProperties").field("properties",[r("ObjectTypeProperty")]).field("indexers",[r("ObjectTypeIndexer")],a.emptyArray).field("callProperties",[r("ObjectTypeCallProperty")],a.emptyArray).field("exact",Boolean,a.false),r("ObjectTypeProperty").bases("Node").build("key","value","optional").field("key",i(r("Literal"),r("Identifier"))).field("value",r("Type")).field("optional",Boolean).field("variance",i("plus","minus",null),a.null),r("ObjectTypeIndexer").bases("Node").build("id","key","value").field("id",r("Identifier")).field("key",r("Type")).field("value",r("Type")).field("variance",i("plus","minus",null),a.null),r("ObjectTypeCallProperty").bases("Node").build("value").field("value",r("FunctionTypeAnnotation")).field("static",Boolean,a.false),r("QualifiedTypeIdentifier").bases("Node").build("qualification","id").field("qualification",i(r("Identifier"),r("QualifiedTypeIdentifier"))).field("id",r("Identifier")),r("GenericTypeAnnotation").bases("Type").build("id","typeParameters").field("id",i(r("Identifier"),r("QualifiedTypeIdentifier"))).field("typeParameters",i(r("TypeParameterInstantiation"),null)),r("MemberTypeAnnotation").bases("Type").build("object","property").field("object",r("Identifier")).field("property",i(r("MemberTypeAnnotation"),r("GenericTypeAnnotation"))),r("UnionTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("IntersectionTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("TypeofTypeAnnotation").bases("Type").build("argument").field("argument",r("Type")),r("Identifier").field("typeAnnotation",i(r("TypeAnnotation"),null),a.null),r("TypeParameterDeclaration").bases("Node").build("params").field("params",[r("TypeParameter")]),r("TypeParameterInstantiation").bases("Node").build("params").field("params",[r("Type")]),r("TypeParameter").bases("Type").build("name","variance","bound").field("name",String).field("variance",i("plus","minus",null),a.null).field("bound",i(r("TypeAnnotation"),null),a.null),r("Function").field("returnType",i(r("TypeAnnotation"),null),a.null).field("typeParameters",i(r("TypeParameterDeclaration"),null),a.null),r("ClassProperty").build("key","value","typeAnnotation","static").field("value",i(r("Expression"),null)).field("typeAnnotation",i(r("TypeAnnotation"),null)).field("static",Boolean,a.false).field("variance",i("plus","minus",null),a.null),r("ClassImplements").field("typeParameters",i(r("TypeParameterInstantiation"),null),a.null),r("InterfaceDeclaration").bases("Declaration").build("id","body","extends").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterDeclaration"),null),a.null).field("body",r("ObjectTypeAnnotation")).field("extends",[r("InterfaceExtends")]),r("DeclareInterface").bases("InterfaceDeclaration").build("id","body","extends"),r("InterfaceExtends").bases("Node").build("id").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterInstantiation"),null)),r("TypeAlias").bases("Declaration").build("id","typeParameters","right").field("id",r("Identifier")).field("typeParameters",i(r("TypeParameterDeclaration"),null)).field("right",r("Type")),r("DeclareTypeAlias").bases("TypeAlias").build("id","typeParameters","right"),r("TypeCastExpression").bases("Expression").build("expression","typeAnnotation").field("expression",r("Expression")).field("typeAnnotation",r("TypeAnnotation")),r("TupleTypeAnnotation").bases("Type").build("types").field("types",[r("Type")]),r("DeclareVariable").bases("Statement").build("id").field("id",r("Identifier")),r("DeclareFunction").bases("Statement").build("id").field("id",r("Identifier")),r("DeclareClass").bases("InterfaceDeclaration").build("id"),r("DeclareModule").bases("Statement").build("id","body").field("id",i(r("Identifier"),r("Literal"))).field("body",r("BlockStatement")),r("DeclareModuleExports").bases("Statement").build("typeAnnotation").field("typeAnnotation",r("Type")),r("DeclareExportDeclaration").bases("Declaration").build("default","declaration","specifiers","source").field("default",Boolean).field("declaration",i(r("DeclareVariable"),r("DeclareFunction"),r("DeclareClass"),r("Type"),null)).field("specifiers",[i(r("ExportSpecifier"),r("ExportBatchSpecifier"))],a.emptyArray).field("source",i(r("Literal"),null),a.null)}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],548:[function(e,t,n){t.exports=function(t){t.use(e("./es7"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")).defaults;r("JSXAttribute").bases("Node").build("name","value").field("name",i(r("JSXIdentifier"),r("JSXNamespacedName"))).field("value",i(r("Literal"),r("JSXExpressionContainer"),null),a.null),r("JSXIdentifier").bases("Identifier").build("name").field("name",String),r("JSXNamespacedName").bases("Node").build("namespace","name").field("namespace",r("JSXIdentifier")).field("name",r("JSXIdentifier")),r("JSXMemberExpression").bases("MemberExpression").build("object","property").field("object",i(r("JSXIdentifier"),r("JSXMemberExpression"))).field("property",r("JSXIdentifier")).field("computed",Boolean,a.false);var s=i(r("JSXIdentifier"),r("JSXNamespacedName"),r("JSXMemberExpression"));r("JSXSpreadAttribute").bases("Node").build("argument").field("argument",r("Expression"));var o=[i(r("JSXAttribute"),r("JSXSpreadAttribute"))];r("JSXExpressionContainer").bases("Expression").build("expression").field("expression",r("Expression")),r("JSXElement").bases("Expression").build("openingElement","closingElement","children").field("openingElement",r("JSXOpeningElement")).field("closingElement",i(r("JSXClosingElement"),null),a.null).field("children",[i(r("JSXElement"),r("JSXExpressionContainer"),r("JSXText"),r("Literal"))],a.emptyArray).field("name",s,function(){return this.openingElement.name},!0).field("selfClosing",Boolean,function(){return this.openingElement.selfClosing},!0).field("attributes",o,function(){return this.openingElement.attributes},!0),r("JSXOpeningElement").bases("Node").build("name","attributes","selfClosing").field("name",s).field("attributes",o,a.emptyArray).field("selfClosing",Boolean,a.false),r("JSXClosingElement").bases("Node").build("name").field("name",s),r("JSXText").bases("Literal").build("value").field("value",String),r("JSXEmptyExpression").bases("Expression").build()}},{"../lib/shared":556,"../lib/types":557,"./es7":545}],549:[function(e,t,n){t.exports=function(t){t.use(e("./core"));var n=t.use(e("../lib/types")),r=n.Type.def,i=n.Type.or,a=t.use(e("../lib/shared")),s=a.geq,o=a.defaults;r("Function").field("body",i(r("BlockStatement"),r("Expression"))),r("ForInStatement").build("left","right","body","each").field("each",Boolean,o.false),r("ForOfStatement").bases("Statement").build("left","right","body").field("left",i(r("VariableDeclaration"),r("Expression"))).field("right",r("Expression")).field("body",r("Statement")),r("LetStatement").bases("Statement").build("head","body").field("head",[r("VariableDeclarator")]).field("body",r("Statement")),r("LetExpression").bases("Expression").build("head","body").field("head",[r("VariableDeclarator")]).field("body",r("Expression")),r("GraphExpression").bases("Expression").build("index","expression").field("index",s(0)).field("expression",r("Literal")),r("GraphIndexExpression").bases("Expression").build("index").field("index",s(0))}},{"../lib/shared":556,"../lib/types":557,"./core":542}],550:[function(e,t,n){t.exports=function(t){function n(e){var t=r.indexOf(e);return t===-1&&(t=r.length,r.push(e),i[t]=e(a)),i[t]}var r=[],i=[],a={};a.use=n;var s=n(e("./lib/types"));t.forEach(n),s.finalize();var o={Type:s.Type,builtInTypes:s.builtInTypes,namedTypes:s.namedTypes,builders:s.builders,defineMethod:s.defineMethod,getFieldNames:s.getFieldNames,getFieldValue:s.getFieldValue,eachField:s.eachField,someField:s.someField,getSupertypeNames:s.getSupertypeNames,astNodesAreEquivalent:n(e("./lib/equiv")),finalize:s.finalize,Path:n(e("./lib/path")),NodePath:n(e("./lib/node-path")),PathVisitor:n(e("./lib/path-visitor")),use:n};return o.visit=o.PathVisitor.visit,o}},{"./lib/equiv":551,"./lib/node-path":552,"./lib/path":554,"./lib/path-visitor":553,"./lib/types":557}],551:[function(e,t,n){t.exports=function(t){function n(e,t,n){return c.check(n)?n.length=0:n=null,i(e,t,n)}function r(e){return/[_$a-z][_$a-z0-9]*/i.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function i(e,t,n){return e===t||(c.check(e)?a(e,t,n):p.check(e)?s(e,t,n):f.check(e)?f.check(t)&&+e===+t:h.check(e)?h.check(t)&&e.source===t.source&&e.global===t.global&&e.multiline===t.multiline&&e.ignoreCase===t.ignoreCase:e==t)}function a(e,t,n){c.assert(e);var r=e.length;if(!c.check(t)||t.length!==r)return n&&n.push("length"),!1;for(var a=0;ao)return!0;if(t===o&&"right"===this.name){if(r.right!==n)throw new Error("Nodes must be equal");return!0}default:return!1}case"SequenceExpression":switch(r.type){case"ForStatement":return!1;case"ExpressionStatement":return"expression"!==this.name;default:return!0}case"YieldExpression":switch(r.type){case"BinaryExpression":case"LogicalExpression":case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"CallExpression":case"MemberExpression":case"NewExpression":case"ConditionalExpression":case"YieldExpression":return!0;default:return!1}case"Literal":return"MemberExpression"===r.type&&p.check(n.value)&&"object"===this.name&&r.object===n;case"AssignmentExpression":case"ConditionalExpression":switch(r.type){case"UnaryExpression":case"SpreadElement":case"SpreadProperty":case"BinaryExpression":case"LogicalExpression":return!0;case"CallExpression":return"callee"===this.name&&r.callee===n;case"ConditionalExpression":return"test"===this.name&&r.test===n;case"MemberExpression":return"object"===this.name&&r.object===n;default:return!1}default:if("NewExpression"===r.type&&"callee"===this.name&&r.callee===n)return i(n)}return!(e===!0||this.canBeFirstInStatement()||!this.firstInStatement())};var m={};return[["||"],["&&"],["|"],["^"],["&"],["==","===","!=","!=="],["<",">","<=",">=","in","instanceof"],[">>","<<",">>>"],["+","-"],["*","/","%"]].forEach(function(e,t){e.forEach(function(e){m[e]=t})}),y.canBeFirstInStatement=function(){var e=this.node;return!l.FunctionExpression.check(e)&&!l.ObjectExpression.check(e)},y.firstInStatement=function(){return a(this)},n}},{"./path":554,"./scope":555,"./types":557}],553:[function(e,t,n){var r=Object.prototype.hasOwnProperty;t.exports=function(t){function n(){if(!(this instanceof n))throw new Error("PathVisitor constructor cannot be invoked without 'new'");this._reusableContextStack=[],this._methodNameTable=i(this),this._shouldVisitComments=r.call(this._methodNameTable,"Block")||r.call(this._methodNameTable,"Line"),this.Context=o(this),this._visiting=!1,this._changeReported=!1}function i(e){var t=Object.create(null);for(var n in e)/^visit[A-Z]/.test(n)&&(t[n.slice("visit".length)]=!0);for(var r=l.computeSupertypeLookupTable(t),i=Object.create(null),t=Object.keys(r),a=t.length,s=0;s=0&&(a[e.name=s]=e)}else i[e.name]=e.value,a[e.name]=e;if(i[e.name]!==e.value)throw new Error("");if(e.parentPath.get(e.name)!==e)throw new Error("");return e}var l=t.use(e("./types")),c=l.builtInTypes.array,p=l.builtInTypes.number,f=n.prototype;return f.getValueProperty=function(e){return this.value[e]},f.get=function(e){for(var t=this,n=arguments,r=n.length,a=0;a=e},s+" >= "+e)},n.defaults={null:function(){return null},emptyArray:function(){return[]},false:function(){return!1},true:function(){return!0},undefined:function(){}};var o=i.or(a.string,a.number,a.boolean,a.null,a.undefined);return n.isPrimitive=new i(function(e){if(null===e)return!0;var t=typeof e;return!("object"===t||"function"===t)},o.toString()),n}},{"../lib/types":557}],557:[function(e,t,n){var r=Array.prototype,i=r.slice,a=(r.map,r.forEach,Object.prototype),s=a.toString,o=s.call(function(){}),u=s.call(""),l=a.hasOwnProperty;t.exports=function(){function e(t,n){var r=this;if(!(r instanceof e))throw new Error("Type constructor cannot be invoked without 'new'");if(s.call(t)!==o)throw new Error(t+" is not a function");var i=s.call(n);if(i!==o&&i!==u)throw new Error(n+" is neither a function nor a string");Object.defineProperties(r,{name:{value:n},check:{value:function(e,n){var i=t.call(r,e,n);return!i&&n&&s.call(n)===o&&n(r,e),i}}})}function t(e){return S.check(e)?"{"+Object.keys(e).map(function(t){return t+": "+e[t]}).join(", ")+"}":C.check(e)?"["+e.map(t).join(", ")+"]":JSON.stringify(e)}function n(t,n){var r=s.call(t),i=new e(function(e){return s.call(e)===r},n);return E[n]=i,t&&"function"==typeof t.constructor&&(x.push(t.constructor),_.push(i)),i}function r(t,n){if(t instanceof e)return t;if(t instanceof c)return t.type;if(C.check(t))return e.fromArray(t);if(S.check(t))return e.fromObject(t);if(D.check(t)){var r=x.indexOf(t);return r>=0?_[r]:new e(t,n)}return new e(function(e){return e===t},k.check(n)?function(){return t+""}:n)}function a(e,t,n,i){var s=this;if(!(s instanceof a))throw new Error("Field constructor cannot be invoked without 'new'");A.assert(e),t=r(t);var o={name:{value:e},type:{value:t},hidden:{value:!!i}};D.check(n)&&(o.defaultFn={value:n}),Object.defineProperties(s,o)}function c(t){var n=this;if(!(n instanceof c))throw new Error("Def constructor cannot be invoked without 'new'");Object.defineProperties(n,{typeName:{value:t},baseNames:{value:[]},ownFields:{value:Object.create(null)},allSupertypes:{value:Object.create(null)},supertypeList:{value:[]},allFields:{value:Object.create(null)},fieldNames:{value:[]},type:{value:new e(function(e,t){return n.check(e,t)},t)}})}function p(e){return e.replace(/^[A-Z]+/,function(e){var t=e.length;switch(t){case 0:return"";case 1:return e.toLowerCase();default:return e.slice(0,t-1).toLowerCase()+e.charAt(t-1)}})}function f(e){return e=p(e),e.replace(/(Expression)?$/,"Statement")}function h(e){var t=c.fromValue(e);if(t)return t.fieldNames.slice(0);if("type"in e)throw new Error("did not recognize object of type "+JSON.stringify(e.type));return Object.keys(e)}function d(e,t){var n=c.fromValue(e);if(n){var r=n.allFields[t];if(r)return r.getValue(e)}return e&&e[t]}function y(e){var t=f(e);if(!j[t]){var n=j[p(e)];n&&(j[t]=function(){return j.expressionStatement(n.apply(j,arguments))})}}function m(e,t){t.length=0,t.push(e);for(var n=Object.create(null),r=0;r=0&&y(e.typeName)}},g.finalize=function(){Object.keys(T).forEach(function(e){T[e].finalize()})},g}},{}],558:[function(e,t,n){t.exports=e("./fork")([e("./def/core"),e("./def/es6"),e("./def/es7"),e("./def/mozilla"),e("./def/e4x"),e("./def/jsx"),e("./def/flow"),e("./def/esprima"),e("./def/babel"),e("./def/babel6")])},{"./def/babel":540,"./def/babel6":541,"./def/core":542,"./def/e4x":543,"./def/es6":544,"./def/es7":545,"./def/esprima":546,"./def/flow":547,"./def/jsx":548,"./def/mozilla":549,"./fork":550}],559:[function(e,t,n){!function(e,r){"object"==typeof n&&"object"==typeof t?t.exports=r():"function"==typeof define&&define.amd?define([],r):"object"==typeof n?n.esprima=r():e.esprima=r()}(this,function(){return function(e){function t(r){if(n[r])return n[r].exports;var i=n[r]={exports:{},id:r,loaded:!1};return e[r].call(i.exports,i,i.exports,t),i.loaded=!0,i.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function r(e,t,n){var r=null,i=function(e,t){n&&n(e,t),r&&r.visit(e,t)},u="function"==typeof n?i:null,l=!1;if(t){l="boolean"==typeof t.comment&&t.comment;var c="boolean"==typeof t.attachComment&&t.attachComment;(l||c)&&(r=new a.CommentHandler,r.attach=c,t.comment=!0,u=i)}var p;p=t&&"boolean"==typeof t.jsx&&t.jsx?new o.JSXParser(e,t,u):new s.Parser(e,t,u);var f=p.parseProgram();return l&&(f.comments=r.comments),p.config.tokens&&(f.tokens=p.tokens),p.config.tolerant&&(f.errors=p.errorHandler.errors),f}function i(e,t,n){var r,i=new u.Tokenizer(e,t);r=[];try{for(;;){var a=i.getNextToken();if(!a)break;n&&(a=n(a)),r.push(a)}}catch(e){i.errorHandler.tolerate(e)}return i.errorHandler.tolerant&&(r.errors=i.errors()),r}var a=n(1),s=n(3),o=n(11),u=n(15);t.parse=r,t.tokenize=i;var l=n(2);t.Syntax=l.Syntax,t.version="3.1.3"},function(e,t,n){"use strict";var r=n(2),i=function(){function e(){this.attach=!1,this.comments=[],this.stack=[],this.leading=[],this.trailing=[]}return e.prototype.insertInnerComments=function(e,t){if(e.type===r.Syntax.BlockStatement&&0===e.body.length){for(var n=[],i=this.leading.length-1;i>=0;--i){var a=this.leading[i];t.end.offset>=a.start&&(n.unshift(a.comment),this.leading.splice(i,1),this.trailing.splice(i,1))}n.length&&(e.innerComments=n)}},e.prototype.findTrailingComments=function(e,t){var n=[];if(this.trailing.length>0){for(var r=this.trailing.length-1;r>=0;--r){var i=this.trailing[r];i.start>=t.end.offset&&n.unshift(i.comment)}return this.trailing.length=0,n}var a=this.stack[this.stack.length-1];if(a&&a.node.trailingComments){var s=a.node.trailingComments[0];s&&s.range[0]>=t.end.offset&&(n=a.node.trailingComments,delete a.node.trailingComments)}return n},e.prototype.findLeadingComments=function(e,t){for(var n,r=[];this.stack.length>0;){var i=this.stack[this.stack.length-1];if(!(i&&i.start>=t.start.offset))break;n=this.stack.pop().node}if(n){for(var a=n.leadingComments?n.leadingComments.length:0,s=a-1;s>=0;--s){var o=n.leadingComments[s];o.range[1]<=t.start.offset&&(r.unshift(o),n.leadingComments.splice(s,1))}return n.leadingComments&&0===n.leadingComments.length&&delete n.leadingComments,r}for(var s=this.leading.length-1;s>=0;--s){var i=this.leading[s];i.start<=t.start.offset&&(r.unshift(i.comment),this.leading.splice(s,1))}return r},e.prototype.visitNode=function(e,t){if(!(e.type===r.Syntax.Program&&e.body.length>0)){this.insertInnerComments(e,t);var n=this.findTrailingComments(e,t),i=this.findLeadingComments(e,t);i.length>0&&(e.leadingComments=i),n.length>0&&(e.trailingComments=n),this.stack.push({node:e,start:t.start.offset})}},e.prototype.visitComment=function(e,t){var n="L"===e.type[0]?"Line":"Block",r={type:n,value:e.value};if(e.range&&(r.range=e.range),e.loc&&(r.loc=e.loc),this.comments.push(r),this.attach){var i={comment:{type:n,value:e.value,range:[t.start.offset,t.end.offset]},start:t.start.offset};e.loc&&(i.comment.loc=e.loc),e.type=n,this.leading.push(i),this.trailing.push(i)}},e.prototype.visit=function(e,t){"LineComment"===e.type?this.visitComment(e,t):"BlockComment"===e.type?this.visitComment(e,t):this.attach&&this.visitNode(e,t)},e}();t.CommentHandler=i},function(e,t){"use strict";t.Syntax={AssignmentExpression:"AssignmentExpression",AssignmentPattern:"AssignmentPattern",ArrayExpression:"ArrayExpression",ArrayPattern:"ArrayPattern",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExportAllDeclaration:"ExportAllDeclaration",ExportDefaultDeclaration:"ExportDefaultDeclaration",ExportNamedDeclaration:"ExportNamedDeclaration",ExportSpecifier:"ExportSpecifier",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForOfStatement:"ForOfStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",ImportDeclaration:"ImportDeclaration",ImportDefaultSpecifier:"ImportDefaultSpecifier",ImportNamespaceSpecifier:"ImportNamespaceSpecifier",ImportSpecifier:"ImportSpecifier",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MetaProperty:"MetaProperty",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",ObjectPattern:"ObjectPattern",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SpreadElement:"SpreadElement",Super:"Super",SwitchCase:"SwitchCase",SwitchStatement:"SwitchStatement",TaggedTemplateExpression:"TaggedTemplateExpression",TemplateElement:"TemplateElement",TemplateLiteral:"TemplateLiteral",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"}},function(e,t,n){"use strict";var r=n(4),i=n(5),a=n(6),s=n(7),o=n(8),u=n(2),l=n(10),c="ArrowParameterPlaceHolder",p=function(){function e(e,t,n){void 0===t&&(t={}),this.config={range:"boolean"==typeof t.range&&t.range,loc:"boolean"==typeof t.loc&&t.loc,source:null,tokens:"boolean"==typeof t.tokens&&t.tokens,comment:"boolean"==typeof t.comment&&t.comment,tolerant:"boolean"==typeof t.tolerant&&t.tolerant},this.config.loc&&t.source&&null!==t.source&&(this.config.source=String(t.source)),this.delegate=n,this.errorHandler=new a.ErrorHandler,this.errorHandler.tolerant=this.config.tolerant,this.scanner=new o.Scanner(e,this.errorHandler),this.scanner.trackComment=this.config.comment,this.operatorPrecedence={")":0,";":0,",":0,"=":0,"]":0,"||":1,"&&":2,"|":3,"^":4,"&":5,"==":6,"!=":6,"===":6,"!==":6,"<":7,">":7,"<=":7,">=":7,"<<":8,">>":8,">>>":8,"+":9,"-":9,"*":11,"/":11,"%":11},this.sourceType=t&&"module"===t.sourceType?"module":"script",this.lookahead=null,this.hasLineTerminator=!1,this.context={allowIn:!0,allowYield:!0,firstCoverInitializedNameError:null,isAssignmentTarget:!1,isBindingElement:!1,inFunctionBody:!1,inIteration:!1,inSwitch:!1,labelSet:{},strict:"module"===this.sourceType},this.tokens=[],this.startMarker={index:0,lineNumber:this.scanner.lineNumber,lineStart:0},this.lastMarker={index:0,lineNumber:this.scanner.lineNumber,lineStart:0},this.nextToken(),this.lastMarker={index:this.scanner.index,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart}}return e.prototype.throwError=function(e){for(var t=[],n=1;n0&&this.delegate)for(var t=0;t>="===e||">>>="===e||"&="===e||"^="===e||"|="===e},e.prototype.isolateCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return null!==this.context.firstCoverInitializedNameError&&this.throwUnexpectedToken(this.context.firstCoverInitializedNameError),this.context.isBindingElement=t,this.context.isAssignmentTarget=n,this.context.firstCoverInitializedNameError=r,i},e.prototype.inheritCoverGrammar=function(e){var t=this.context.isBindingElement,n=this.context.isAssignmentTarget,r=this.context.firstCoverInitializedNameError;this.context.isBindingElement=!0,this.context.isAssignmentTarget=!0,this.context.firstCoverInitializedNameError=null;var i=e.call(this);return this.context.isBindingElement=this.context.isBindingElement&&t,this.context.isAssignmentTarget=this.context.isAssignmentTarget&&n,this.context.firstCoverInitializedNameError=r||this.context.firstCoverInitializedNameError,i},e.prototype.consumeSemicolon=function(){this.match(";")?this.nextToken():this.hasLineTerminator||(this.lookahead.type===s.Token.EOF||this.match("}")||this.throwUnexpectedToken(this.lookahead),this.lastMarker.index=this.startMarker.index,this.lastMarker.lineNumber=this.startMarker.lineNumber,this.lastMarker.lineStart=this.startMarker.lineStart)},e.prototype.parsePrimaryExpression=function(){var e,t,n,r=this.createNode();switch(this.lookahead.type){case s.Token.Identifier:"module"===this.sourceType&&"await"===this.lookahead.value&&this.tolerateUnexpectedToken(this.lookahead),e=this.finalize(r,new l.Identifier(this.nextToken().value));break;case s.Token.NumericLiteral:case s.Token.StringLiteral:this.context.strict&&this.lookahead.octal&&this.tolerateUnexpectedToken(this.lookahead,i.Messages.StrictOctalLiteral),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),n=this.getTokenRaw(t),e=this.finalize(r,new l.Literal(t.value,n));break;case s.Token.BooleanLiteral:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),t.value="true"===t.value,n=this.getTokenRaw(t),e=this.finalize(r,new l.Literal(t.value,n));break;case s.Token.NullLiteral:this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,t=this.nextToken(),t.value=null,n=this.getTokenRaw(t),e=this.finalize(r,new l.Literal(t.value,n));break;case s.Token.Template:e=this.parseTemplateLiteral();break;case s.Token.Punctuator:switch(this.lookahead.value){case"(":this.context.isBindingElement=!1,e=this.inheritCoverGrammar(this.parseGroupExpression);break;case"[":e=this.inheritCoverGrammar(this.parseArrayInitializer);break;case"{":e=this.inheritCoverGrammar(this.parseObjectInitializer);break;case"/":case"/=":this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.scanner.index=this.startMarker.index,t=this.nextRegexToken(),n=this.getTokenRaw(t),e=this.finalize(r,new l.RegexLiteral(t.value,n,t.regex));break;default:this.throwUnexpectedToken(this.nextToken())}break;case s.Token.Keyword:!this.context.strict&&this.context.allowYield&&this.matchKeyword("yield")?e=this.parseIdentifierName():!this.context.strict&&this.matchKeyword("let")?e=this.finalize(r,new l.Identifier(this.nextToken().value)):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.matchKeyword("function")?e=this.parseFunctionExpression():this.matchKeyword("this")?(this.nextToken(),e=this.finalize(r,new l.ThisExpression)):this.matchKeyword("class")?e=this.parseClassExpression():this.throwUnexpectedToken(this.nextToken()));break;default:this.throwUnexpectedToken(this.nextToken())}return e},e.prototype.parseSpreadElement=function(){var e=this.createNode();this.expect("...");var t=this.inheritCoverGrammar(this.parseAssignmentExpression);return this.finalize(e,new l.SpreadElement(t))},e.prototype.parseArrayInitializer=function(){var e=this.createNode(),t=[];for(this.expect("[");!this.match("]");)if(this.match(","))this.nextToken(),t.push(null);else if(this.match("...")){var n=this.parseSpreadElement();this.match("]")||(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1,this.expect(",")),t.push(n)}else t.push(this.inheritCoverGrammar(this.parseAssignmentExpression)),this.match("]")||this.expect(",");return this.expect("]"),this.finalize(e,new l.ArrayExpression(t))},e.prototype.parsePropertyMethod=function(e){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var t=this.context.strict,n=this.isolateCoverGrammar(this.parseFunctionSourceElements);return this.context.strict&&e.firstRestricted&&this.tolerateUnexpectedToken(e.firstRestricted,e.message),this.context.strict&&e.stricted&&this.tolerateUnexpectedToken(e.stricted,e.message),this.context.strict=t,n},e.prototype.parsePropertyMethodFunction=function(){var e=!1,t=this.createNode(),n=this.context.allowYield;this.context.allowYield=!1;var r=this.parseFormalParameters(),i=this.parsePropertyMethod(r);return this.context.allowYield=n,this.finalize(t,new l.FunctionExpression(null,r.params,i,e))},e.prototype.parseObjectPropertyKey=function(){var e=this.createNode(),t=this.nextToken(),n=null;switch(t.type){case s.Token.StringLiteral:case s.Token.NumericLiteral:this.context.strict&&t.octal&&this.tolerateUnexpectedToken(t,i.Messages.StrictOctalLiteral);var r=this.getTokenRaw(t);n=this.finalize(e,new l.Literal(t.value,r));break;case s.Token.Identifier:case s.Token.BooleanLiteral:case s.Token.NullLiteral:case s.Token.Keyword:n=this.finalize(e,new l.Identifier(t.value));break;case s.Token.Punctuator:"["===t.value?(n=this.isolateCoverGrammar(this.parseAssignmentExpression),this.expect("]")):this.throwUnexpectedToken(t);break;default:this.throwUnexpectedToken(t)}return n},e.prototype.isPropertyKey=function(e,t){return e.type===u.Syntax.Identifier&&e.name===t||e.type===u.Syntax.Literal&&e.value===t},e.prototype.parseObjectProperty=function(e){var t,n,r,a=this.createNode(),o=this.lookahead,u=!1,c=!1,p=!1;o.type===s.Token.Identifier?(this.nextToken(),n=this.finalize(a,new l.Identifier(o.value))):this.match("*")?this.nextToken():(u=this.match("["),n=this.parseObjectPropertyKey());var f=this.qualifiedPropertyName(this.lookahead);if(o.type===s.Token.Identifier&&"get"===o.value&&f)t="get",u=this.match("["),n=this.parseObjectPropertyKey(),this.context.allowYield=!1,r=this.parseGetterMethod();else if(o.type===s.Token.Identifier&&"set"===o.value&&f)t="set",u=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseSetterMethod();else if(o.type===s.Token.Punctuator&&"*"===o.value&&f)t="init",u=this.match("["),n=this.parseObjectPropertyKey(),r=this.parseGeneratorMethod(),c=!0;else if(n||this.throwUnexpectedToken(this.lookahead),t="init",this.match(":"))!u&&this.isPropertyKey(n,"__proto__")&&(e.value&&this.tolerateError(i.Messages.DuplicateProtoProperty),e.value=!0),this.nextToken(),r=this.inheritCoverGrammar(this.parseAssignmentExpression);else if(this.match("("))r=this.parsePropertyMethodFunction(),c=!0;else if(o.type===s.Token.Identifier){var h=this.finalize(a,new l.Identifier(o.value));if(this.match("=")){this.context.firstCoverInitializedNameError=this.lookahead,this.nextToken(),p=!0;var d=this.isolateCoverGrammar(this.parseAssignmentExpression);r=this.finalize(a,new l.AssignmentPattern(h,d))}else p=!0,r=h}else this.throwUnexpectedToken(this.nextToken());return this.finalize(a,new l.Property(t,n,u,r,c,p))},e.prototype.parseObjectInitializer=function(){var e=this.createNode();this.expect("{");for(var t=[],n={value:!1};!this.match("}");)t.push(this.parseObjectProperty(n)),this.match("}")||this.expectCommaSeparator();return this.expect("}"),this.finalize(e,new l.ObjectExpression(t))},e.prototype.parseTemplateHead=function(){r.assert(this.lookahead.head,"Template literal must start with a template head");var e=this.createNode(),t=this.nextToken(),n={raw:t.value.raw,cooked:t.value.cooked};return this.finalize(e,new l.TemplateElement(n,t.tail))},e.prototype.parseTemplateElement=function(){this.lookahead.type!==s.Token.Template&&this.throwUnexpectedToken();var e=this.createNode(),t=this.nextToken(),n={raw:t.value.raw,cooked:t.value.cooked};return this.finalize(e,new l.TemplateElement(n,t.tail))},e.prototype.parseTemplateLiteral=function(){var e=this.createNode(),t=[],n=[],r=this.parseTemplateHead();for(n.push(r);!r.tail;)t.push(this.parseExpression()),r=this.parseTemplateElement(),n.push(r);return this.finalize(e,new l.TemplateLiteral(n,t))},e.prototype.reinterpretExpressionAsPattern=function(e){switch(e.type){case u.Syntax.Identifier:case u.Syntax.MemberExpression:case u.Syntax.RestElement:case u.Syntax.AssignmentPattern:break;case u.Syntax.SpreadElement:e.type=u.Syntax.RestElement,this.reinterpretExpressionAsPattern(e.argument);break;case u.Syntax.ArrayExpression:e.type=u.Syntax.ArrayPattern;for(var t=0;t")||this.expect("=>"),e={type:c,params:[]};else{var t=this.lookahead,n=[];if(this.match("..."))e=this.parseRestElement(n),this.expect(")"),this.match("=>")||this.expect("=>"),e={type:c,params:[e]};else{var r=!1;if(this.context.isBindingElement=!0,e=this.inheritCoverGrammar(this.parseAssignmentExpression),this.match(",")){var i=[];for(this.context.isAssignmentTarget=!1,i.push(e);this.startMarker.index")||this.expect("=>"),this.context.isBindingElement=!1;for(var a=0;a")&&(e.type===u.Syntax.Identifier&&"yield"===e.name&&(r=!0,e={type:c,params:[e]}),!r)){if(this.context.isBindingElement||this.throwUnexpectedToken(this.lookahead),e.type===u.Syntax.SequenceExpression)for(var a=0;a0){this.nextToken(),n.prec=r,this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;for(var i=[e,this.lookahead],a=t,s=this.isolateCoverGrammar(this.parseExponentiationExpression),o=[a,n,s];;){if(r=this.binaryPrecedence(this.lookahead),r<=0)break;for(;o.length>2&&r<=o[o.length-2].prec;){s=o.pop();var u=o.pop().value;a=o.pop(),i.pop();var c=this.startNode(i[i.length-1]);o.push(this.finalize(c,new l.BinaryExpression(u,a,s)))}n=this.nextToken(),n.prec=r,o.push(n),i.push(this.lookahead),o.push(this.isolateCoverGrammar(this.parseExponentiationExpression))}var p=o.length-1;for(t=o[p],i.pop();p>1;){var c=this.startNode(i.pop());t=this.finalize(c,new l.BinaryExpression(o[p-1].value,o[p-2],t)),p-=2}}return t},e.prototype.parseConditionalExpression=function(){var e=this.lookahead,t=this.inheritCoverGrammar(this.parseBinaryExpression);if(this.match("?")){this.nextToken();var n=this.context.allowIn;this.context.allowIn=!0;var r=this.isolateCoverGrammar(this.parseAssignmentExpression);this.context.allowIn=n,this.expect(":");var i=this.isolateCoverGrammar(this.parseAssignmentExpression);t=this.finalize(this.startNode(e),new l.ConditionalExpression(t,r,i)),this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1}return t},e.prototype.checkPatternParam=function(e,t){switch(t.type){case u.Syntax.Identifier:this.validateParam(e,t,t.name);break;case u.Syntax.RestElement:this.checkPatternParam(e,t.argument);break;case u.Syntax.AssignmentPattern:this.checkPatternParam(e,t.left);break;case u.Syntax.ArrayPattern:for(var n=0;n")){this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1;var r=this.reinterpretAsCoverFormalsList(e);if(r){this.hasLineTerminator&&this.tolerateUnexpectedToken(this.lookahead),this.context.firstCoverInitializedNameError=null;var a=this.context.strict,s=this.context.allowYield;this.context.allowYield=!0;var o=this.startNode(t);this.expect("=>");var p=this.match("{")?this.parseFunctionSourceElements():this.isolateCoverGrammar(this.parseAssignmentExpression),f=p.type!==u.Syntax.BlockStatement;this.context.strict&&r.firstRestricted&&this.throwUnexpectedToken(r.firstRestricted,r.message),this.context.strict&&r.stricted&&this.tolerateUnexpectedToken(r.stricted,r.message),e=this.finalize(o,new l.ArrowFunctionExpression(r.params,p,f)),this.context.strict=a,this.context.allowYield=s}}else if(this.matchAssign()){if(this.context.isAssignmentTarget||this.tolerateError(i.Messages.InvalidLHSInAssignment),this.context.strict&&e.type===u.Syntax.Identifier){var h=e;this.scanner.isRestrictedWord(h.name)&&this.tolerateUnexpectedToken(n,i.Messages.StrictLHSAssignment),this.scanner.isStrictModeReservedWord(h.name)&&this.tolerateUnexpectedToken(n,i.Messages.StrictReservedWord)}this.match("=")?this.reinterpretExpressionAsPattern(e):(this.context.isAssignmentTarget=!1,this.context.isBindingElement=!1),n=this.nextToken();var d=this.isolateCoverGrammar(this.parseAssignmentExpression);e=this.finalize(this.startNode(t),new l.AssignmentExpression(n.value,e,d)),this.context.firstCoverInitializedNameError=null}}return e},e.prototype.parseExpression=function(){var e=this.lookahead,t=this.isolateCoverGrammar(this.parseAssignmentExpression);if(this.match(",")){var n=[];for(n.push(t);this.startMarker.index",t.TokenName[n.Identifier]="Identifier",t.TokenName[n.Keyword]="Keyword",t.TokenName[n.NullLiteral]="Null",t.TokenName[n.NumericLiteral]="Numeric",t.TokenName[n.Punctuator]="Punctuator",t.TokenName[n.StringLiteral]="String",t.TokenName[n.RegularExpression]="RegularExpression",t.TokenName[n.Template]="Template"},function(e,t,n){"use strict";function r(e){return"0123456789abcdef".indexOf(e.toLowerCase())}function i(e){return"01234567".indexOf(e)}var a=n(4),s=n(5),o=n(9),u=n(7),l=function(){function e(e,t){this.source=e,this.errorHandler=t,this.trackComment=!1,this.length=e.length,this.index=0,this.lineNumber=e.length>0?1:0,this.lineStart=0,this.curlyStack=[]}return e.prototype.eof=function(){return this.index>=this.length},e.prototype.throwUnexpectedToken=function(e){void 0===e&&(e=s.Messages.UnexpectedTokenIllegal),this.errorHandler.throwError(this.index,this.lineNumber,this.index-this.lineStart+1,e)},e.prototype.tolerateUnexpectedToken=function(){this.errorHandler.tolerateError(this.index,this.lineNumber,this.index-this.lineStart+1,s.Messages.UnexpectedTokenIllegal)},e.prototype.skipSingleLineComment=function(e){var t,n,r;for(this.trackComment&&(t=[],n=this.index-e,r={start:{line:this.lineNumber,column:this.index-this.lineStart-e},end:{}});!this.eof();){var i=this.source.charCodeAt(this.index);if(++this.index,o.Character.isLineTerminator(i)){if(this.trackComment){r.end={line:this.lineNumber,column:this.index-this.lineStart-1};var a={multiLine:!1,slice:[n+e,this.index-1],range:[n,this.index-1],loc:r};t.push(a)}return 13===i&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,t}}if(this.trackComment){r.end={line:this.lineNumber,column:this.index-this.lineStart};var a={multiLine:!1,slice:[n+e,this.index],range:[n,this.index],loc:r};t.push(a)}return t},e.prototype.skipMultiLineComment=function(){var e,t,n;for(this.trackComment&&(e=[],t=this.index-2,n={start:{line:this.lineNumber,column:this.index-this.lineStart-2},end:{}});!this.eof();){var r=this.source.charCodeAt(this.index);if(o.Character.isLineTerminator(r))13===r&&10===this.source.charCodeAt(this.index+1)&&++this.index,++this.lineNumber,++this.index,this.lineStart=this.index;else if(42===r){if(47===this.source.charCodeAt(this.index+1)){if(this.index+=2,this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart};var i={multiLine:!0,slice:[t+2,this.index-2],range:[t,this.index],loc:n};e.push(i)}return e}++this.index}else++this.index}if(this.trackComment){n.end={line:this.lineNumber,column:this.index-this.lineStart};var i={multiLine:!0,slice:[t+2,this.index],range:[t,this.index],loc:n};e.push(i)}return this.tolerateUnexpectedToken(),e},e.prototype.scanComments=function(){var e;this.trackComment&&(e=[]);for(var t=0===this.index;!this.eof();){var n=this.source.charCodeAt(this.index);if(o.Character.isWhiteSpace(n))++this.index;else if(o.Character.isLineTerminator(n))++this.index,13===n&&10===this.source.charCodeAt(this.index)&&++this.index,++this.lineNumber,this.lineStart=this.index,t=!0;else if(47===n)if(n=this.source.charCodeAt(this.index+1),47===n){this.index+=2;var r=this.skipSingleLineComment(2);this.trackComment&&(e=e.concat(r)),t=!0}else{if(42!==n)break;this.index+=2;var r=this.skipMultiLineComment();this.trackComment&&(e=e.concat(r))}else if(t&&45===n){if(45!==this.source.charCodeAt(this.index+1)||62!==this.source.charCodeAt(this.index+2))break;this.index+=3;var r=this.skipSingleLineComment(3);this.trackComment&&(e=e.concat(r))}else{if(60!==n)break;if("!--"!==this.source.slice(this.index+1,this.index+4))break;this.index+=4;var r=this.skipSingleLineComment(4);this.trackComment&&(e=e.concat(r))}}return e},e.prototype.isFutureReservedWord=function(e){switch(e){case"enum":case"export":case"import":case"super":return!0;default:return!1}},e.prototype.isStrictModeReservedWord=function(e){switch(e){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return!0;default:return!1}},e.prototype.isRestrictedWord=function(e){return"eval"===e||"arguments"===e},e.prototype.isKeyword=function(e){switch(e.length){case 2:return"if"===e||"in"===e||"do"===e;case 3:return"var"===e||"for"===e||"new"===e||"try"===e||"let"===e;case 4:return"this"===e||"else"===e||"case"===e||"void"===e||"with"===e||"enum"===e;case 5:return"while"===e||"break"===e||"catch"===e||"throw"===e||"const"===e||"yield"===e||"class"===e||"super"===e;case 6:return"return"===e||"typeof"===e||"delete"===e||"switch"===e||"export"===e||"import"===e;case 7:return"default"===e||"finally"===e||"extends"===e;case 8:return"function"===e||"continue"===e||"debugger"===e;case 10:return"instanceof"===e;default:return!1}},e.prototype.codePointAt=function(e){var t=this.source.charCodeAt(e);if(t>=55296&&t<=56319){
+var n=this.source.charCodeAt(e+1);if(n>=56320&&n<=57343){t=1024*(t-55296)+n-56320+65536}}return t},e.prototype.scanHexEscape=function(e){for(var t="u"===e?4:2,n=0,i=0;i1114111||"}"!==e)&&this.throwUnexpectedToken(),o.Character.fromCodePoint(t)},e.prototype.getIdentifier=function(){for(var e=this.index++;!this.eof();){var t=this.source.charCodeAt(this.index);if(92===t)return this.index=e,this.getComplexIdentifier();if(t>=55296&&t<57343)return this.index=e,this.getComplexIdentifier();if(!o.Character.isIdentifierPart(t))break;++this.index}return this.source.slice(e,this.index)},e.prototype.getComplexIdentifier=function(){var e=this.codePointAt(this.index),t=o.Character.fromCodePoint(e);this.index+=t.length;var n;for(92===e&&(117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,n=this.scanUnicodeCodePointEscape()):(n=this.scanHexEscape("u"),e=n.charCodeAt(0),n&&"\\"!==n&&o.Character.isIdentifierStart(e)||this.throwUnexpectedToken()),t=n);!this.eof()&&(e=this.codePointAt(this.index),o.Character.isIdentifierPart(e));)n=o.Character.fromCodePoint(e),t+=n,this.index+=n.length,92===e&&(t=t.substr(0,t.length-1),117!==this.source.charCodeAt(this.index)&&this.throwUnexpectedToken(),++this.index,"{"===this.source[this.index]?(++this.index,n=this.scanUnicodeCodePointEscape()):(n=this.scanHexEscape("u"),e=n.charCodeAt(0),n&&"\\"!==n&&o.Character.isIdentifierPart(e)||this.throwUnexpectedToken()),t+=n);return t},e.prototype.octalToDecimal=function(e){var t="0"!==e,n=i(e);return!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(t=!0,n=8*n+i(this.source[this.index++]),"0123".indexOf(e)>=0&&!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index))&&(n=8*n+i(this.source[this.index++]))),{code:n,octal:t}},e.prototype.scanIdentifier=function(){var e,t=this.index,n=92===this.source.charCodeAt(t)?this.getComplexIdentifier():this.getIdentifier();return e=1===n.length?u.Token.Identifier:this.isKeyword(n)?u.Token.Keyword:"null"===n?u.Token.NullLiteral:"true"===n||"false"===n?u.Token.BooleanLiteral:u.Token.Identifier,{type:e,value:n,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.scanPunctuator=function(){var e={type:u.Token.Punctuator,value:"",lineNumber:this.lineNumber,lineStart:this.lineStart,start:this.index,end:this.index},t=this.source[this.index];switch(t){case"(":case"{":"{"===t&&this.curlyStack.push("{"),++this.index;break;case".":++this.index,"."===this.source[this.index]&&"."===this.source[this.index+1]&&(this.index+=2,t="...");break;case"}":++this.index,this.curlyStack.pop();break;case")":case";":case",":case"[":case"]":case":":case"?":case"~":++this.index;break;default:t=this.source.substr(this.index,4),">>>="===t?this.index+=4:(t=t.substr(0,3),"==="===t||"!=="===t||">>>"===t||"<<="===t||">>="===t||"**="===t?this.index+=3:(t=t.substr(0,2),"&&"===t||"||"===t||"=="===t||"!="===t||"+="===t||"-="===t||"*="===t||"/="===t||"++"===t||"--"===t||"<<"===t||">>"===t||"&="===t||"|="===t||"^="===t||"%="===t||"<="===t||">="===t||"=>"===t||"**"===t?this.index+=2:(t=this.source[this.index],"<>=!+-*%&|^/".indexOf(t)>=0&&++this.index)))}return this.index===e.start&&this.throwUnexpectedToken(),e.end=this.index,e.value=t,e},e.prototype.scanHexLiteral=function(e){for(var t="";!this.eof()&&o.Character.isHexDigit(this.source.charCodeAt(this.index));)t+=this.source[this.index++];return 0===t.length&&this.throwUnexpectedToken(),o.Character.isIdentifierStart(this.source.charCodeAt(this.index))&&this.throwUnexpectedToken(),{type:u.Token.NumericLiteral,value:parseInt("0x"+t,16),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanBinaryLiteral=function(e){for(var t,n="";!this.eof()&&(t=this.source[this.index],"0"===t||"1"===t);)n+=this.source[this.index++];return 0===n.length&&this.throwUnexpectedToken(),this.eof()||(t=this.source.charCodeAt(this.index),(o.Character.isIdentifierStart(t)||o.Character.isDecimalDigit(t))&&this.throwUnexpectedToken()),{type:u.Token.NumericLiteral,value:parseInt(n,2),lineNumber:this.lineNumber,lineStart:this.lineStart,start:e,end:this.index}},e.prototype.scanOctalLiteral=function(e,t){var n="",r=!1;for(o.Character.isOctalDigit(e.charCodeAt(0))?(r=!0,n="0"+this.source[this.index++]):++this.index;!this.eof()&&o.Character.isOctalDigit(this.source.charCodeAt(this.index));)n+=this.source[this.index++];return r||0!==n.length||this.throwUnexpectedToken(),(o.Character.isIdentifierStart(this.source.charCodeAt(this.index))||o.Character.isDecimalDigit(this.source.charCodeAt(this.index)))&&this.throwUnexpectedToken(),{type:u.Token.NumericLiteral,value:parseInt(n,8),octal:r,lineNumber:this.lineNumber,lineStart:this.lineStart,start:t,end:this.index}},e.prototype.isImplicitOctalLiteral=function(){for(var e=this.index+1;e=0&&(r=r.replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g,function(e,t,r){var a=parseInt(t||r,16);return a>1114111&&i.throwUnexpectedToken(s.Messages.InvalidRegExp),a<=65535?String.fromCharCode(a):n}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,n));try{RegExp(r)}catch(e){this.throwUnexpectedToken(s.Messages.InvalidRegExp)}try{return new RegExp(e,t)}catch(e){return null}},e.prototype.scanRegExpBody=function(){var e=this.source[this.index];a.assert("/"===e,"Regular expression literal must start with a slash");for(var t=this.source[this.index++],n=!1,r=!1;!this.eof();)if(e=this.source[this.index++],t+=e,"\\"===e)e=this.source[this.index++],o.Character.isLineTerminator(e.charCodeAt(0))&&this.throwUnexpectedToken(s.Messages.UnterminatedRegExp),t+=e;else if(o.Character.isLineTerminator(e.charCodeAt(0)))this.throwUnexpectedToken(s.Messages.UnterminatedRegExp);else if(n)"]"===e&&(n=!1);else{if("/"===e){r=!0;break}"["===e&&(n=!0)}return r||this.throwUnexpectedToken(s.Messages.UnterminatedRegExp),{value:t.substr(1,t.length-2),literal:t}},e.prototype.scanRegExpFlags=function(){for(var e="",t="";!this.eof();){var n=this.source[this.index];if(!o.Character.isIdentifierPart(n.charCodeAt(0)))break;if(++this.index,"\\"!==n||this.eof())t+=n,e+=n;else if(n=this.source[this.index],"u"===n){++this.index;var r=this.index;if(n=this.scanHexEscape("u"))for(t+=n,e+="\\u";r=55296&&e<57343&&o.Character.isIdentifierStart(this.codePointAt(this.index))?this.scanIdentifier():this.scanPunctuator()},e}();t.Scanner=l},function(e,t){"use strict";var n={NonAsciiIdentifierStart:/[\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0-\u08B4\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF19]|\uD806[\uDCA0-\uDCDF\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50\uDF93-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]/,NonAsciiIdentifierPart:/[\xAA\xB5\xB7\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0300-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u0483-\u0487\u048A-\u052F\u0531-\u0556\u0559\u0561-\u0587\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u05D0-\u05EA\u05F0-\u05F2\u0610-\u061A\u0620-\u0669\u066E-\u06D3\u06D5-\u06DC\u06DF-\u06E8\u06EA-\u06FC\u06FF\u0710-\u074A\u074D-\u07B1\u07C0-\u07F5\u07FA\u0800-\u082D\u0840-\u085B\u08A0-\u08B4\u08E3-\u0963\u0966-\u096F\u0971-\u0983\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BC-\u09C4\u09C7\u09C8\u09CB-\u09CE\u09D7\u09DC\u09DD\u09DF-\u09E3\u09E6-\u09F1\u0A01-\u0A03\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A59-\u0A5C\u0A5E\u0A66-\u0A75\u0A81-\u0A83\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABC-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AD0\u0AE0-\u0AE3\u0AE6-\u0AEF\u0AF9\u0B01-\u0B03\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3C-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B5C\u0B5D\u0B5F-\u0B63\u0B66-\u0B6F\u0B71\u0B82\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD0\u0BD7\u0BE6-\u0BEF\u0C00-\u0C03\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C58-\u0C5A\u0C60-\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBC-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CDE\u0CE0-\u0CE3\u0CE6-\u0CEF\u0CF1\u0CF2\u0D01-\u0D03\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D-\u0D44\u0D46-\u0D48\u0D4A-\u0D4E\u0D57\u0D5F-\u0D63\u0D66-\u0D6F\u0D7A-\u0D7F\u0D82\u0D83\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E01-\u0E3A\u0E40-\u0E4E\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB9\u0EBB-\u0EBD\u0EC0-\u0EC4\u0EC6\u0EC8-\u0ECD\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E-\u0F47\u0F49-\u0F6C\u0F71-\u0F84\u0F86-\u0F97\u0F99-\u0FBC\u0FC6\u1000-\u1049\u1050-\u109D\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u135D-\u135F\u1369-\u1371\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1714\u1720-\u1734\u1740-\u1753\u1760-\u176C\u176E-\u1770\u1772\u1773\u1780-\u17D3\u17D7\u17DC\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u1820-\u1877\u1880-\u18AA\u18B0-\u18F5\u1900-\u191E\u1920-\u192B\u1930-\u193B\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A1B\u1A20-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AA7\u1AB0-\u1ABD\u1B00-\u1B4B\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1BF3\u1C00-\u1C37\u1C40-\u1C49\u1C4D-\u1C7D\u1CD0-\u1CD2\u1CD4-\u1CF6\u1CF8\u1CF9\u1D00-\u1DF5\u1DFC-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u200C\u200D\u203F\u2040\u2054\u2071\u207F\u2090-\u209C\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D7F-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2DE0-\u2DFF\u3005-\u3007\u3021-\u302F\u3031-\u3035\u3038-\u303C\u3041-\u3096\u3099-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FD5\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66F\uA674-\uA67D\uA67F-\uA6F1\uA717-\uA71F\uA722-\uA788\uA78B-\uA7AD\uA7B0-\uA7B7\uA7F7-\uA827\uA840-\uA873\uA880-\uA8C4\uA8D0-\uA8D9\uA8E0-\uA8F7\uA8FB\uA8FD\uA900-\uA92D\uA930-\uA953\uA960-\uA97C\uA980-\uA9C0\uA9CF-\uA9D9\uA9E0-\uA9FE\uAA00-\uAA36\uAA40-\uAA4D\uAA50-\uAA59\uAA60-\uAA76\uAA7A-\uAAC2\uAADB-\uAADD\uAAE0-\uAAEF\uAAF2-\uAAF6\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABEA\uABEC\uABED\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF3F\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDDFD\uDE80-\uDE9C\uDEA0-\uDED0\uDEE0\uDF00-\uDF1F\uDF30-\uDF4A\uDF50-\uDF7A\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00-\uDE03\uDE05\uDE06\uDE0C-\uDE13\uDE15-\uDE17\uDE19-\uDE33\uDE38-\uDE3A\uDE3F\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE6\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2]|\uD804[\uDC00-\uDC46\uDC66-\uDC6F\uDC7F-\uDCBA\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD00-\uDD34\uDD36-\uDD3F\uDD50-\uDD73\uDD76\uDD80-\uDDC4\uDDCA-\uDDCC\uDDD0-\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE37\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3C-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF50\uDF57\uDF5D-\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC80-\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDB5\uDDB8-\uDDC0\uDDD8-\uDDDD\uDE00-\uDE40\uDE44\uDE50-\uDE59\uDE80-\uDEB7\uDEC0-\uDEC9\uDF00-\uDF19\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDCA0-\uDCE9\uDCFF\uDEC0-\uDEF8]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDED0-\uDEED\uDEF0-\uDEF4\uDF00-\uDF36\uDF40-\uDF43\uDF50-\uDF59\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDF00-\uDF44\uDF50-\uDF7E\uDF8F-\uDF9F]|\uD82C[\uDC00\uDC01]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD83A[\uDC00-\uDCC4\uDCD0-\uDCD6]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1]|\uD87E[\uDC00-\uDE1D]|\uDB40[\uDD00-\uDDEF]/};t.Character={fromCodePoint:function(e){return e<65536?String.fromCharCode(e):String.fromCharCode(55296+(e-65536>>10))+String.fromCharCode(56320+(e-65536&1023))},isWhiteSpace:function(e){return 32===e||9===e||11===e||12===e||160===e||e>=5760&&[5760,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(e)>=0},isLineTerminator:function(e){return 10===e||13===e||8232===e||8233===e},isIdentifierStart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||92===e||e>=128&&n.NonAsciiIdentifierStart.test(t.Character.fromCodePoint(e))},isIdentifierPart:function(e){return 36===e||95===e||e>=65&&e<=90||e>=97&&e<=122||e>=48&&e<=57||92===e||e>=128&&n.NonAsciiIdentifierPart.test(t.Character.fromCodePoint(e))},isDecimalDigit:function(e){return e>=48&&e<=57},isHexDigit:function(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102},isOctalDigit:function(e){return e>=48&&e<=55}}},function(e,t,n){"use strict";var r=n(2),i=function(){function e(e){this.type=r.Syntax.ArrayExpression,this.elements=e}return e}();t.ArrayExpression=i;var a=function(){function e(e){this.type=r.Syntax.ArrayPattern,this.elements=e}return e}();t.ArrayPattern=a;var s=function(){function e(e,t,n){this.type=r.Syntax.ArrowFunctionExpression,this.id=null,this.params=e,this.body=t,this.generator=!1,this.expression=n}return e}();t.ArrowFunctionExpression=s;var o=function(){function e(e,t,n){this.type=r.Syntax.AssignmentExpression,this.operator=e,this.left=t,this.right=n}return e}();t.AssignmentExpression=o;var u=function(){function e(e,t){this.type=r.Syntax.AssignmentPattern,this.left=e,this.right=t}return e}();t.AssignmentPattern=u;var l=function(){function e(e,t,n){var i="||"===e||"&&"===e;this.type=i?r.Syntax.LogicalExpression:r.Syntax.BinaryExpression,this.operator=e,this.left=t,this.right=n}return e}();t.BinaryExpression=l;var c=function(){function e(e){this.type=r.Syntax.BlockStatement,this.body=e}return e}();t.BlockStatement=c;var p=function(){function e(e){this.type=r.Syntax.BreakStatement,this.label=e}return e}();t.BreakStatement=p;var f=function(){function e(e,t){this.type=r.Syntax.CallExpression,this.callee=e,this.arguments=t}return e}();t.CallExpression=f;var h=function(){function e(e,t){this.type=r.Syntax.CatchClause,this.param=e,this.body=t}return e}();t.CatchClause=h;var d=function(){function e(e){this.type=r.Syntax.ClassBody,this.body=e}return e}();t.ClassBody=d;var y=function(){function e(e,t,n){this.type=r.Syntax.ClassDeclaration,this.id=e,this.superClass=t,this.body=n}return e}();t.ClassDeclaration=y;var m=function(){function e(e,t,n){this.type=r.Syntax.ClassExpression,this.id=e,this.superClass=t,this.body=n}return e}();t.ClassExpression=m;var b=function(){function e(e,t){this.type=r.Syntax.MemberExpression,this.computed=!0,this.object=e,this.property=t}return e}();t.ComputedMemberExpression=b;var g=function(){function e(e,t,n){this.type=r.Syntax.ConditionalExpression,this.test=e,this.consequent=t,this.alternate=n}return e}();t.ConditionalExpression=g;var v=function(){function e(e){this.type=r.Syntax.ContinueStatement,this.label=e}return e}();t.ContinueStatement=v;var x=function(){function e(){this.type=r.Syntax.DebuggerStatement}return e}();t.DebuggerStatement=x;var _=function(){function e(e,t){this.type=r.Syntax.ExpressionStatement,this.expression=e,this.directive=t}return e}();t.Directive=_;var E=function(){function e(e,t){this.type=r.Syntax.DoWhileStatement,this.body=e,this.test=t}return e}();t.DoWhileStatement=E;var A=function(){function e(){this.type=r.Syntax.EmptyStatement}return e}();t.EmptyStatement=A;var D=function(){function e(e){this.type=r.Syntax.ExportAllDeclaration,this.source=e}return e}();t.ExportAllDeclaration=D;var C=function(){function e(e){this.type=r.Syntax.ExportDefaultDeclaration,this.declaration=e}return e}();t.ExportDefaultDeclaration=C;var S=function(){function e(e,t,n){this.type=r.Syntax.ExportNamedDeclaration,this.declaration=e,this.specifiers=t,this.source=n}return e}();t.ExportNamedDeclaration=S;var w=function(){function e(e,t){this.type=r.Syntax.ExportSpecifier,this.exported=t,this.local=e}return e}();t.ExportSpecifier=w;var k=function(){function e(e){this.type=r.Syntax.ExpressionStatement,this.expression=e}return e}();t.ExpressionStatement=k;var F=function(){function e(e,t,n){this.type=r.Syntax.ForInStatement,this.left=e,this.right=t,this.body=n,this.each=!1}return e}();t.ForInStatement=F;var T=function(){function e(e,t,n){this.type=r.Syntax.ForOfStatement,this.left=e,this.right=t,this.body=n}return e}();t.ForOfStatement=T;var P=function(){function e(e,t,n,i){this.type=r.Syntax.ForStatement,this.init=e,this.test=t,this.update=n,this.body=i}return e}();t.ForStatement=P;var j=function(){function e(e,t,n,i){this.type=r.Syntax.FunctionDeclaration,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1}return e}();t.FunctionDeclaration=j;var B=function(){function e(e,t,n,i){this.type=r.Syntax.FunctionExpression,this.id=e,this.params=t,this.body=n,this.generator=i,this.expression=!1}return e}();t.FunctionExpression=B;var O=function(){function e(e){this.type=r.Syntax.Identifier,this.name=e
+}return e}();t.Identifier=O;var I=function(){function e(e,t,n){this.type=r.Syntax.IfStatement,this.test=e,this.consequent=t,this.alternate=n}return e}();t.IfStatement=I;var N=function(){function e(e,t){this.type=r.Syntax.ImportDeclaration,this.specifiers=e,this.source=t}return e}();t.ImportDeclaration=N;var L=function(){function e(e){this.type=r.Syntax.ImportDefaultSpecifier,this.local=e}return e}();t.ImportDefaultSpecifier=L;var M=function(){function e(e){this.type=r.Syntax.ImportNamespaceSpecifier,this.local=e}return e}();t.ImportNamespaceSpecifier=M;var R=function(){function e(e,t){this.type=r.Syntax.ImportSpecifier,this.local=e,this.imported=t}return e}();t.ImportSpecifier=R;var U=function(){function e(e,t){this.type=r.Syntax.LabeledStatement,this.label=e,this.body=t}return e}();t.LabeledStatement=U;var V=function(){function e(e,t){this.type=r.Syntax.Literal,this.value=e,this.raw=t}return e}();t.Literal=V;var G=function(){function e(e,t){this.type=r.Syntax.MetaProperty,this.meta=e,this.property=t}return e}();t.MetaProperty=G;var q=function(){function e(e,t,n,i,a){this.type=r.Syntax.MethodDefinition,this.key=e,this.computed=t,this.value=n,this.kind=i,this.static=a}return e}();t.MethodDefinition=q;var K=function(){function e(e,t){this.type=r.Syntax.NewExpression,this.callee=e,this.arguments=t}return e}();t.NewExpression=K;var X=function(){function e(e){this.type=r.Syntax.ObjectExpression,this.properties=e}return e}();t.ObjectExpression=X;var J=function(){function e(e){this.type=r.Syntax.ObjectPattern,this.properties=e}return e}();t.ObjectPattern=J;var W=function(){function e(e,t){this.type=r.Syntax.Program,this.body=e,this.sourceType=t}return e}();t.Program=W;var z=function(){function e(e,t,n,i,a,s){this.type=r.Syntax.Property,this.key=t,this.computed=n,this.value=i,this.kind=e,this.method=a,this.shorthand=s}return e}();t.Property=z;var Y=function(){function e(e,t,n){this.type=r.Syntax.Literal,this.value=e,this.raw=t,this.regex=n}return e}();t.RegexLiteral=Y;var H=function(){function e(e){this.type=r.Syntax.RestElement,this.argument=e}return e}();t.RestElement=H;var $=function(){function e(e){this.type=r.Syntax.ReturnStatement,this.argument=e}return e}();t.ReturnStatement=$;var Q=function(){function e(e){this.type=r.Syntax.SequenceExpression,this.expressions=e}return e}();t.SequenceExpression=Q;var Z=function(){function e(e){this.type=r.Syntax.SpreadElement,this.argument=e}return e}();t.SpreadElement=Z;var ee=function(){function e(e,t){this.type=r.Syntax.MemberExpression,this.computed=!1,this.object=e,this.property=t}return e}();t.StaticMemberExpression=ee;var te=function(){function e(){this.type=r.Syntax.Super}return e}();t.Super=te;var ne=function(){function e(e,t){this.type=r.Syntax.SwitchCase,this.test=e,this.consequent=t}return e}();t.SwitchCase=ne;var re=function(){function e(e,t){this.type=r.Syntax.SwitchStatement,this.discriminant=e,this.cases=t}return e}();t.SwitchStatement=re;var ie=function(){function e(e,t){this.type=r.Syntax.TaggedTemplateExpression,this.tag=e,this.quasi=t}return e}();t.TaggedTemplateExpression=ie;var ae=function(){function e(e,t){this.type=r.Syntax.TemplateElement,this.value=e,this.tail=t}return e}();t.TemplateElement=ae;var se=function(){function e(e,t){this.type=r.Syntax.TemplateLiteral,this.quasis=e,this.expressions=t}return e}();t.TemplateLiteral=se;var oe=function(){function e(){this.type=r.Syntax.ThisExpression}return e}();t.ThisExpression=oe;var ue=function(){function e(e){this.type=r.Syntax.ThrowStatement,this.argument=e}return e}();t.ThrowStatement=ue;var le=function(){function e(e,t,n){this.type=r.Syntax.TryStatement,this.block=e,this.handler=t,this.finalizer=n}return e}();t.TryStatement=le;var ce=function(){function e(e,t){this.type=r.Syntax.UnaryExpression,this.operator=e,this.argument=t,this.prefix=!0}return e}();t.UnaryExpression=ce;var pe=function(){function e(e,t,n){this.type=r.Syntax.UpdateExpression,this.operator=e,this.argument=t,this.prefix=n}return e}();t.UpdateExpression=pe;var fe=function(){function e(e,t){this.type=r.Syntax.VariableDeclaration,this.declarations=e,this.kind=t}return e}();t.VariableDeclaration=fe;var he=function(){function e(e,t){this.type=r.Syntax.VariableDeclarator,this.id=e,this.init=t}return e}();t.VariableDeclarator=he;var de=function(){function e(e,t){this.type=r.Syntax.WhileStatement,this.test=e,this.body=t}return e}();t.WhileStatement=de;var ye=function(){function e(e,t){this.type=r.Syntax.WithStatement,this.object=e,this.body=t}return e}();t.WithStatement=ye;var me=function(){function e(e,t){this.type=r.Syntax.YieldExpression,this.argument=e,this.delegate=t}return e}();t.YieldExpression=me},function(e,t,n){"use strict";function r(e){var t;switch(e.type){case c.JSXSyntax.JSXIdentifier:t=e.name;break;case c.JSXSyntax.JSXNamespacedName:var n=e;t=r(n.namespace)+":"+r(n.name);break;case c.JSXSyntax.JSXMemberExpression:var i=e;t=r(i.object)+"."+r(i.property)}return t}var i,a=this&&this.__extends||function(e,t){function n(){this.constructor=e}for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r]);e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)},s=n(9),o=n(7),u=n(3),l=n(12),c=n(13),p=n(10),f=n(14);!function(e){e[e.Identifier=100]="Identifier",e[e.Text=101]="Text"}(i||(i={})),o.TokenName[i.Identifier]="JSXIdentifier",o.TokenName[i.Text]="JSXText";var h=function(e){function t(t,n,r){e.call(this,t,n,r)}return a(t,e),t.prototype.parsePrimaryExpression=function(){return this.match("<")?this.parseJSXRoot():e.prototype.parsePrimaryExpression.call(this)},t.prototype.startJSX=function(){this.scanner.index=this.startMarker.index,this.scanner.lineNumber=this.startMarker.lineNumber,this.scanner.lineStart=this.startMarker.lineStart},t.prototype.finishJSX=function(){this.nextToken()},t.prototype.reenterJSX=function(){this.startJSX(),this.expectJSX("}"),this.config.tokens&&this.tokens.pop()},t.prototype.createJSXNode=function(){return this.collectComments(),{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.createJSXChildNode=function(){return{index:this.scanner.index,line:this.scanner.lineNumber,column:this.scanner.index-this.scanner.lineStart}},t.prototype.scanXHTMLEntity=function(e){for(var t="&",n=!0,r=!1,i=!1,a=!1;!this.scanner.eof()&&n&&!r;){var o=this.scanner.source[this.scanner.index];if(o===e)break;if(r=";"===o,t+=o,++this.scanner.index,!r)switch(t.length){case 2:i="#"===o;break;case 3:i&&(a="x"===o,n=a||s.Character.isDecimalDigit(o.charCodeAt(0)),i=i&&!a);break;default:n=n&&!(i&&!s.Character.isDecimalDigit(o.charCodeAt(0))),n=n&&!(a&&!s.Character.isHexDigit(o.charCodeAt(0)))}}if(n&&r&&t.length>2){var u=t.substr(1,t.length-2);i&&u.length>1?t=String.fromCharCode(parseInt(u.substr(1),10)):a&&u.length>2?t=String.fromCharCode(parseInt("0"+u.substr(1),16)):i||a||!l.XHTMLEntities[u]||(t=l.XHTMLEntities[u])}return t},t.prototype.lexJSX=function(){var e=this.scanner.source.charCodeAt(this.scanner.index);if(60===e||62===e||47===e||58===e||61===e||123===e||125===e){var t=this.scanner.source[this.scanner.index++];return{type:o.Token.Punctuator,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index-1,end:this.scanner.index}}if(34===e||39===e){for(var n=this.scanner.index,r=this.scanner.source[this.scanner.index++],a="";!this.scanner.eof();){var u=this.scanner.source[this.scanner.index++];if(u===r)break;a+="&"===u?this.scanXHTMLEntity(r):u}return{type:o.Token.StringLiteral,value:a,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}if(46===e){var l=this.scanner.source.charCodeAt(this.scanner.index+1),c=this.scanner.source.charCodeAt(this.scanner.index+2),t=46===l&&46===c?"...":".",n=this.scanner.index;return this.scanner.index+=t.length,{type:o.Token.Punctuator,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}if(96===e)return{type:o.Token.Template,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:this.scanner.index,end:this.scanner.index};if(s.Character.isIdentifierStart(e)&&92!==e){var n=this.scanner.index;for(++this.scanner.index;!this.scanner.eof();){var u=this.scanner.source.charCodeAt(this.scanner.index);if(s.Character.isIdentifierPart(u)&&92!==u)++this.scanner.index;else{if(45!==u)break;++this.scanner.index}}var p=this.scanner.source.slice(n,this.scanner.index);return{type:i.Identifier,value:p,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:n,end:this.scanner.index}}this.scanner.throwUnexpectedToken()},t.prototype.nextJSXToken=function(){this.collectComments(),this.startMarker.index=this.scanner.index,this.startMarker.lineNumber=this.scanner.lineNumber,this.startMarker.lineStart=this.scanner.lineStart;var e=this.lexJSX();return this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart,this.config.tokens&&this.tokens.push(this.convertToken(e)),e},t.prototype.nextJSXText=function(){this.startMarker.index=this.scanner.index,this.startMarker.lineNumber=this.scanner.lineNumber,this.startMarker.lineStart=this.scanner.lineStart;for(var e=this.scanner.index,t="";!this.scanner.eof();){var n=this.scanner.source[this.scanner.index];if("{"===n||"<"===n)break;++this.scanner.index,t+=n,s.Character.isLineTerminator(n.charCodeAt(0))&&(++this.scanner.lineNumber,"\r"===n&&"\n"===this.scanner.source[this.scanner.index]&&++this.scanner.index,this.scanner.lineStart=this.scanner.index)}this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart;var r={type:i.Text,value:t,lineNumber:this.scanner.lineNumber,lineStart:this.scanner.lineStart,start:e,end:this.scanner.index};return t.length>0&&this.config.tokens&&this.tokens.push(this.convertToken(r)),r},t.prototype.peekJSXToken=function(){var e=this.scanner.index,t=this.scanner.lineNumber,n=this.scanner.lineStart;this.scanner.scanComments();var r=this.lexJSX();return this.scanner.index=e,this.scanner.lineNumber=t,this.scanner.lineStart=n,r},t.prototype.expectJSX=function(e){var t=this.nextJSXToken();t.type===o.Token.Punctuator&&t.value===e||this.throwUnexpectedToken(t)},t.prototype.matchJSX=function(e){var t=this.peekJSXToken();return t.type===o.Token.Punctuator&&t.value===e},t.prototype.parseJSXIdentifier=function(){var e=this.createJSXNode(),t=this.nextJSXToken();return t.type!==i.Identifier&&this.throwUnexpectedToken(t),this.finalize(e,new f.JSXIdentifier(t.value))},t.prototype.parseJSXElementName=function(){var e=this.createJSXNode(),t=this.parseJSXIdentifier();if(this.matchJSX(":")){var n=t;this.expectJSX(":");var r=this.parseJSXIdentifier();t=this.finalize(e,new f.JSXNamespacedName(n,r))}else if(this.matchJSX("."))for(;this.matchJSX(".");){var i=t;this.expectJSX(".");var a=this.parseJSXIdentifier();t=this.finalize(e,new f.JSXMemberExpression(i,a))}return t},t.prototype.parseJSXAttributeName=function(){var e,t=this.createJSXNode(),n=this.parseJSXIdentifier();if(this.matchJSX(":")){var r=n;this.expectJSX(":");var i=this.parseJSXIdentifier();e=this.finalize(t,new f.JSXNamespacedName(r,i))}else e=n;return e},t.prototype.parseJSXStringLiteralAttribute=function(){var e=this.createJSXNode(),t=this.nextJSXToken();t.type!==o.Token.StringLiteral&&this.throwUnexpectedToken(t);var n=this.getTokenRaw(t);return this.finalize(e,new p.Literal(t.value,n))},t.prototype.parseJSXExpressionAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.finishJSX(),this.match("}")&&this.tolerateError("JSX attributes must only be assigned a non-empty expression");var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new f.JSXExpressionContainer(t))},t.prototype.parseJSXAttributeValue=function(){return this.matchJSX("{")?this.parseJSXExpressionAttribute():this.matchJSX("<")?this.parseJSXElement():this.parseJSXStringLiteralAttribute()},t.prototype.parseJSXNameValueAttribute=function(){var e=this.createJSXNode(),t=this.parseJSXAttributeName(),n=null;return this.matchJSX("=")&&(this.expectJSX("="),n=this.parseJSXAttributeValue()),this.finalize(e,new f.JSXAttribute(t,n))},t.prototype.parseJSXSpreadAttribute=function(){var e=this.createJSXNode();this.expectJSX("{"),this.expectJSX("..."),this.finishJSX();var t=this.parseAssignmentExpression();return this.reenterJSX(),this.finalize(e,new f.JSXSpreadAttribute(t))},t.prototype.parseJSXAttributes=function(){for(var e=[];!this.matchJSX("/")&&!this.matchJSX(">");){var t=this.matchJSX("{")?this.parseJSXSpreadAttribute():this.parseJSXNameValueAttribute();e.push(t)}return e},t.prototype.parseJSXOpeningElement=function(){var e=this.createJSXNode();this.expectJSX("<");var t=this.parseJSXElementName(),n=this.parseJSXAttributes(),r=this.matchJSX("/");return r&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new f.JSXOpeningElement(t,r,n))},t.prototype.parseJSXBoundaryElement=function(){var e=this.createJSXNode();if(this.expectJSX("<"),this.matchJSX("/")){this.expectJSX("/");var t=this.parseJSXElementName();return this.expectJSX(">"),this.finalize(e,new f.JSXClosingElement(t))}var n=this.parseJSXElementName(),r=this.parseJSXAttributes(),i=this.matchJSX("/");return i&&this.expectJSX("/"),this.expectJSX(">"),this.finalize(e,new f.JSXOpeningElement(n,i,r))},t.prototype.parseJSXEmptyExpression=function(){var e=this.createJSXChildNode();return this.collectComments(),this.lastMarker.index=this.scanner.index,this.lastMarker.lineNumber=this.scanner.lineNumber,this.lastMarker.lineStart=this.scanner.lineStart,this.finalize(e,new f.JSXEmptyExpression)},t.prototype.parseJSXExpressionContainer=function(){var e=this.createJSXNode();this.expectJSX("{");var t;return this.matchJSX("}")?(t=this.parseJSXEmptyExpression(),this.expectJSX("}")):(this.finishJSX(),t=this.parseAssignmentExpression(),this.reenterJSX()),this.finalize(e,new f.JSXExpressionContainer(t))},t.prototype.parseJSXChildren=function(){for(var e=[];!this.scanner.eof();){var t=this.createJSXChildNode(),n=this.nextJSXText();if(n.start0))break;var s=this.finalize(e.node,new f.JSXElement(e.opening,e.children,e.closing));e=t.pop(),e.children.push(s)}}return e},t.prototype.parseJSXElement=function(){var e=this.createJSXNode(),t=this.parseJSXOpeningElement(),n=[],r=null;if(!t.selfClosing){var i=this.parseComplexJSXElement({node:e,opening:t,closing:r,children:n});n=i.children,r=i.closing}return this.finalize(e,new f.JSXElement(t,n,r))},t.prototype.parseJSXRoot=function(){this.config.tokens&&this.tokens.pop(),this.startJSX();var e=this.parseJSXElement();return this.finishJSX(),e},t}(u.Parser);t.JSXParser=h},function(e,t){"use strict";t.XHTMLEntities={quot:'"',amp:"&",apos:"'",gt:">",nbsp:" ",iexcl:"¡",cent:"¢",pound:"£",curren:"¤",yen:"¥",brvbar:"¦",sect:"§",uml:"¨",copy:"©",ordf:"ª",laquo:"«",not:"¬",shy:"­",reg:"®",macr:"¯",deg:"°",plusmn:"±",sup2:"²",sup3:"³",acute:"´",micro:"µ",para:"¶",middot:"·",cedil:"¸",sup1:"¹",ordm:"º",raquo:"»",frac14:"¼",frac12:"½",frac34:"¾",iquest:"¿",Agrave:"À",Aacute:"Á",Acirc:"Â",Atilde:"Ã",Auml:"Ä",Aring:"Å",AElig:"Æ",Ccedil:"Ç",Egrave:"È",Eacute:"É",Ecirc:"Ê",Euml:"Ë",Igrave:"Ì",Iacute:"Í",Icirc:"Î",Iuml:"Ï",ETH:"Ð",Ntilde:"Ñ",Ograve:"Ò",Oacute:"Ó",Ocirc:"Ô",Otilde:"Õ",Ouml:"Ö",times:"×",Oslash:"Ø",Ugrave:"Ù",Uacute:"Ú",Ucirc:"Û",Uuml:"Ü",Yacute:"Ý",THORN:"Þ",szlig:"ß",agrave:"à",aacute:"á",acirc:"â",atilde:"ã",auml:"ä",aring:"å",aelig:"æ",ccedil:"ç",egrave:"è",eacute:"é",ecirc:"ê",euml:"ë",igrave:"ì",iacute:"í",icirc:"î",iuml:"ï",eth:"ð",ntilde:"ñ",ograve:"ò",oacute:"ó",ocirc:"ô",otilde:"õ",ouml:"ö",divide:"÷",oslash:"ø",ugrave:"ù",uacute:"ú",ucirc:"û",uuml:"ü",yacute:"ý",thorn:"þ",yuml:"ÿ",OElig:"Œ",oelig:"œ",Scaron:"Š",scaron:"š",Yuml:"Ÿ",fnof:"ƒ",circ:"ˆ",tilde:"˜",Alpha:"Α",Beta:"Β",Gamma:"Γ",Delta:"Δ",Epsilon:"Ε",Zeta:"Ζ",Eta:"Η",Theta:"Θ",Iota:"Ι",Kappa:"Κ",Lambda:"Λ",Mu:"Μ",Nu:"Ν",Xi:"Ξ",Omicron:"Ο",Pi:"Π",Rho:"Ρ",Sigma:"Σ",Tau:"Τ",Upsilon:"Υ",Phi:"Φ",Chi:"Χ",Psi:"Ψ",Omega:"Ω",alpha:"α",beta:"β",gamma:"γ",delta:"δ",epsilon:"ε",zeta:"ζ",eta:"η",theta:"θ",iota:"ι",kappa:"κ",lambda:"λ",mu:"μ",nu:"ν",xi:"ξ",omicron:"ο",pi:"π",rho:"ρ",sigmaf:"ς",sigma:"σ",tau:"τ",upsilon:"υ",phi:"φ",chi:"χ",psi:"ψ",omega:"ω",thetasym:"ϑ",upsih:"ϒ",piv:"ϖ",ensp:" ",emsp:" ",thinsp:" ",zwnj:"‌",zwj:"‍",lrm:"‎",rlm:"‏",ndash:"–",mdash:"—",lsquo:"‘",rsquo:"’",sbquo:"‚",ldquo:"“",rdquo:"”",bdquo:"„",dagger:"†",Dagger:"‡",bull:"•",hellip:"…",permil:"‰",prime:"′",Prime:"″",lsaquo:"‹",rsaquo:"›",oline:"‾",frasl:"⁄",euro:"€",image:"ℑ",weierp:"℘",real:"ℜ",trade:"™",alefsym:"ℵ",larr:"←",uarr:"↑",rarr:"→",darr:"↓",harr:"↔",crarr:"↵",lArr:"⇐",uArr:"⇑",rArr:"⇒",dArr:"⇓",hArr:"⇔",forall:"∀",part:"∂",exist:"∃",empty:"∅",nabla:"∇",isin:"∈",notin:"∉",ni:"∋",prod:"∏",sum:"∑",minus:"−",lowast:"∗",radic:"√",prop:"∝",infin:"∞",ang:"∠",and:"∧",or:"∨",cap:"∩",cup:"∪",int:"∫",there4:"∴",sim:"∼",cong:"≅",asymp:"≈",ne:"≠",equiv:"≡",le:"≤",ge:"≥",sub:"⊂",sup:"⊃",nsub:"⊄",sube:"⊆",supe:"⊇",oplus:"⊕",otimes:"⊗",perp:"⊥",sdot:"⋅",lceil:"⌈",rceil:"⌉",lfloor:"⌊",rfloor:"⌋",loz:"◊",spades:"♠",clubs:"♣",hearts:"♥",diams:"♦",lang:"⟨",rang:"⟩"}},function(e,t){"use strict";t.JSXSyntax={JSXAttribute:"JSXAttribute",JSXClosingElement:"JSXClosingElement",JSXElement:"JSXElement",JSXEmptyExpression:"JSXEmptyExpression",JSXExpressionContainer:"JSXExpressionContainer",JSXIdentifier:"JSXIdentifier",JSXMemberExpression:"JSXMemberExpression",JSXNamespacedName:"JSXNamespacedName",JSXOpeningElement:"JSXOpeningElement",JSXSpreadAttribute:"JSXSpreadAttribute",JSXText:"JSXText"}},function(e,t,n){"use strict";var r=n(13),i=function(){function e(e){this.type=r.JSXSyntax.JSXClosingElement,this.name=e}return e}();t.JSXClosingElement=i;var a=function(){function e(e,t,n){this.type=r.JSXSyntax.JSXElement,this.openingElement=e,this.children=t,this.closingElement=n}return e}();t.JSXElement=a;var s=function(){function e(){this.type=r.JSXSyntax.JSXEmptyExpression}return e}();t.JSXEmptyExpression=s;var o=function(){function e(e){this.type=r.JSXSyntax.JSXExpressionContainer,this.expression=e}return e}();t.JSXExpressionContainer=o;var u=function(){function e(e){this.type=r.JSXSyntax.JSXIdentifier,this.name=e}return e}();t.JSXIdentifier=u;var l=function(){function e(e,t){this.type=r.JSXSyntax.JSXMemberExpression,this.object=e,this.property=t}return e}();t.JSXMemberExpression=l;var c=function(){function e(e,t){this.type=r.JSXSyntax.JSXAttribute,this.name=e,this.value=t}return e}();t.JSXAttribute=c;var p=function(){function e(e,t){this.type=r.JSXSyntax.JSXNamespacedName,this.namespace=e,this.name=t}return e}();t.JSXNamespacedName=p;var f=function(){function e(e,t,n){this.type=r.JSXSyntax.JSXOpeningElement,this.name=e,this.selfClosing=t,this.attributes=n}return e}();t.JSXOpeningElement=f;var h=function(){function e(e){this.type=r.JSXSyntax.JSXSpreadAttribute,this.argument=e}return e}();t.JSXSpreadAttribute=h;var d=function(){function e(e,t){this.type=r.JSXSyntax.JSXText,this.value=e,this.raw=t}return e}();t.JSXText=d},function(e,t,n){"use strict";var r=n(8),i=n(6),a=n(7),s=function(){function e(){this.values=[],this.curly=this.paren=-1}return e.prototype.beforeFunctionExpression=function(e){return["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","**=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","**","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="].indexOf(e)>=0},e.prototype.isRegexStart=function(){var e=this.values[this.values.length-1],t=null!==e;switch(e){case"this":case"]":t=!1;break;case")":var n=this.values[this.paren-1];t="if"===n||"while"===n||"for"===n||"with"===n;break;case"}":if(t=!1,"function"===this.values[this.curly-3]){var r=this.values[this.curly-4];t=!!r&&!this.beforeFunctionExpression(r)}else if("function"===this.values[this.curly-4]){var i=this.values[this.curly-5];t=!i||!this.beforeFunctionExpression(i)}}return t},e.prototype.push=function(e){e.type===a.Token.Punctuator||e.type===a.Token.Keyword?("{"===e.value?this.curly=this.values.length:"("===e.value&&(this.paren=this.values.length),this.values.push(e.value)):this.values.push(null)},e}(),o=function(){function e(e,t){this.errorHandler=new i.ErrorHandler,this.errorHandler.tolerant=!!t&&("boolean"==typeof t.tolerant&&t.tolerant),this.scanner=new r.Scanner(e,this.errorHandler),this.scanner.trackComment=!!t&&("boolean"==typeof t.comment&&t.comment),this.trackRange=!!t&&("boolean"==typeof t.range&&t.range),this.trackLoc=!!t&&("boolean"==typeof t.loc&&t.loc),this.buffer=[],this.reader=new s}return e.prototype.errors=function(){return this.errorHandler.errors},e.prototype.getNextToken=function(){if(0===this.buffer.length){var e=this.scanner.scanComments();if(this.scanner.trackComment)for(var t=0;tr&&(t[r]=t[n]),++r);return t.length=r,t},r(n,"makeAccessor",l)},{}],561:[function(e,t,n){arguments[4][517][0].apply(n,arguments)},{"./util":570,dup:517}],562:[function(e,t,n){arguments[4][518][0].apply(n,arguments)},{"./base64":563,dup:518}],563:[function(e,t,n){arguments[4][519][0].apply(n,arguments)},{dup:519}],564:[function(e,t,n){arguments[4][520][0].apply(n,arguments)},{dup:520}],565:[function(e,t,n){arguments[4][521][0].apply(n,arguments)},{"./util":570,dup:521}],566:[function(e,t,n){arguments[4][522][0].apply(n,arguments)},{dup:522}],567:[function(e,t,n){arguments[4][523][0].apply(n,arguments)},{"./array-set":561,"./base64-vlq":562,"./binary-search":564,"./quick-sort":566,"./util":570,dup:523}],568:[function(e,t,n){arguments[4][524][0].apply(n,arguments)},{"./array-set":561,"./base64-vlq":562,"./mapping-list":565,"./util":570,dup:524}],569:[function(e,t,n){arguments[4][525][0].apply(n,arguments)},{"./source-map-generator":568,"./util":570,dup:525}],570:[function(e,t,n){arguments[4][526][0].apply(n,arguments)},{dup:526}],571:[function(e,t,n){arguments[4][527][0].apply(n,arguments)},{"./lib/source-map-consumer":567,"./lib/source-map-generator":568,"./lib/source-node":569,dup:527}],572:[function(e,t,n){t.exports={plugins:[e("babel-plugin-syntax-async-functions"),e("babel-plugin-syntax-async-generators"),e("babel-plugin-transform-es2015-classes"),e("babel-plugin-transform-es2015-arrow-functions"),e("babel-plugin-transform-es2015-block-scoping"),e("babel-plugin-transform-es2015-for-of"),e("regenerator-transform").default]}},{"babel-plugin-syntax-async-functions":573,"babel-plugin-syntax-async-generators":574,"babel-plugin-transform-es2015-arrow-functions":575,"babel-plugin-transform-es2015-block-scoping":576,"babel-plugin-transform-es2015-classes":936,"babel-plugin-transform-es2015-for-of":1629,"regenerator-transform":1632}],573:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncFunctions")}}},t.exports=n.default},{}],574:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return{manipulateOptions:function(e,t){t.plugins.push("asyncGenerators")}}},t.exports=n.default},{}],575:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(e){var t=e.types;return{visitor:{ArrowFunctionExpression:function(e,n){if(n.opts.spec){var r=e.node;if(r.shadow)return;r.shadow={this:!1},r.type="FunctionExpression";var i=t.thisExpression();i._forceShadow=e,e.ensureBlock(),e.get("body").unshiftContainer("body",t.expressionStatement(t.callExpression(n.addHelper("newArrowCheck"),[t.thisExpression(),i]))),e.replaceWith(t.callExpression(t.memberExpression(r,t.identifier("bind")),[t.thisExpression()]))}else e.arrowFunctionToShadowed()}}}},t.exports=n.default},{}],576:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return x.isLoop(e.parent)||x.isCatchClause(e.parent)}function s(e){return!!x.isVariableDeclaration(e)&&(!!e[x.BLOCK_SCOPED_SYMBOL]||("let"===e.kind||"const"===e.kind))}function o(e,t,n,r){var i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];if(t||(t=e.node),!x.isFor(n))for(var a=0;a=0)return;s=s+"|"+n.label.name}else{if(t.ignoreLabeless)return;if(t.inSwitchCase)return;if(x.isBreakStatement(n)&&x.isSwitchCase(r))return}t.hasBreakContinue=!0,t.map[s]=n,a=x.stringLiteral(s)}e.isReturnStatement()&&(t.hasReturn=!0,a=x.objectExpression([x.objectProperty(x.identifier("v"),n.argument||i.buildUndefinedNode())])),a&&(a=x.returnStatement(a),a[this.LOOP_IGNORE]=!0,e.skip(),e.replaceWith(x.inherits(a,n)))}}},O=function(){function e(t,n,r,i,a){(0,y.default)(this,e),this.parent=r,this.scope=i,this.file=a,this.blockPath=n,this.block=n.node,this.outsideLetReferences=(0,h.default)(null),this.hasLetReferences=!1,this.letReferences=(0,h.default)(null),this.body=[],t&&(this.loopParent=t.parent,this.loopLabel=x.isLabeledStatement(this.loopParent)&&this.loopParent.label,this.loopPath=t,this.loop=t.node)}return e.prototype.run=function(){var e=this.block;if(!e._letDone){e._letDone=!0;var t=this.getLetReferences();if(x.isFunction(this.parent)||x.isProgram(this.block))return void this.updateScopeInfo();if(this.hasLetReferences)return t?this.wrapClosure():this.remap(),this.updateScopeInfo(t),this.loopLabel&&!x.isLabeledStatement(this.loopParent)?x.labeledStatement(this.loopLabel,this.loop):void 0}},e.prototype.updateScopeInfo=function(e){var t=this.scope,n=t.getFunctionParent(),r=this.letReferences;for(var i in r){var a=r[i],s=t.getBinding(a.name);s&&("let"!==s.kind&&"const"!==s.kind||(s.kind="var",e?t.removeBinding(a.name):t.moveBindingTo(a.name,n)))}},e.prototype.remap=function(){var e=this.letReferences,t=this.scope;for(var n in e){var r=e[n];(t.parentHasBinding(n)||t.hasGlobal(n))&&(t.hasOwnBinding(n)&&t.rename(r.name),this.blockPath.scope.hasOwnBinding(n)&&this.blockPath.scope.rename(r.name))}},e.prototype.wrapClosure=function(){var e=this.block,t=this.outsideLetReferences;if(this.loop)for(var n in t){var r=t[n];(this.scope.hasGlobal(r.name)||this.scope.parentHasBinding(r.name))&&(delete t[r.name],delete this.letReferences[r.name],this.scope.rename(r.name),
+this.letReferences[r.name]=r,t[r.name]=r)}this.has=this.checkLoop(),this.hoistVarDeclarations();var i=(0,E.default)(t),a=(0,E.default)(t),s=this.blockPath.isSwitchStatement(),o=x.functionExpression(null,i,x.blockStatement(s?[e]:e.body));o.shadow=!0,this.addContinuations(o);var u=o;this.loop&&(u=this.scope.generateUidIdentifier("loop"),this.loopPath.insertBefore(x.variableDeclaration("var",[x.variableDeclarator(u,o)])));var l=x.callExpression(u,a),c=this.scope.generateUidIdentifier("ret");b.default.hasType(o.body,this.scope,"YieldExpression",x.FUNCTION_TYPES)&&(o.generator=!0,l=x.yieldExpression(l,!0)),b.default.hasType(o.body,this.scope,"AwaitExpression",x.FUNCTION_TYPES)&&(o.async=!0,l=x.awaitExpression(l)),this.buildClosure(c,l),s?this.blockPath.replaceWithMultiple(this.body):e.body=this.body},e.prototype.buildClosure=function(e,t){var n=this.has;n.hasReturn||n.hasBreakContinue?this.buildHas(e,t):this.body.push(x.expressionStatement(t))},e.prototype.addContinuations=function(e){var t={reassignments:{},outsideReferences:this.outsideLetReferences};this.scope.traverse(e,j,t);for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:"value",r=arguments[3],i=void 0;e.static?(this.hasStaticDescriptors=!0,i=this.staticMutatorMap):(this.hasInstanceDescriptors=!0,i=this.instanceMutatorMap);var a=y.push(i,e,n,this.file,r);return t&&(a.enumerable=v.booleanLiteral(!0)),a},e.prototype.constructorMeMaybe=function(){for(var e=!1,t=this.path.get("body.body"),n=t,r=Array.isArray(n),i=0,n=r?n:(0,s.default)(n);;){var a;if(r){if(i>=n.length)break;a=n[i++]}else{if(i=n.next(),i.done)break;a=i.value}if(e=a.equals("kind","constructor"))break}if(!e){var o=void 0,u=void 0;if(this.isDerived){var l=x().expression;o=l.params,u=l.body}else o=[],u=v.blockStatement([]);this.path.get("body").unshiftContainer("body",v.classMethod("constructor",v.identifier("constructor"),o,u))}},e.prototype.buildBody=function(){if(this.constructorMeMaybe(),this.pushBody(),this.verifyConstructor(),this.userConstructor){var e=this.constructorBody;e.body=e.body.concat(this.userConstructor.body.body),v.inherits(this.constructor,this.userConstructor),v.inherits(e,this.userConstructor.body)}this.pushDescriptors()},e.prototype.pushBody=function(){for(var e=this.path.get("body.body"),t=e,n=Array.isArray(t),r=0,t=n?t:(0,s.default)(t);;){var i;if(n){if(r>=t.length)break;i=t[r++]}else{if(r=t.next(),r.done)break;i=r.value}var a=i,o=a.node;if(a.isClassProperty())throw a.buildCodeFrameError("Missing class properties transform.");if(o.decorators)throw a.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");if(v.isClassMethod(o)){var u="constructor"===o.kind;if(u&&(a.traverse(E,this),!this.hasBareSuper&&this.isDerived))throw a.buildCodeFrameError("missing super() call in constructor");var l=new p.default({forceSuperMemoisation:u,methodPath:a,methodNode:o,objectRef:this.classRef,superRef:this.superName,isStatic:o.static,isLoose:this.isLoose,scope:this.scope,file:this.file},!0);l.replace(),u?this.pushConstructor(l,o,a):this.pushMethod(o,a)}}},e.prototype.clearDescriptors=function(){this.hasInstanceDescriptors=!1,this.hasStaticDescriptors=!1,this.instanceMutatorMap={},this.staticMutatorMap={}},e.prototype.pushDescriptors=function(){this.pushInherits();var e=this.body,t=void 0,n=void 0;if(this.hasInstanceDescriptors&&(t=y.toClassObject(this.instanceMutatorMap)),this.hasStaticDescriptors&&(n=y.toClassObject(this.staticMutatorMap)),t||n){t&&(t=y.toComputedObjectFromClass(t)),n&&(n=y.toComputedObjectFromClass(n));var r=v.nullLiteral(),i=[this.classRef,r,r,r,r];t&&(i[1]=t),n&&(i[2]=n),this.instanceInitializersId&&(i[3]=this.instanceInitializersId,e.unshift(this.buildObjectAssignment(this.instanceInitializersId))),this.staticInitializersId&&(i[4]=this.staticInitializersId,e.unshift(this.buildObjectAssignment(this.staticInitializersId)));for(var a=0,s=0;s=o.length)break;c=o[l++]}else{if(l=o.next(),l.done)break;c=l.value}var p=c;this.wrapSuperCall(p,i,a,n),r&&p.find(function(e){return e===t||(e.isLoop()||e.isConditional()?(r=!1,!0):void 0)})}for(var f=this.superThises,h=Array.isArray(f),d=0,f=h?f:(0,s.default)(f);;){var y;if(h){if(d>=f.length)break;y=f[d++]}else{if(d=f.next(),d.done)break;y=d.value}y.replaceWith(a)}var m=function(t){return v.callExpression(e.file.addHelper("possibleConstructorReturn"),[a].concat(t||[]))},b=n.get("body");b.length&&!b.pop().isReturnStatement()&&n.pushContainer("body",v.returnStatement(r?a:m()));for(var g=this.superReturns,x=Array.isArray(g),_=0,g=x?g:(0,s.default)(g);;){var E;if(x){if(_>=g.length)break;E=g[_++]}else{if(_=g.next(),_.done)break;E=_.value}var D=E;if(D.node.argument){var C=D.scope.generateDeclaredUidIdentifier("ret");D.get("argument").replaceWithMultiple([v.assignmentExpression("=",C,D.node.argument),m(C)])}else D.get("argument").replaceWith(m())}}},e.prototype.pushMethod=function(e,t){var n=t?t.scope:this.scope;"method"===e.kind&&this._processMethod(e,n)||this.pushToMap(e,!1,null,n)},e.prototype._processMethod=function(){return!1},e.prototype.pushConstructor=function(e,t,n){this.bareSupers=e.bareSupers,this.superReturns=e.returns,n.scope.hasOwnBinding(this.classRef.name)&&n.scope.rename(this.classRef.name);var r=this.constructor;this.userConstructorPath=n,this.userConstructor=t,this.hasConstructor=!0,v.inheritsComments(r,t),r._ignoreUserWhitespace=!0,r.params=t.params,v.inherits(r.body,t.body),r.body.directives=t.body.directives,this._pushConstructor()},e.prototype._pushConstructor=function(){this.pushedConstructor||(this.pushedConstructor=!0,(this.hasInstanceDescriptors||this.hasStaticDescriptors)&&this.pushDescriptors(),this.body.push(this.constructor),this.pushInherits())},e.prototype.pushInherits=function(){this.isDerived&&!this.pushedInherits&&(this.pushedInherits=!0,this.body.unshift(v.expressionStatement(v.callExpression(this.file.addHelper("inherits"),[this.classRef,this.superName]))))},e}();n.default=D,t.exports=n.default},{"babel-helper-define-map":939,"babel-helper-optimise-call-expression":1023,"babel-helper-replace-supers":1024,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-template":1144,"babel-traverse":1284,"babel-types":1480}],939:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){return!g.isClassMethod(e)&&!g.isObjectMethod(e)||"get"!==e.kind&&"set"!==e.kind?"value":e.kind}function s(e,t,n,r,i){var s=g.toKeyAlias(t),o={};if((0,m.default)(e,s)&&(o=e[s]),e[s]=o,o._inherits=o._inherits||[],o._inherits.push(t),o._key=t.key,t.computed&&(o._computed=!0),t.decorators){var u=o.decorators=o.decorators||g.arrayExpression([]);u.elements=u.elements.concat(t.decorators.map(function(e){return e.expression}).reverse())}if(o.value||o.initializer)throw r.buildCodeFrameError(t,"Key conflict with sibling node");var l=void 0,c=void 0;(g.isObjectProperty(t)||g.isObjectMethod(t)||g.isClassMethod(t))&&(l=g.toComputedKey(t,t.key)),g.isObjectProperty(t)||g.isClassProperty(t)?c=t.value:(g.isObjectMethod(t)||g.isClassMethod(t))&&(c=g.functionExpression(null,t.params,t.body,t.generator,t.async),c.returnType=t.returnType);var p=a(t);return n&&"value"===p||(n=p),i&&g.isStringLiteral(l)&&("value"===n||"initializer"===n)&&g.isFunctionExpression(c)&&(c=(0,f.default)({id:l,node:c,scope:i})),c&&(g.inheritsComments(c,t),o[n]=c),o}function o(e){for(var t in e)if(e[t]._computed)return!0;return!1}function u(e){for(var t=g.arrayExpression([]),n=0;n1&&void 0!==arguments[1]&&arguments[1];(0,l.default)(this,e),this.forceSuperMemoisation=t.forceSuperMemoisation,this.methodPath=t.methodPath,this.methodNode=t.methodNode,this.superRef=t.superRef,this.isStatic=t.isStatic,this.hasSuper=!1,this.inClass=n,this.isLoose=t.isLoose,this.scope=this.methodPath.scope,this.file=t.file,this.opts=t,this.bareSupers=[],this.returns=[],this.thises=[]}return e.prototype.getObjectRef=function(){return this.opts.objectRef||this.opts.getObjectRef()},e.prototype.setSuperProperty=function(e,t,n){return b.callExpression(this.file.addHelper("set"),[o(this.getObjectRef(),this.isStatic),n?e:b.stringLiteral(e.name),t,b.thisExpression()])},e.prototype.getSuperProperty=function(e,t){return b.callExpression(this.file.addHelper("get"),[o(this.getObjectRef(),this.isStatic),t?e:b.stringLiteral(e.name),b.thisExpression()])},e.prototype.replace=function(){this.methodPath.traverse(v,this)},e.prototype.getLooseSuperProperty=function(e,t){var n=this.methodNode,r=this.superRef||b.identifier("Function");return t.property===e?void 0:b.isCallExpression(t,{callee:e})?void 0:b.isMemberExpression(t)&&!n.static?b.memberExpression(r,b.identifier("prototype")):r},e.prototype.looseHandle=function(e){var t=e.node;if(e.isSuper())return this.getLooseSuperProperty(t,e.parent);if(e.isCallExpression()){var n=t.callee;if(!b.isMemberExpression(n))return;if(!b.isSuper(n.object))return;return b.appendToMemberExpression(n,b.identifier("call")),t.arguments.unshift(b.thisExpression()),!0}},e.prototype.specHandleAssignmentExpression=function(e,t,n){return"="===n.operator?this.setSuperProperty(n.left.property,n.right,n.left.computed):(e=e||t.scope.generateUidIdentifier("ref"),[b.variableDeclaration("var",[b.variableDeclarator(e,n.left)]),b.expressionStatement(b.assignmentExpression("=",n.left,b.binaryExpression(n.operator[0],e,n.right)))])},e.prototype.specHandle=function(e){var t=void 0,n=void 0,r=void 0,i=e.parent,o=e.node;if(a(o,i))throw e.buildCodeFrameError(y.get("classesIllegalBareSuper"));if(b.isCallExpression(o)){var u=o.callee;if(b.isSuper(u))return;s(u)&&(t=u.property,n=u.computed,r=o.arguments)}else if(b.isMemberExpression(o)&&b.isSuper(o.object))t=o.property,n=o.computed;else{if(b.isUpdateExpression(o)&&s(o.argument)){var l=b.binaryExpression(o.operator[0],o.argument,b.numericLiteral(1));if(o.prefix)return this.specHandleAssignmentExpression(null,e,l);var c=e.scope.generateUidIdentifier("ref");return this.specHandleAssignmentExpression(c,e,l).concat(b.expressionStatement(c))}if(b.isAssignmentExpression(o)&&s(o.left))return this.specHandleAssignmentExpression(null,e,o)}if(t){var p=this.getSuperProperty(t,n);return r?this.optimiseCall(p,r):p}},e.prototype.optimiseCall=function(e,t){var n=b.thisExpression();return n[g]=!0,(0,h.default)(e,n,t)},e}();n.default=x,t.exports=n.default},{"babel-helper-optimise-call-expression":1023,"babel-messages":1025,"babel-runtime/core-js/symbol":1034,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480}],1025:[function(e,t,n){arguments[4][99][0].apply(n,arguments)},{"babel-runtime/core-js/json/stringify":1027,dup:99,util:35}],1026:[function(e,t,n){arguments[4][100][0].apply(n,arguments)},{"core-js/library/fn/get-iterator":1042,dup:100}],1027:[function(e,t,n){arguments[4][101][0].apply(n,arguments)},{"core-js/library/fn/json/stringify":1043,dup:101}],1028:[function(e,t,n){arguments[4][102][0].apply(n,arguments)},{"core-js/library/fn/map":1044,dup:102}],1029:[function(e,t,n){arguments[4][103][0].apply(n,arguments)},{"core-js/library/fn/number/max-safe-integer":1045,dup:103}],1030:[function(e,t,n){arguments[4][105][0].apply(n,arguments)},{"core-js/library/fn/object/create":1046,dup:105}],1031:[function(e,t,n){arguments[4][106][0].apply(n,arguments)},{"core-js/library/fn/object/get-own-property-symbols":1047,dup:106}],1032:[function(e,t,n){arguments[4][107][0].apply(n,arguments)},{"core-js/library/fn/object/keys":1048,dup:107}],1033:[function(e,t,n){arguments[4][108][0].apply(n,arguments)},{"core-js/library/fn/object/set-prototype-of":1049,dup:108}],1034:[function(e,t,n){arguments[4][109][0].apply(n,arguments)},{"core-js/library/fn/symbol":1051,dup:109}],1035:[function(e,t,n){arguments[4][110][0].apply(n,arguments)},{"core-js/library/fn/symbol/for":1050,dup:110}],1036:[function(e,t,n){arguments[4][111][0].apply(n,arguments)},{"core-js/library/fn/symbol/iterator":1052,dup:111}],1037:[function(e,t,n){arguments[4][112][0].apply(n,arguments)},{"core-js/library/fn/weak-map":1053,dup:112}],1038:[function(e,t,n){arguments[4][114][0].apply(n,arguments)},{dup:114}],1039:[function(e,t,n){arguments[4][115][0].apply(n,arguments)},{"../core-js/object/create":1030,"../core-js/object/set-prototype-of":1033,"../helpers/typeof":1041,dup:115}],1040:[function(e,t,n){arguments[4][117][0].apply(n,arguments)},{"../helpers/typeof":1041,dup:117}],1041:[function(e,t,n){arguments[4][118][0].apply(n,arguments)},{"../core-js/symbol":1034,"../core-js/symbol/iterator":1036,dup:118}],1042:[function(e,t,n){arguments[4][119][0].apply(n,arguments)},{"../modules/core.get-iterator":1129,"../modules/es6.string.iterator":1137,"../modules/web.dom.iterable":1143,dup:119}],1043:[function(e,t,n){arguments[4][120][0].apply(n,arguments)},{"../../modules/_core":1069,dup:120}],1044:[function(e,t,n){arguments[4][121][0].apply(n,arguments)},{"../modules/_core":1069,"../modules/es6.map":1131,"../modules/es6.object.to-string":1136,"../modules/es6.string.iterator":1137,"../modules/es7.map.to-json":1140,"../modules/web.dom.iterable":1143,dup:121}],1045:[function(e,t,n){arguments[4][122][0].apply(n,arguments)},{"../../modules/es6.number.max-safe-integer":1132,dup:122}],1046:[function(e,t,n){arguments[4][124][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.create":1133,dup:124}],1047:[function(e,t,n){arguments[4][125][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.symbol":1138,dup:125}],1048:[function(e,t,n){arguments[4][126][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.keys":1134,dup:126}],1049:[function(e,t,n){arguments[4][127][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.set-prototype-of":1135,dup:127}],1050:[function(e,t,n){arguments[4][128][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.symbol":1138,dup:128}],1051:[function(e,t,n){arguments[4][129][0].apply(n,arguments)},{"../../modules/_core":1069,"../../modules/es6.object.to-string":1136,"../../modules/es6.symbol":1138,"../../modules/es7.symbol.async-iterator":1141,"../../modules/es7.symbol.observable":1142,dup:129}],1052:[function(e,t,n){arguments[4][130][0].apply(n,arguments)},{"../../modules/_wks-ext":1126,"../../modules/es6.string.iterator":1137,"../../modules/web.dom.iterable":1143,dup:130}],1053:[function(e,t,n){arguments[4][131][0].apply(n,arguments)},{"../modules/_core":1069,"../modules/es6.object.to-string":1136,"../modules/es6.weak-map":1139,"../modules/web.dom.iterable":1143,dup:131}],1054:[function(e,t,n){arguments[4][133][0].apply(n,arguments)},{dup:133}],1055:[function(e,t,n){arguments[4][134][0].apply(n,arguments)},{dup:134}],1056:[function(e,t,n){arguments[4][135][0].apply(n,arguments)},{dup:135}],1057:[function(e,t,n){arguments[4][136][0].apply(n,arguments)},{"./_is-object":1087,dup:136}],1058:[function(e,t,n){arguments[4][137][0].apply(n,arguments)},{"./_for-of":1078,dup:137}],1059:[function(e,t,n){arguments[4][138][0].apply(n,arguments)},{"./_to-index":1118,"./_to-iobject":1120,"./_to-length":1121,dup:138}],1060:[function(e,t,n){arguments[4][139][0].apply(n,arguments)},{"./_array-species-create":1062,"./_ctx":1070,"./_iobject":1084,"./_to-length":1121,"./_to-object":1122,dup:139}],1061:[function(e,t,n){arguments[4][140][0].apply(n,arguments)},{"./_is-array":1086,"./_is-object":1087,"./_wks":1127,dup:140}],1062:[function(e,t,n){arguments[4][141][0].apply(n,arguments)},{"./_array-species-constructor":1061,dup:141}],1063:[function(e,t,n){arguments[4][142][0].apply(n,arguments)},{"./_cof":1064,"./_wks":1127,dup:142}],1064:[function(e,t,n){arguments[4][143][0].apply(n,arguments)},{dup:143}],1065:[function(e,t,n){arguments[4][144][0].apply(n,arguments)},{"./_an-instance":1056,"./_ctx":1070,"./_defined":1071,"./_descriptors":1072,"./_for-of":1078,"./_iter-define":1090,"./_iter-step":1091,"./_meta":1095,"./_object-create":1097,"./_object-dp":1098,"./_redefine-all":1110,"./_set-species":1113,dup:144}],1066:[function(e,t,n){arguments[4][145][0].apply(n,arguments)},{"./_array-from-iterable":1058,"./_classof":1063,dup:145}],1067:[function(e,t,n){arguments[4][146][0].apply(n,arguments)},{"./_an-instance":1056,"./_an-object":1057,"./_array-methods":1060,"./_for-of":1078,"./_has":1080,"./_is-object":1087,"./_meta":1095,"./_redefine-all":1110,dup:146}],1068:[function(e,t,n){arguments[4][147][0].apply(n,arguments)},{"./_an-instance":1056,"./_array-methods":1060,"./_descriptors":1072,"./_export":1076,"./_fails":1077,"./_for-of":1078,"./_global":1079,"./_hide":1081,"./_is-object":1087,"./_meta":1095,"./_object-dp":1098,"./_redefine-all":1110,"./_set-to-string-tag":1114,dup:147}],1069:[function(e,t,n){arguments[4][148][0].apply(n,arguments)},{dup:148}],1070:[function(e,t,n){arguments[4][149][0].apply(n,arguments)},{"./_a-function":1054,dup:149}],1071:[function(e,t,n){arguments[4][150][0].apply(n,arguments)},{dup:150}],1072:[function(e,t,n){arguments[4][151][0].apply(n,arguments)},{"./_fails":1077,dup:151}],1073:[function(e,t,n){arguments[4][152][0].apply(n,arguments)},{"./_global":1079,"./_is-object":1087,dup:152}],1074:[function(e,t,n){arguments[4][153][0].apply(n,arguments)},{dup:153}],1075:[function(e,t,n){arguments[4][154][0].apply(n,arguments)},{"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,dup:154}],1076:[function(e,t,n){arguments[4][155][0].apply(n,arguments)},{"./_core":1069,"./_ctx":1070,"./_global":1079,"./_hide":1081,dup:155}],1077:[function(e,t,n){arguments[4][156][0].apply(n,arguments)},{dup:156}],1078:[function(e,t,n){arguments[4][157][0].apply(n,arguments)},{"./_an-object":1057,"./_ctx":1070,"./_is-array-iter":1085,"./_iter-call":1088,"./_to-length":1121,"./core.get-iterator-method":1128,dup:157}],1079:[function(e,t,n){arguments[4][158][0].apply(n,arguments)},{dup:158}],1080:[function(e,t,n){arguments[4][159][0].apply(n,arguments)},{dup:159}],1081:[function(e,t,n){arguments[4][160][0].apply(n,arguments)},{"./_descriptors":1072,"./_object-dp":1098,"./_property-desc":1109,dup:160}],1082:[function(e,t,n){arguments[4][161][0].apply(n,arguments)},{"./_global":1079,dup:161}],1083:[function(e,t,n){arguments[4][162][0].apply(n,arguments)},{"./_descriptors":1072,"./_dom-create":1073,"./_fails":1077,dup:162}],1084:[function(e,t,n){arguments[4][163][0].apply(n,arguments)},{"./_cof":1064,dup:163}],1085:[function(e,t,n){arguments[4][164][0].apply(n,arguments)},{"./_iterators":1092,"./_wks":1127,dup:164}],1086:[function(e,t,n){arguments[4][165][0].apply(n,arguments)},{"./_cof":1064,dup:165}],1087:[function(e,t,n){arguments[4][166][0].apply(n,arguments)},{dup:166}],1088:[function(e,t,n){arguments[4][167][0].apply(n,arguments)},{"./_an-object":1057,dup:167}],1089:[function(e,t,n){arguments[4][168][0].apply(n,arguments)},{"./_hide":1081,"./_object-create":1097,"./_property-desc":1109,"./_set-to-string-tag":1114,"./_wks":1127,dup:168}],1090:[function(e,t,n){arguments[4][169][0].apply(n,arguments)},{"./_export":1076,"./_has":1080,"./_hide":1081,"./_iter-create":1089,"./_iterators":1092,"./_library":1094,"./_object-gpo":1104,"./_redefine":1111,"./_set-to-string-tag":1114,"./_wks":1127,dup:169}],1091:[function(e,t,n){arguments[4][170][0].apply(n,arguments)},{dup:170}],1092:[function(e,t,n){arguments[4][171][0].apply(n,arguments)},{dup:171}],1093:[function(e,t,n){arguments[4][172][0].apply(n,arguments)},{"./_object-keys":1106,"./_to-iobject":1120,dup:172}],1094:[function(e,t,n){arguments[4][173][0].apply(n,arguments)},{dup:173}],1095:[function(e,t,n){arguments[4][174][0].apply(n,arguments)},{"./_fails":1077,"./_has":1080,"./_is-object":1087,"./_object-dp":1098,"./_uid":1124,dup:174}],1096:[function(e,t,n){arguments[4][175][0].apply(n,arguments)},{"./_fails":1077,"./_iobject":1084,"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,"./_to-object":1122,dup:175}],1097:[function(e,t,n){arguments[4][176][0].apply(n,arguments)},{"./_an-object":1057,"./_dom-create":1073,"./_enum-bug-keys":1074,"./_html":1082,"./_object-dps":1099,"./_shared-key":1115,dup:176}],1098:[function(e,t,n){arguments[4][177][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_ie8-dom-define":1083,"./_to-primitive":1123,dup:177}],1099:[function(e,t,n){arguments[4][178][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_object-dp":1098,"./_object-keys":1106,dup:178}],1100:[function(e,t,n){arguments[4][179][0].apply(n,arguments)},{"./_descriptors":1072,"./_has":1080,"./_ie8-dom-define":1083,"./_object-pie":1107,"./_property-desc":1109,"./_to-iobject":1120,"./_to-primitive":1123,dup:179}],1101:[function(e,t,n){arguments[4][180][0].apply(n,arguments)},{"./_object-gopn":1102,"./_to-iobject":1120,dup:180}],1102:[function(e,t,n){arguments[4][181][0].apply(n,arguments)},{"./_enum-bug-keys":1074,"./_object-keys-internal":1105,dup:181}],1103:[function(e,t,n){arguments[4][182][0].apply(n,arguments)},{dup:182}],1104:[function(e,t,n){arguments[4][183][0].apply(n,arguments)},{"./_has":1080,"./_shared-key":1115,"./_to-object":1122,dup:183}],1105:[function(e,t,n){arguments[4][184][0].apply(n,arguments)},{"./_array-includes":1059,"./_has":1080,"./_shared-key":1115,"./_to-iobject":1120,dup:184}],1106:[function(e,t,n){arguments[4][185][0].apply(n,arguments)},{"./_enum-bug-keys":1074,"./_object-keys-internal":1105,dup:185}],1107:[function(e,t,n){arguments[4][186][0].apply(n,arguments)},{dup:186}],1108:[function(e,t,n){arguments[4][187][0].apply(n,arguments)},{"./_core":1069,"./_export":1076,"./_fails":1077,dup:187}],1109:[function(e,t,n){arguments[4][188][0].apply(n,arguments)},{dup:188}],1110:[function(e,t,n){arguments[4][189][0].apply(n,arguments)},{"./_hide":1081,dup:189}],1111:[function(e,t,n){arguments[4][190][0].apply(n,arguments)},{"./_hide":1081,dup:190}],1112:[function(e,t,n){arguments[4][191][0].apply(n,arguments)},{"./_an-object":1057,"./_ctx":1070,"./_is-object":1087,"./_object-gopd":1100,dup:191}],1113:[function(e,t,n){arguments[4][192][0].apply(n,arguments)},{"./_core":1069,"./_descriptors":1072,"./_global":1079,"./_object-dp":1098,"./_wks":1127,dup:192}],1114:[function(e,t,n){arguments[4][193][0].apply(n,arguments)},{"./_has":1080,"./_object-dp":1098,"./_wks":1127,dup:193}],1115:[function(e,t,n){arguments[4][194][0].apply(n,arguments)},{"./_shared":1116,"./_uid":1124,dup:194}],1116:[function(e,t,n){arguments[4][195][0].apply(n,arguments)},{"./_global":1079,dup:195}],1117:[function(e,t,n){arguments[4][196][0].apply(n,arguments)},{"./_defined":1071,"./_to-integer":1119,dup:196}],1118:[function(e,t,n){arguments[4][197][0].apply(n,arguments)},{"./_to-integer":1119,dup:197}],1119:[function(e,t,n){arguments[4][198][0].apply(n,arguments)},{dup:198}],1120:[function(e,t,n){arguments[4][199][0].apply(n,arguments)},{"./_defined":1071,"./_iobject":1084,dup:199}],1121:[function(e,t,n){arguments[4][200][0].apply(n,arguments)},{"./_to-integer":1119,dup:200}],1122:[function(e,t,n){arguments[4][201][0].apply(n,arguments)},{"./_defined":1071,dup:201}],1123:[function(e,t,n){arguments[4][202][0].apply(n,arguments)},{"./_is-object":1087,dup:202}],1124:[function(e,t,n){arguments[4][203][0].apply(n,arguments)},{dup:203}],1125:[function(e,t,n){arguments[4][204][0].apply(n,arguments)},{"./_core":1069,"./_global":1079,"./_library":1094,"./_object-dp":1098,"./_wks-ext":1126,dup:204}],1126:[function(e,t,n){arguments[4][205][0].apply(n,arguments)},{"./_wks":1127,dup:205}],1127:[function(e,t,n){arguments[4][206][0].apply(n,arguments)},{"./_global":1079,"./_shared":1116,"./_uid":1124,dup:206}],1128:[function(e,t,n){arguments[4][207][0].apply(n,arguments)},{"./_classof":1063,"./_core":1069,"./_iterators":1092,"./_wks":1127,dup:207}],1129:[function(e,t,n){arguments[4][208][0].apply(n,arguments)},{"./_an-object":1057,"./_core":1069,"./core.get-iterator-method":1128,dup:208}],1130:[function(e,t,n){arguments[4][209][0].apply(n,arguments)},{"./_add-to-unscopables":1055,"./_iter-define":1090,"./_iter-step":1091,"./_iterators":1092,"./_to-iobject":1120,dup:209}],1131:[function(e,t,n){arguments[4][210][0].apply(n,arguments)},{"./_collection":1068,"./_collection-strong":1065,dup:210}],1132:[function(e,t,n){arguments[4][211][0].apply(n,arguments)},{"./_export":1076,dup:211}],1133:[function(e,t,n){arguments[4][213][0].apply(n,arguments)},{"./_export":1076,"./_object-create":1097,dup:213}],1134:[function(e,t,n){arguments[4][214][0].apply(n,arguments)},{"./_object-keys":1106,"./_object-sap":1108,"./_to-object":1122,dup:214}],1135:[function(e,t,n){arguments[4][215][0].apply(n,arguments)},{"./_export":1076,"./_set-proto":1112,dup:215}],1136:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],1137:[function(e,t,n){arguments[4][217][0].apply(n,arguments)},{"./_iter-define":1090,"./_string-at":1117,dup:217}],1138:[function(e,t,n){arguments[4][218][0].apply(n,arguments)},{"./_an-object":1057,"./_descriptors":1072,"./_enum-keys":1075,"./_export":1076,"./_fails":1077,"./_global":1079,"./_has":1080,"./_hide":1081,"./_is-array":1086,"./_keyof":1093,"./_library":1094,"./_meta":1095,"./_object-create":1097,"./_object-dp":1098,"./_object-gopd":1100,"./_object-gopn":1102,"./_object-gopn-ext":1101,"./_object-gops":1103,"./_object-keys":1106,"./_object-pie":1107,"./_property-desc":1109,"./_redefine":1111,"./_set-to-string-tag":1114,"./_shared":1116,"./_to-iobject":1120,"./_to-primitive":1123,"./_uid":1124,"./_wks":1127,"./_wks-define":1125,"./_wks-ext":1126,dup:218}],1139:[function(e,t,n){arguments[4][219][0].apply(n,arguments)},{"./_array-methods":1060,"./_collection":1068,"./_collection-weak":1067,"./_is-object":1087,"./_meta":1095,"./_object-assign":1096,"./_redefine":1111,dup:219}],1140:[function(e,t,n){arguments[4][221][0].apply(n,arguments)},{"./_collection-to-json":1066,"./_export":1076,dup:221}],1141:[function(e,t,n){arguments[4][222][0].apply(n,arguments)},{"./_wks-define":1125,dup:222}],1142:[function(e,t,n){arguments[4][223][0].apply(n,arguments)},{"./_wks-define":1125,dup:223}],1143:[function(e,t,n){arguments[4][224][0].apply(n,arguments)},{"./_global":1079,"./_hide":1081,"./_iterators":1092,"./_wks":1127,"./es6.array.iterator":1130,dup:224}],1144:[function(e,t,n){arguments[4][225][0].apply(n,arguments)},{"babel-runtime/core-js/symbol":1034,"babel-traverse":1284,"babel-types":1480,babylon:1145,dup:225,"lodash/assign":1259,"lodash/cloneDeep":1260,"lodash/has":1263}],1145:[function(e,t,n){arguments[4][274][0].apply(n,arguments)},{dup:274}],1146:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:282}],1147:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1214,"./_hashDelete":1215,"./_hashGet":1216,"./_hashHas":1217,"./_hashSet":1218,dup:283}],1148:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1228,"./_listCacheDelete":1229,"./_listCacheGet":1230,"./_listCacheHas":1231,"./_listCacheSet":1232,dup:284}],1149:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:285}],1150:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1233,"./_mapCacheDelete":1234,"./_mapCacheGet":1235,"./_mapCacheHas":1236,"./_mapCacheSet":1237,dup:286}],1151:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:287}],1152:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:288}],1153:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1148,"./_stackClear":1251,"./_stackDelete":1252,"./_stackGet":1253,"./_stackHas":1254,"./_stackSet":1255,dup:290}],1154:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1247,dup:291}],1155:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1247,dup:292}],1156:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1206,"./_root":1247,dup:293}],1157:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],
+1158:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1159:[function(e,t,n){arguments[4][296][0].apply(n,arguments)},{dup:296}],1160:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1161:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1162:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1183,"./_isIndex":1222,"./isArguments":1265,"./isArray":1266,"./isBuffer":1268,"./isTypedArray":1274,dup:301}],1163:[function(e,t,n){arguments[4][302][0].apply(n,arguments)},{dup:302}],1164:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1165:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1166:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1170,"./eq":1262,dup:308}],1167:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1262,dup:309}],1168:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1196,"./keys":1275,dup:310}],1169:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1196,"./keysIn":1276,dup:311}],1170:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1201,dup:312}],1171:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1153,"./_arrayEach":1160,"./_assignValue":1166,"./_baseAssign":1168,"./_baseAssignIn":1169,"./_cloneBuffer":1188,"./_copyArray":1195,"./_copySymbols":1197,"./_copySymbolsIn":1198,"./_getAllKeys":1203,"./_getAllKeysIn":1204,"./_getTag":1211,"./_initCloneArray":1219,"./_initCloneByTag":1220,"./_initCloneObject":1221,"./isArray":1266,"./isBuffer":1268,"./isObject":1271,"./keys":1275,dup:314}],1172:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1271,dup:315}],1173:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1164,"./isArray":1266,dup:322}],1174:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1154,"./_getRawTag":1208,"./_objectToString":1244,dup:323}],1175:[function(e,t,n){arguments[4][324][0].apply(n,arguments)},{dup:324}],1176:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObjectLike":1272,dup:327}],1177:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1226,"./_toSource":1258,"./isFunction":1269,"./isObject":1271,dup:332}],1178:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isLength":1270,"./isObjectLike":1272,dup:334}],1179:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1227,"./_nativeKeys":1241,dup:336}],1180:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1227,"./_nativeKeysIn":1242,"./isObject":1271,dup:337}],1181:[function(e,t,n){arguments[4][347][0].apply(n,arguments)},{"./_overRest":1246,"./_setToString":1249,"./identity":1264,dup:347}],1182:[function(e,t,n){arguments[4][348][0].apply(n,arguments)},{"./_defineProperty":1201,"./constant":1261,"./identity":1264,dup:348}],1183:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1184:[function(e,t,n){arguments[4][352][0].apply(n,arguments)},{"./_Symbol":1154,"./_arrayMap":1163,"./isArray":1266,"./isSymbol":1273,dup:352}],1185:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1186:[function(e,t,n){arguments[4][358][0].apply(n,arguments)},{"./_isKey":1224,"./_stringToPath":1256,"./isArray":1266,"./toString":1280,dup:358}],1187:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1155,dup:361}],1188:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1247,dup:362}],1189:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,dup:363}],1190:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1157,"./_arrayReduce":1165,"./_mapToArray":1238,dup:364}],1191:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1192:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1158,"./_arrayReduce":1165,"./_setToArray":1248,dup:366}],1193:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1154,dup:367}],1194:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,dup:368}],1195:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1196:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1166,"./_baseAssignValue":1170,dup:372}],1197:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1196,"./_getSymbols":1209,dup:373}],1198:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1196,"./_getSymbolsIn":1210,dup:374}],1199:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1247,dup:375}],1200:[function(e,t,n){arguments[4][376][0].apply(n,arguments)},{"./_baseRest":1181,"./_isIterateeCall":1223,dup:376}],1201:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1206,dup:382}],1202:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1203:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1173,"./_getSymbols":1209,"./keys":1275,dup:387}],1204:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1173,"./_getSymbolsIn":1210,"./keysIn":1276,dup:388}],1205:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1225,dup:389}],1206:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1177,"./_getValue":1212,dup:391}],1207:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1245,dup:392}],1208:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1154,dup:393}],1209:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1161,"./stubArray":1278,dup:394}],1210:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1164,"./_getPrototype":1207,"./_getSymbols":1209,"./stubArray":1278,dup:395}],1211:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1146,"./_Map":1149,"./_Promise":1151,"./_Set":1152,"./_WeakMap":1156,"./_baseGetTag":1174,"./_toSource":1258,dup:396}],1212:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1213:[function(e,t,n){arguments[4][398][0].apply(n,arguments)},{"./_castPath":1186,"./_isIndex":1222,"./_toKey":1257,"./isArguments":1265,"./isArray":1266,"./isLength":1270,dup:398}],1214:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:400}],1215:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1216:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:402}],1217:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:403}],1218:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1240,dup:404}],1219:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1220:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1187,"./_cloneDataView":1189,"./_cloneMap":1190,"./_cloneRegExp":1191,"./_cloneSet":1192,"./_cloneSymbol":1193,"./_cloneTypedArray":1194,dup:406}],1221:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1172,"./_getPrototype":1207,"./_isPrototype":1227,dup:407}],1222:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1223:[function(e,t,n){arguments[4][410][0].apply(n,arguments)},{"./_isIndex":1222,"./eq":1262,"./isArrayLike":1267,"./isObject":1271,dup:410}],1224:[function(e,t,n){arguments[4][411][0].apply(n,arguments)},{"./isArray":1266,"./isSymbol":1273,dup:411}],1225:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1226:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1199,dup:413}],1227:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1228:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1229:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:417}],1230:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:418}],1231:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:419}],1232:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1167,dup:420}],1233:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1147,"./_ListCache":1148,"./_Map":1149,dup:421}],1234:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1205,dup:422}],1235:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1205,dup:423}],1236:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1205,dup:424}],1237:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1205,dup:425}],1238:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1239:[function(e,t,n){arguments[4][428][0].apply(n,arguments)},{"./memoize":1277,dup:428}],1240:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1206,dup:429}],1241:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1245,dup:430}],1242:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1243:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1202,dup:432}],1244:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1245:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1246:[function(e,t,n){arguments[4][435][0].apply(n,arguments)},{"./_apply":1159,dup:435}],1247:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1202,dup:436}],1248:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1249:[function(e,t,n){arguments[4][440][0].apply(n,arguments)},{"./_baseSetToString":1182,"./_shortOut":1250,dup:440}],1250:[function(e,t,n){arguments[4][441][0].apply(n,arguments)},{dup:441}],1251:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1148,dup:442}],1252:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1253:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1254:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1255:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1148,"./_Map":1149,"./_MapCache":1150,dup:446}],1256:[function(e,t,n){arguments[4][449][0].apply(n,arguments)},{"./_memoizeCapped":1239,dup:449}],1257:[function(e,t,n){arguments[4][450][0].apply(n,arguments)},{"./isSymbol":1273,dup:450}],1258:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1259:[function(e,t,n){arguments[4][453][0].apply(n,arguments)},{"./_assignValue":1166,"./_copyObject":1196,"./_createAssigner":1200,"./_isPrototype":1227,"./isArrayLike":1267,"./keys":1275,dup:453}],1260:[function(e,t,n){arguments[4][456][0].apply(n,arguments)},{"./_baseClone":1171,dup:456}],1261:[function(e,t,n){arguments[4][459][0].apply(n,arguments)},{dup:459}],1262:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1263:[function(e,t,n){arguments[4][470][0].apply(n,arguments)},{"./_baseHas":1175,"./_hasPath":1213,dup:470}],1264:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1265:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1176,"./isObjectLike":1272,dup:474}],1266:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1267:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1269,"./isLength":1270,dup:476}],1268:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1247,"./stubFalse":1279,dup:479}],1269:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObject":1271,dup:480}],1270:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1271:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1272:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1273:[function(e,t,n){arguments[4][489][0].apply(n,arguments)},{"./_baseGetTag":1174,"./isObjectLike":1272,dup:489}],1274:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1178,"./_baseUnary":1185,"./_nodeUtil":1243,dup:490}],1275:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1162,"./_baseKeys":1179,"./isArrayLike":1267,dup:491}],1276:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1162,"./_baseKeysIn":1180,"./isArrayLike":1267,dup:492}],1277:[function(e,t,n){arguments[4][494][0].apply(n,arguments)},{"./_MapCache":1150,dup:494}],1278:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1279:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1280:[function(e,t,n){arguments[4][507][0].apply(n,arguments)},{"./_baseToString":1184,dup:507}],1281:[function(e,t,n){arguments[4][226][0].apply(n,arguments)},{"babel-runtime/core-js/weak-map":1037,dup:226}],1282:[function(e,t,n){arguments[4][227][0].apply(n,arguments)},{"./path":1291,_process:13,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:227}],1283:[function(e,t,n){arguments[4][228][0].apply(n,arguments)},{"babel-runtime/helpers/classCallCheck":1038,dup:228}],1284:[function(e,t,n){arguments[4][229][0].apply(n,arguments)},{"./cache":1281,"./context":1282,"./hub":1283,"./path":1291,"./scope":1303,"./visitors":1305,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:229,"lodash/includes":1447}],1285:[function(e,t,n){arguments[4][230][0].apply(n,arguments)},{"./index":1291,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:230}],1286:[function(e,t,n){arguments[4][231][0].apply(n,arguments)},{dup:231}],1287:[function(e,t,n){arguments[4][232][0].apply(n,arguments)},{"../index":1284,"babel-runtime/core-js/get-iterator":1026,dup:232}],1288:[function(e,t,n){arguments[4][233][0].apply(n,arguments)},{"babel-types":1480,dup:233}],1289:[function(e,t,n){arguments[4][234][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/map":1028,"babel-runtime/helpers/typeof":1041,dup:234}],1290:[function(e,t,n){arguments[4][235][0].apply(n,arguments)},{"./index":1291,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/create":1030,"babel-types":1480,dup:235}],1291:[function(e,t,n){arguments[4][236][0].apply(n,arguments)},{"../cache":1281,"../index":1284,"../scope":1303,"./ancestry":1285,"./comments":1286,"./context":1287,"./conversion":1288,"./evaluation":1289,"./family":1290,"./inference":1292,"./introspection":1295,"./lib/virtual-types":1298,"./modification":1299,"./removal":1300,"./replacement":1301,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,debug:1322,dup:236,invariant:1326,"lodash/assign":1440}],1292:[function(e,t,n){arguments[4][237][0].apply(n,arguments)},{"./inferers":1294,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:237}],1293:[function(e,t,n){arguments[4][238][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,dup:238}],1294:[function(e,t,n){arguments[4][239][0].apply(n,arguments)},{"./inferer-reference":1293,"babel-types":1480,dup:239}],1295:[function(e,t,n){arguments[4][240][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:240,"lodash/includes":1447}],1296:[function(e,t,n){arguments[4][241][0].apply(n,arguments)},{"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:241}],1297:[function(e,t,n){arguments[4][242][0].apply(n,arguments)},{dup:242}],1298:[function(e,t,n){arguments[4][243][0].apply(n,arguments)},{"babel-types":1480,dup:243}],1299:[function(e,t,n){arguments[4][244][0].apply(n,arguments)},{"../cache":1281,"./index":1291,"./lib/hoister":1296,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:244}],1300:[function(e,t,n){arguments[4][245][0].apply(n,arguments)},{"./lib/removal-hooks":1297,"babel-runtime/core-js/get-iterator":1026,dup:245}],1301:[function(e,t,n){arguments[4][246][0].apply(n,arguments)},{"../index":1284,"./index":1291,"babel-code-frame":1306,"babel-runtime/core-js/get-iterator":1026,"babel-types":1480,babylon:1320,dup:246}],1302:[function(e,t,n){arguments[4][247][0].apply(n,arguments)},{"babel-runtime/helpers/classCallCheck":1038,dup:247}],1303:[function(e,t,n){arguments[4][248][0].apply(n,arguments)},{"../cache":1281,"../index":1284,"./binding":1302,"./lib/renamer":1304,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/map":1028,"babel-runtime/core-js/object/create":1030,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:248,globals:1325,"lodash/defaults":1444,"lodash/includes":1447,"lodash/repeat":1461}],1304:[function(e,t,n){arguments[4][249][0].apply(n,arguments)},{"../binding":1302,"babel-runtime/helpers/classCallCheck":1038,"babel-types":1480,dup:249}],1305:[function(e,t,n){arguments[4][250][0].apply(n,arguments)},{"./path/lib/virtual-types":1298,"babel-messages":1025,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/typeof":1041,"babel-types":1480,dup:250,"lodash/clone":1442}],1306:[function(e,t,n){arguments[4][60][0].apply(n,arguments)},{chalk:1307,dup:60,esutils:1318,"js-tokens":1319}],1307:[function(e,t,n){arguments[4][61][0].apply(n,arguments)},{_process:13,"ansi-styles":1308,dup:61,"escape-string-regexp":1309,"has-ansi":1310,"strip-ansi":1312,"supports-color":1314}],1308:[function(e,t,n){arguments[4][62][0].apply(n,arguments)},{dup:62}],1309:[function(e,t,n){arguments[4][63][0].apply(n,arguments)},{dup:63}],1310:[function(e,t,n){arguments[4][64][0].apply(n,arguments)},{"ansi-regex":1311,dup:64}],1311:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],1312:[function(e,t,n){arguments[4][66][0].apply(n,arguments)},{"ansi-regex":1313,dup:66}],1313:[function(e,t,n){arguments[4][65][0].apply(n,arguments)},{dup:65}],1314:[function(e,t,n){arguments[4][68][0].apply(n,arguments)},{_process:13,dup:68}],1315:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1316:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1317:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1316,dup:71}],1318:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1315,"./code":1316,"./keyword":1317,dup:72}],1319:[function(e,t,n){arguments[4][73][0].apply(n,arguments)},{dup:73}],1320:[function(e,t,n){arguments[4][274][0].apply(n,arguments)},{dup:274}],1321:[function(e,t,n){arguments[4][277][0].apply(n,arguments)},{dup:277}],1322:[function(e,t,n){arguments[4][278][0].apply(n,arguments)},{"./debug":1323,_process:13,dup:278}],1323:[function(e,t,n){arguments[4][279][0].apply(n,arguments)},{dup:279,ms:1321}],1324:[function(e,t,n){arguments[4][251][0].apply(n,arguments)},{dup:251}],1325:[function(e,t,n){arguments[4][252][0].apply(n,arguments)},{"./globals.json":1324,dup:252}],1326:[function(e,t,n){arguments[4][253][0].apply(n,arguments)},{dup:253}],1327:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:282}],1328:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1398,"./_hashDelete":1399,"./_hashGet":1400,"./_hashHas":1401,"./_hashSet":1402,dup:283}],1329:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1411,"./_listCacheDelete":1412,"./_listCacheGet":1413,"./_listCacheHas":1414,"./_listCacheSet":1415,dup:284}],1330:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:285}],1331:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1416,"./_mapCacheDelete":1417,"./_mapCacheGet":1418,"./_mapCacheHas":1419,"./_mapCacheSet":1420,dup:286}],1332:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:287}],1333:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:288}],1334:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1329,"./_stackClear":1433,"./_stackDelete":1434,"./_stackGet":1435,"./_stackHas":1436,"./_stackSet":1437,dup:290}],1335:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1429,dup:291}],1336:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1429,dup:292}],1337:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1391,"./_root":1429,dup:293}],1338:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1339:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1340:[function(e,t,n){arguments[4][296][0].apply(n,arguments)},{dup:296}],1341:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1342:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1343:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1367,"./_isIndex":1406,"./isArguments":1448,"./isArray":1449,"./isBuffer":1451,"./isTypedArray":1458,dup:301}],1344:[function(e,t,n){arguments[4][302][0].apply(n,arguments)},{dup:302}],1345:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1346:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1347:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1351,"./eq":1445,dup:308}],1348:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1445,dup:309}],1349:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1380,"./keys":1459,dup:310}],1350:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1380,"./keysIn":1460,dup:311}],1351:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1386,dup:312}],1352:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1334,"./_arrayEach":1341,"./_assignValue":1347,"./_baseAssign":1349,"./_baseAssignIn":1350,"./_cloneBuffer":1372,"./_copyArray":1379,"./_copySymbols":1381,"./_copySymbolsIn":1382,"./_getAllKeys":1388,"./_getAllKeysIn":1389,"./_getTag":1396,"./_initCloneArray":1403,"./_initCloneByTag":1404,"./_initCloneObject":1405,"./isArray":1449,"./isBuffer":1451,"./isObject":1454,"./keys":1459,dup:314}],1353:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1454,dup:315}],1354:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1355:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1345,"./isArray":1449,dup:322}],1356:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1335,"./_getRawTag":1393,"./_objectToString":1426,dup:323}],1357:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1354,"./_baseIsNaN":1359,"./_strictIndexOf":1438,dup:326}],1358:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObjectLike":1455,dup:327}],1359:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1360:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1409,"./_toSource":1439,"./isFunction":1452,"./isObject":1454,dup:332}],1361:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isLength":1453,"./isObjectLike":1455,dup:334}],1362:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1410,"./_nativeKeys":1423,dup:336}],1363:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1410,"./_nativeKeysIn":1424,"./isObject":1454,dup:337}],1364:[function(e,t,n){arguments[4][346][0].apply(n,arguments)},{dup:346}],1365:[function(e,t,n){arguments[4][347][0].apply(n,arguments)},{"./_overRest":1428,"./_setToString":1431,"./identity":1446,dup:347}],1366:[function(e,t,n){arguments[4][348][0].apply(n,arguments)},{"./_defineProperty":1386,"./constant":1443,"./identity":1446,dup:348}],1367:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1368:[function(e,t,n){arguments[4][352][0].apply(n,arguments)},{"./_Symbol":1335,"./_arrayMap":1344,"./isArray":1449,"./isSymbol":1457,dup:352}],1369:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1370:[function(e,t,n){arguments[4][355][0].apply(n,arguments)},{"./_arrayMap":1344,dup:355}],1371:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1336,dup:361}],1372:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1429,dup:362}],1373:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,dup:363}],1374:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1338,"./_arrayReduce":1346,"./_mapToArray":1421,dup:364}],1375:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1376:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1339,"./_arrayReduce":1346,"./_setToArray":1430,dup:366}],1377:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1335,dup:367}],1378:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,dup:368}],1379:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1380:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1347,"./_baseAssignValue":1351,dup:372}],1381:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1380,"./_getSymbols":1394,dup:373}],1382:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1380,"./_getSymbolsIn":1395,dup:374}],1383:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1429,dup:375}],1384:[function(e,t,n){arguments[4][376][0].apply(n,arguments)},{"./_baseRest":1365,"./_isIterateeCall":1407,dup:376}],1385:[function(e,t,n){arguments[4][381][0].apply(n,arguments)},{"./eq":1445,dup:381}],1386:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1391,dup:382}],1387:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1388:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1355,"./_getSymbols":1394,"./keys":1459,dup:387}],1389:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1355,"./_getSymbolsIn":1395,"./keysIn":1460,dup:388}],1390:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1408,dup:389}],1391:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1360,"./_getValue":1397,dup:391}],1392:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1427,dup:392}],1393:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1335,dup:393}],1394:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1342,"./stubArray":1462,dup:394}],1395:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1345,"./_getPrototype":1392,"./_getSymbols":1394,"./stubArray":1462,dup:395}],1396:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1327,"./_Map":1330,"./_Promise":1332,"./_Set":1333,"./_WeakMap":1337,"./_baseGetTag":1356,"./_toSource":1439,dup:396}],1397:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1398:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:400}],1399:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1400:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:402}],1401:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:403}],1402:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1422,dup:404}],1403:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1404:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1371,"./_cloneDataView":1373,"./_cloneMap":1374,"./_cloneRegExp":1375,"./_cloneSet":1376,"./_cloneSymbol":1377,"./_cloneTypedArray":1378,dup:406}],1405:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1353,"./_getPrototype":1392,"./_isPrototype":1410,dup:407}],1406:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1407:[function(e,t,n){arguments[4][410][0].apply(n,arguments)},{"./_isIndex":1406,"./eq":1445,"./isArrayLike":1450,"./isObject":1454,dup:410}],1408:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1409:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1383,dup:413}],1410:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1411:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1412:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:417}],1413:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:418}],1414:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:419}],1415:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1348,dup:420}],1416:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1328,"./_ListCache":1329,"./_Map":1330,dup:421}],1417:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1390,dup:422}],1418:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1390,dup:423}],1419:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1390,dup:424}],1420:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1390,dup:425}],1421:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1422:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1391,dup:429}],1423:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1427,dup:430}],1424:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1425:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1387,dup:432}],1426:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1427:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1428:[function(e,t,n){arguments[4][435][0].apply(n,arguments)},{"./_apply":1340,dup:435}],1429:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1387,dup:436}],1430:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1431:[function(e,t,n){arguments[4][440][0].apply(n,arguments)},{"./_baseSetToString":1366,"./_shortOut":1432,dup:440}],1432:[function(e,t,n){arguments[4][441][0].apply(n,arguments)},{dup:441}],1433:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1329,dup:442}],1434:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1435:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1436:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1437:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1329,"./_Map":1330,"./_MapCache":1331,dup:446}],1438:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1439:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1440:[function(e,t,n){arguments[4][453][0].apply(n,arguments)},{"./_assignValue":1347,"./_copyObject":1380,"./_createAssigner":1384,"./_isPrototype":1410,"./isArrayLike":1450,"./keys":1459,dup:453}],1441:[function(e,t,n){arguments[4][454][0].apply(n,arguments)},{"./_copyObject":1380,"./_createAssigner":1384,"./keysIn":1460,dup:454}],1442:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1352,
+dup:455}],1443:[function(e,t,n){arguments[4][459][0].apply(n,arguments)},{dup:459}],1444:[function(e,t,n){arguments[4][460][0].apply(n,arguments)},{"./_apply":1340,"./_baseRest":1365,"./_customDefaultsAssignIn":1385,"./assignInWith":1441,dup:460}],1445:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1446:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1447:[function(e,t,n){arguments[4][473][0].apply(n,arguments)},{"./_baseIndexOf":1357,"./isArrayLike":1450,"./isString":1456,"./toInteger":1465,"./values":1468,dup:473}],1448:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1358,"./isObjectLike":1455,dup:474}],1449:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1450:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1452,"./isLength":1453,dup:476}],1451:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1429,"./stubFalse":1463,dup:479}],1452:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObject":1454,dup:480}],1453:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1454:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1455:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1456:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isArray":1449,"./isObjectLike":1455,dup:488}],1457:[function(e,t,n){arguments[4][489][0].apply(n,arguments)},{"./_baseGetTag":1356,"./isObjectLike":1455,dup:489}],1458:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1361,"./_baseUnary":1369,"./_nodeUtil":1425,dup:490}],1459:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1343,"./_baseKeys":1362,"./isArrayLike":1450,dup:491}],1460:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1343,"./_baseKeysIn":1363,"./isArrayLike":1450,dup:492}],1461:[function(e,t,n){arguments[4][498][0].apply(n,arguments)},{"./_baseRepeat":1364,"./_isIterateeCall":1407,"./toInteger":1465,"./toString":1467,dup:498}],1462:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1463:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1464:[function(e,t,n){arguments[4][503][0].apply(n,arguments)},{"./toNumber":1466,dup:503}],1465:[function(e,t,n){arguments[4][504][0].apply(n,arguments)},{"./toFinite":1464,dup:504}],1466:[function(e,t,n){arguments[4][505][0].apply(n,arguments)},{"./isObject":1454,"./isSymbol":1457,dup:505}],1467:[function(e,t,n){arguments[4][507][0].apply(n,arguments)},{"./_baseToString":1368,dup:507}],1468:[function(e,t,n){arguments[4][510][0].apply(n,arguments)},{"./_baseValues":1370,"./keys":1459,dup:510}],1469:[function(e,t,n){arguments[4][254][0].apply(n,arguments)},{"babel-runtime/core-js/symbol/for":1035,dup:254}],1470:[function(e,t,n){arguments[4][255][0].apply(n,arguments)},{"./index":1480,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/json/stringify":1027,"babel-runtime/core-js/number/max-safe-integer":1029,dup:255,"lodash/isNumber":1615,"lodash/isPlainObject":1618,"lodash/isRegExp":1619,"lodash/isString":1620}],1471:[function(e,t,n){arguments[4][256][0].apply(n,arguments)},{"../constants":1469,"../index":1480,"./index":1475,dup:256}],1472:[function(e,t,n){arguments[4][257][0].apply(n,arguments)},{"./index":1475,dup:257}],1473:[function(e,t,n){arguments[4][258][0].apply(n,arguments)},{"./index":1475,dup:258}],1474:[function(e,t,n){arguments[4][259][0].apply(n,arguments)},{"./index":1475,dup:259}],1475:[function(e,t,n){arguments[4][260][0].apply(n,arguments)},{"../index":1480,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/json/stringify":1027,"babel-runtime/helpers/typeof":1041,dup:260}],1476:[function(e,t,n){arguments[4][261][0].apply(n,arguments)},{"./core":1471,"./es2015":1472,"./experimental":1473,"./flow":1474,"./index":1475,"./jsx":1477,"./misc":1478,dup:261}],1477:[function(e,t,n){arguments[4][262][0].apply(n,arguments)},{"./index":1475,dup:262}],1478:[function(e,t,n){arguments[4][263][0].apply(n,arguments)},{"./index":1475,dup:263}],1479:[function(e,t,n){arguments[4][264][0].apply(n,arguments)},{"./index":1480,dup:264}],1480:[function(e,t,n){arguments[4][265][0].apply(n,arguments)},{"./constants":1469,"./converters":1470,"./definitions":1475,"./definitions/init":1476,"./flow":1479,"./react":1481,"./retrievers":1482,"./validators":1483,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/json/stringify":1027,"babel-runtime/core-js/object/get-own-property-symbols":1031,"babel-runtime/core-js/object/keys":1032,dup:265,"lodash/clone":1603,"lodash/compact":1604,"lodash/each":1605,"lodash/uniq":1627,"to-fast-properties":1628}],1481:[function(e,t,n){arguments[4][266][0].apply(n,arguments)},{"./index":1480,dup:266}],1482:[function(e,t,n){arguments[4][267][0].apply(n,arguments)},{"./index":1480,"babel-runtime/core-js/object/create":1030,dup:267}],1483:[function(e,t,n){arguments[4][268][0].apply(n,arguments)},{"./constants":1469,"./index":1480,"./retrievers":1482,"babel-runtime/core-js/get-iterator":1026,"babel-runtime/core-js/object/keys":1032,"babel-runtime/helpers/typeof":1041,dup:268,esutils:1487}],1484:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1485:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1486:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1485,dup:71}],1487:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1484,"./code":1485,"./keyword":1486,dup:72}],1488:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:282}],1489:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1563,"./_hashDelete":1564,"./_hashGet":1565,"./_hashHas":1566,"./_hashSet":1567,dup:283}],1490:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1575,"./_listCacheDelete":1576,"./_listCacheGet":1577,"./_listCacheHas":1578,"./_listCacheSet":1579,dup:284}],1491:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:285}],1492:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1580,"./_mapCacheDelete":1581,"./_mapCacheGet":1582,"./_mapCacheHas":1583,"./_mapCacheSet":1584,dup:286}],1493:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:287}],1494:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:288}],1495:[function(e,t,n){arguments[4][289][0].apply(n,arguments)},{"./_MapCache":1492,"./_setCacheAdd":1593,"./_setCacheHas":1594,dup:289}],1496:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1490,"./_stackClear":1596,"./_stackDelete":1597,"./_stackGet":1598,"./_stackHas":1599,"./_stackSet":1600,dup:290}],1497:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1592,dup:291}],1498:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1592,dup:292}],1499:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1556,"./_root":1592,dup:293}],1500:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1501:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1502:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1503:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1504:[function(e,t,n){arguments[4][299][0].apply(n,arguments)},{"./_baseIndexOf":1522,dup:299}],1505:[function(e,t,n){arguments[4][300][0].apply(n,arguments)},{dup:300}],1506:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1530,"./_isIndex":1571,"./isArguments":1609,"./isArray":1610,"./isBuffer":1612,"./isTypedArray":1621,dup:301}],1507:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1508:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1509:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1513,"./eq":1606,dup:308}],1510:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1606,dup:309}],1511:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1544,"./keys":1622,dup:310}],1512:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1544,"./keysIn":1623,dup:311}],1513:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1551,dup:312}],1514:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1496,"./_arrayEach":1502,"./_assignValue":1509,"./_baseAssign":1511,"./_baseAssignIn":1512,"./_cloneBuffer":1536,"./_copyArray":1543,"./_copySymbols":1545,"./_copySymbolsIn":1546,"./_getAllKeys":1553,"./_getAllKeysIn":1554,"./_getTag":1561,"./_initCloneArray":1568,"./_initCloneByTag":1569,"./_initCloneObject":1570,"./isArray":1610,"./isBuffer":1612,"./isObject":1616,"./keys":1622,dup:314}],1515:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1616,dup:315}],1516:[function(e,t,n){arguments[4][316][0].apply(n,arguments)},{"./_baseForOwn":1519,"./_createBaseEach":1548,dup:316}],1517:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1518:[function(e,t,n){arguments[4][319][0].apply(n,arguments)},{"./_createBaseFor":1549,dup:319}],1519:[function(e,t,n){arguments[4][320][0].apply(n,arguments)},{"./_baseFor":1518,"./keys":1622,dup:320}],1520:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1507,"./isArray":1610,dup:322}],1521:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1497,"./_getRawTag":1558,"./_objectToString":1590,dup:323}],1522:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1517,"./_baseIsNaN":1524,"./_strictIndexOf":1601,dup:326}],1523:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:327}],1524:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1525:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1573,"./_toSource":1602,"./isFunction":1613,"./isObject":1616,dup:332}],1526:[function(e,t,n){arguments[4][333][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:333}],1527:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isLength":1614,"./isObjectLike":1617,dup:334}],1528:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1574,"./_nativeKeys":1587,dup:336}],1529:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1574,"./_nativeKeysIn":1588,"./isObject":1616,dup:337}],1530:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1531:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1532:[function(e,t,n){arguments[4][354][0].apply(n,arguments)},{"./_SetCache":1495,"./_arrayIncludes":1504,"./_arrayIncludesWith":1505,"./_cacheHas":1533,"./_createSet":1550,"./_setToArray":1595,dup:354}],1533:[function(e,t,n){arguments[4][356][0].apply(n,arguments)},{dup:356}],1534:[function(e,t,n){arguments[4][357][0].apply(n,arguments)},{"./identity":1608,dup:357}],1535:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1498,dup:361}],1536:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1592,dup:362}],1537:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,dup:363}],1538:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1500,"./_arrayReduce":1508,"./_mapToArray":1585,dup:364}],1539:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1540:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1501,"./_arrayReduce":1508,"./_setToArray":1595,dup:366}],1541:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1497,dup:367}],1542:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,dup:368}],1543:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1544:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1509,"./_baseAssignValue":1513,dup:372}],1545:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1544,"./_getSymbols":1559,dup:373}],1546:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1544,"./_getSymbolsIn":1560,dup:374}],1547:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1592,dup:375}],1548:[function(e,t,n){arguments[4][377][0].apply(n,arguments)},{"./isArrayLike":1611,dup:377}],1549:[function(e,t,n){arguments[4][378][0].apply(n,arguments)},{dup:378}],1550:[function(e,t,n){arguments[4][380][0].apply(n,arguments)},{"./_Set":1494,"./_setToArray":1595,"./noop":1624,dup:380}],1551:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1556,dup:382}],1552:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1553:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1520,"./_getSymbols":1559,"./keys":1622,dup:387}],1554:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1520,"./_getSymbolsIn":1560,"./keysIn":1623,dup:388}],1555:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1572,dup:389}],1556:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1525,"./_getValue":1562,dup:391}],1557:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1591,dup:392}],1558:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1497,dup:393}],1559:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1503,"./stubArray":1625,dup:394}],1560:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1507,"./_getPrototype":1557,"./_getSymbols":1559,"./stubArray":1625,dup:395}],1561:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1488,"./_Map":1491,"./_Promise":1493,"./_Set":1494,"./_WeakMap":1499,"./_baseGetTag":1521,"./_toSource":1602,dup:396}],1562:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1563:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:400}],1564:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1565:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:402}],1566:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:403}],1567:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1586,dup:404}],1568:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1569:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1535,"./_cloneDataView":1537,"./_cloneMap":1538,"./_cloneRegExp":1539,"./_cloneSet":1540,"./_cloneSymbol":1541,"./_cloneTypedArray":1542,dup:406}],1570:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1515,"./_getPrototype":1557,"./_isPrototype":1574,dup:407}],1571:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1572:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1573:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1547,dup:413}],1574:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1575:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1576:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:417}],1577:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:418}],1578:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:419}],1579:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1510,dup:420}],1580:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1489,"./_ListCache":1490,"./_Map":1491,dup:421}],1581:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1555,dup:422}],1582:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1555,dup:423}],1583:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1555,dup:424}],1584:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1555,dup:425}],1585:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1586:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1556,dup:429}],1587:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1591,dup:430}],1588:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1589:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1552,dup:432}],1590:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1591:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1592:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1552,dup:436}],1593:[function(e,t,n){arguments[4][437][0].apply(n,arguments)},{dup:437}],1594:[function(e,t,n){arguments[4][438][0].apply(n,arguments)},{dup:438}],1595:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1596:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1490,dup:442}],1597:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1598:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1599:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1600:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1490,"./_Map":1491,"./_MapCache":1492,dup:446}],1601:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1602:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1603:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1514,dup:455}],1604:[function(e,t,n){arguments[4][458][0].apply(n,arguments)},{dup:458}],1605:[function(e,t,n){arguments[4][461][0].apply(n,arguments)},{"./forEach":1607,dup:461}],1606:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1607:[function(e,t,n){arguments[4][468][0].apply(n,arguments)},{"./_arrayEach":1502,"./_baseEach":1516,"./_castFunction":1534,"./isArray":1610,dup:468}],1608:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1609:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1523,"./isObjectLike":1617,dup:474}],1610:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1611:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1613,"./isLength":1614,dup:476}],1612:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1592,"./stubFalse":1626,dup:479}],1613:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObject":1616,dup:480}],1614:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1615:[function(e,t,n){arguments[4][483][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isObjectLike":1617,dup:483}],1616:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1617:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1618:[function(e,t,n){arguments[4][486][0].apply(n,arguments)},{"./_baseGetTag":1521,"./_getPrototype":1557,"./isObjectLike":1617,dup:486}],1619:[function(e,t,n){arguments[4][487][0].apply(n,arguments)},{"./_baseIsRegExp":1526,"./_baseUnary":1531,"./_nodeUtil":1589,dup:487}],1620:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1521,"./isArray":1610,"./isObjectLike":1617,dup:488}],1621:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1527,"./_baseUnary":1531,"./_nodeUtil":1589,dup:490}],1622:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1506,"./_baseKeys":1528,"./isArrayLike":1611,dup:491}],1623:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1506,"./_baseKeysIn":1529,"./isArrayLike":1611,dup:492}],1624:[function(e,t,n){arguments[4][496][0].apply(n,arguments)},{dup:496}],1625:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1626:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1627:[function(e,t,n){arguments[4][509][0].apply(n,arguments)},{"./_baseUniq":1532,dup:509}],1628:[function(e,t,n){arguments[4][273][0].apply(n,arguments)},{dup:273}],1629:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(e){function t(e){var t=e.node,n=e.scope,r=[],i=t.right;if(!s.isIdentifier(i)||!n.hasBinding(i.name)){var a=n.generateUidIdentifier("arr");r.push(s.variableDeclaration("var",[s.variableDeclarator(a,i)])),i=a}var u=n.generateUidIdentifier("i"),l=o({BODY:t.body,KEY:u,ARR:i});s.inherits(l,t),s.ensureBlock(l);var c=s.memberExpression(i,u,!0),p=t.left;return s.isVariableDeclaration(p)?(p.declarations[0].init=c,l.body.body.unshift(p)):l.body.body.unshift(s.expressionStatement(s.assignmentExpression("=",p,c))),e.parentPath.isLabeledStatement()&&(l=s.labeledStatement(e.parentPath.node.label,l)),r.push(l),r}function n(e,t){var n=e.node,r=e.scope,a=n.left,o=void 0,l=void 0;if(s.isIdentifier(a)||s.isPattern(a)||s.isMemberExpression(a))l=a;else{if(!s.isVariableDeclaration(a))throw t.buildCodeFrameError(a,i.get("unknownForHead",a.type));l=r.generateUidIdentifier("ref"),o=s.variableDeclaration(a.kind,[s.variableDeclarator(a.declarations[0].id,l)])}var c=r.generateUidIdentifier("iterator"),p=r.generateUidIdentifier("isArray"),f=u({LOOP_OBJECT:c,IS_ARRAY:p,OBJECT:n.right,INDEX:r.generateUidIdentifier("i"),ID:l});return o||f.body.body.shift(),{declar:o,node:f,loop:f}}function r(e,t){var n=e.node,r=e.scope,a=e.parent,o=n.left,u=void 0,c=r.generateUidIdentifier("step"),p=s.memberExpression(c,s.identifier("value"));if(s.isIdentifier(o)||s.isPattern(o)||s.isMemberExpression(o))u=s.expressionStatement(s.assignmentExpression("=",o,p));else{if(!s.isVariableDeclaration(o))throw t.buildCodeFrameError(o,i.get("unknownForHead",o.type));u=s.variableDeclaration(o.kind,[s.variableDeclarator(o.declarations[0].id,p)])}var f=r.generateUidIdentifier("iterator"),h=l({ITERATOR_HAD_ERROR_KEY:r.generateUidIdentifier("didIteratorError"),ITERATOR_COMPLETION:r.generateUidIdentifier("iteratorNormalCompletion"),ITERATOR_ERROR_KEY:r.generateUidIdentifier("iteratorError"),ITERATOR_KEY:f,STEP_KEY:c,OBJECT:n.right,BODY:null}),d=s.isLabeledStatement(a),y=h[3].block.body,m=y[0];return d&&(y[0]=s.labeledStatement(a.label,m)),{replaceParent:d,declar:u,loop:m,node:h}}var i=e.messages,a=e.template,s=e.types,o=a("\n    for (var KEY = 0; KEY < ARR.length; KEY++) BODY;\n  "),u=a("\n    for (var LOOP_OBJECT = OBJECT,\n             IS_ARRAY = Array.isArray(LOOP_OBJECT),\n             INDEX = 0,\n             LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n      var ID;\n      if (IS_ARRAY) {\n        if (INDEX >= LOOP_OBJECT.length) break;\n        ID = LOOP_OBJECT[INDEX++];\n      } else {\n        INDEX = LOOP_OBJECT.next();\n        if (INDEX.done) break;\n        ID = INDEX.value;\n      }\n    }\n  "),l=a("\n    var ITERATOR_COMPLETION = true;\n    var ITERATOR_HAD_ERROR_KEY = false;\n    var ITERATOR_ERROR_KEY = undefined;\n    try {\n      for (var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY; !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done); ITERATOR_COMPLETION = true) {\n      }\n    } catch (err) {\n      ITERATOR_HAD_ERROR_KEY = true;\n      ITERATOR_ERROR_KEY = err;\n    } finally {\n      try {\n        if (!ITERATOR_COMPLETION && ITERATOR_KEY.return) {\n          ITERATOR_KEY.return();\n        }\n      } finally {\n        if (ITERATOR_HAD_ERROR_KEY) {\n          throw ITERATOR_ERROR_KEY;\n        }\n      }\n    }\n  ");return{visitor:{ForOfStatement:function(e,i){if(e.get("right").isArrayExpression())return e.parentPath.isLabeledStatement()?e.parentPath.replaceWithMultiple(t(e)):e.replaceWithMultiple(t(e));var a=r;i.opts.loose&&(a=n);var o=e.node,u=a(e,i),l=u.declar,c=u.loop,p=c.body;e.ensureBlock(),l&&p.body.push(l),p.body=p.body.concat(o.body.body),s.inherits(c,o),s.inherits(c.body,o.body),u.replaceParent?(e.parentPath.replaceWithMultiple(u.node),e.remove()):e.replaceWithMultiple(u.node)}}}},t.exports=n.default},{}],1630:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e){d.default.ok(this instanceof a),m.assertIdentifier(e),this.nextTempId=0,this.contextId=e,this.listing=[],this.marked=[!0],this.finalLoc=s(),this.tryEntries=[],this.leapManager=new g.LeapManager(this)}function s(){return m.numericLiteral(-1)}function o(e){return new Error("all declarations should have been transformed into assignments before the Exploder began its work: "+(0,f.default)(e))}function u(e){var t=e.type;return"normal"===t?!A.call(e,"target"):"break"===t||"continue"===t?!A.call(e,"value")&&m.isLiteral(e.target):("return"===t||"throw"===t)&&(A.call(e,"value")&&!A.call(e,"target"))}var l=e("babel-runtime/helpers/typeof"),c=i(l),p=e("babel-runtime/core-js/json/stringify"),f=i(p),h=e("assert"),d=i(h),y=e("babel-types"),m=r(y),b=e("./leap"),g=r(b),v=e("./meta"),x=r(v),_=e("./util"),E=r(_),A=Object.prototype.hasOwnProperty,D=a.prototype;n.Emitter=a,D.mark=function(e){m.assertLiteral(e);var t=this.listing.length;return e.value===-1?e.value=t:d.default.strictEqual(e.value,t),this.marked[t]=!0,e},D.emit=function(e){m.isExpression(e)&&(e=m.expressionStatement(e)),m.assertStatement(e),this.listing.push(e)},D.emitAssign=function(e,t){return this.emit(this.assign(e,t)),e},D.assign=function(e,t){return m.expressionStatement(m.assignmentExpression("=",e,t))},D.contextProperty=function(e,t){return m.memberExpression(this.contextId,t?m.stringLiteral(e):m.identifier(e),!!t)},D.stop=function(e){e&&this.setReturnValue(e),this.jump(this.finalLoc)},D.setReturnValue=function(e){m.assertExpression(e.value),this.emitAssign(this.contextProperty("rval"),this.explodeExpression(e))},D.clearPendingException=function(e,t){m.assertLiteral(e);var n=m.callExpression(this.contextProperty("catch",!0),[e]);t?this.emitAssign(t,n):this.emit(n)},D.jump=function(e){this.emitAssign(this.contextProperty("next"),e),this.emit(m.breakStatement())},D.jumpIf=function(e,t){m.assertExpression(e),m.assertLiteral(t),this.emit(m.ifStatement(e,m.blockStatement([this.assign(this.contextProperty("next"),t),m.breakStatement()])))},D.jumpIfNot=function(e,t){m.assertExpression(e),m.assertLiteral(t);var n=void 0;n=m.isUnaryExpression(e)&&"!"===e.operator?e.argument:m.unaryExpression("!",e),this.emit(m.ifStatement(n,m.blockStatement([this.assign(this.contextProperty("next"),t),m.breakStatement()])))},D.makeTempVar=function(){return this.contextProperty("t"+this.nextTempId++)},D.getContextFunction=function(e){return m.functionExpression(e||null,[this.contextId],m.blockStatement([this.getDispatchLoop()]),!1,!1)},D.getDispatchLoop=function(){var e=this,t=[],n=void 0,r=!1;return e.listing.forEach(function(i,a){e.marked.hasOwnProperty(a)&&(t.push(m.switchCase(m.numericLiteral(a),n=[])),r=!1),r||(n.push(i),m.isCompletionStatement(i)&&(r=!0))}),this.finalLoc.value=this.listing.length,t.push(m.switchCase(this.finalLoc,[]),m.switchCase(m.stringLiteral("end"),[m.returnStatement(m.callExpression(this.contextProperty("stop"),[]))])),m.whileStatement(m.numericLiteral(1),m.switchStatement(m.assignmentExpression("=",this.contextProperty("prev"),this.contextProperty("next")),t))},D.getTryLocsList=function(){if(0===this.tryEntries.length)return null;var e=0;return m.arrayExpression(this.tryEntries.map(function(t){var n=t.firstLoc.value;d.default.ok(n>=e,"try entries out of order"),e=n;var r=t.catchEntry,i=t.finallyEntry,a=[t.firstLoc,r?r.firstLoc:null];return i&&(a[2]=i.firstLoc,a[3]=i.afterLoc),m.arrayExpression(a)}))},D.explode=function(e,t){var n=e.node,r=this;if(m.assertNode(n),m.isDeclaration(n))throw o(n);if(m.isStatement(n))return r.explodeStatement(e);if(m.isExpression(n))return r.explodeExpression(e,t);switch(n.type){case"Program":return e.get("body").map(r.explodeStatement,r);case"VariableDeclarator":throw o(n);case"Property":case"SwitchCase":case"CatchClause":throw new Error(n.type+" nodes should be handled by their parents");default:throw new Error("unknown Node of type "+(0,f.default)(n.type))}},D.explodeStatement=function(e,t){var n=e.node,r=this,i=void 0,a=void 0,o=void 0;if(m.assertStatement(n),t?m.assertIdentifier(t):t=null,m.isBlockStatement(n))return void e.get("body").forEach(function(e){r.explodeStatement(e)});if(!x.containsLeap(n))return void r.emit(n);var u=function(){switch(n.type){case"ExpressionStatement":r.explodeExpression(e.get("expression"),!0);break;case"LabeledStatement":a=s(),r.leapManager.withEntry(new g.LabeledEntry(a,n.label),function(){r.explodeStatement(e.get("body"),n.label)}),r.mark(a);break;case"WhileStatement":i=s(),a=s(),r.mark(i),r.jumpIfNot(r.explodeExpression(e.get("test")),a),r.leapManager.withEntry(new g.LoopEntry(a,i,t),function(){r.explodeStatement(e.get("body"))}),r.jump(i),r.mark(a);break;case"DoWhileStatement":var u=s(),l=s();a=s(),r.mark(u),r.leapManager.withEntry(new g.LoopEntry(a,l,t),function(){r.explode(e.get("body"))}),r.mark(l),r.jumpIf(r.explodeExpression(e.get("test")),u),r.mark(a);break;case"ForStatement":o=s();var c=s();a=s(),n.init&&r.explode(e.get("init"),!0),r.mark(o),n.test&&r.jumpIfNot(r.explodeExpression(e.get("test")),a),r.leapManager.withEntry(new g.LoopEntry(a,c,t),function(){r.explodeStatement(e.get("body"))}),r.mark(c),n.update&&r.explode(e.get("update"),!0),r.jump(o),r.mark(a);break;case"TypeCastExpression":return{v:r.explodeExpression(e.get("expression"))};case"ForInStatement":o=s(),a=s();var p=r.makeTempVar();r.emitAssign(p,m.callExpression(E.runtimeProperty("keys"),[r.explodeExpression(e.get("right"))])),r.mark(o);var h=r.makeTempVar();r.jumpIf(m.memberExpression(m.assignmentExpression("=",h,m.callExpression(p,[])),m.identifier("done"),!1),a),r.emitAssign(n.left,m.memberExpression(h,m.identifier("value"),!1)),r.leapManager.withEntry(new g.LoopEntry(a,o,t),function(){r.explodeStatement(e.get("body"))}),r.jump(o),r.mark(a);break;case"BreakStatement":r.emitAbruptCompletion({type:"break",target:r.leapManager.getBreakLoc(n.label)});break;case"ContinueStatement":r.emitAbruptCompletion({type:"continue",target:r.leapManager.getContinueLoc(n.label)});break;case"SwitchStatement":var y=r.emitAssign(r.makeTempVar(),r.explodeExpression(e.get("discriminant")));a=s();for(var b=s(),v=b,x=[],_=n.cases||[],A=_.length-1;A>=0;--A){var D=_[A];m.assertSwitchCase(D),D.test?v=m.conditionalExpression(m.binaryExpression("===",y,D.test),x[A]=s(),v):x[A]=b}var S=e.get("discriminant");S.replaceWith(v),r.jump(r.explodeExpression(S)),r.leapManager.withEntry(new g.SwitchEntry(a),function(){e.get("cases").forEach(function(e){var t=e.key;r.mark(x[t]),e.get("consequent").forEach(function(e){r.explodeStatement(e)})})}),r.mark(a),b.value===-1&&(r.mark(b),d.default.strictEqual(a.value,b.value));break;case"IfStatement":var w=n.alternate&&s();a=s(),r.jumpIfNot(r.explodeExpression(e.get("test")),w||a),r.explodeStatement(e.get("consequent")),w&&(r.jump(a),r.mark(w),r.explodeStatement(e.get("alternate"))),r.mark(a);break;case"ReturnStatement":r.emitAbruptCompletion({type:"return",value:r.explodeExpression(e.get("argument"))});break;case"WithStatement":throw new Error("WithStatement not supported in generator functions.");case"TryStatement":a=s();var k=n.handler,F=k&&s(),T=F&&new g.CatchEntry(F,k.param),P=n.finalizer&&s(),j=P&&new g.FinallyEntry(P,a),B=new g.TryEntry(r.getUnmarkedCurrentLoc(),T,j);r.tryEntries.push(B),r.updateContextPrevLoc(B.firstLoc),
+r.leapManager.withEntry(B,function(){r.explodeStatement(e.get("block")),F&&function(){P?r.jump(P):r.jump(a),r.updateContextPrevLoc(r.mark(F));var t=e.get("handler.body"),n=r.makeTempVar();r.clearPendingException(B.firstLoc,n),t.traverse(C,{safeParam:n,catchParamName:k.param.name}),r.leapManager.withEntry(T,function(){r.explodeStatement(t)})}(),P&&(r.updateContextPrevLoc(r.mark(P)),r.leapManager.withEntry(j,function(){r.explodeStatement(e.get("finalizer"))}),r.emit(m.returnStatement(m.callExpression(r.contextProperty("finish"),[j.firstLoc]))))}),r.mark(a);break;case"ThrowStatement":r.emit(m.throwStatement(r.explodeExpression(e.get("argument"))));break;default:throw new Error("unknown Statement of type "+(0,f.default)(n.type))}}();return"object"===(void 0===u?"undefined":(0,c.default)(u))?u.v:void 0};var C={Identifier:function(e,t){e.node.name===t.catchParamName&&E.isReference(e)&&e.replaceWith(t.safeParam)},Scope:function(e,t){e.scope.hasOwnBinding(t.catchParamName)&&e.skip()}};D.emitAbruptCompletion=function(e){u(e)||d.default.ok(!1,"invalid completion record: "+(0,f.default)(e)),d.default.notStrictEqual(e.type,"normal","normal completions are not abrupt");var t=[m.stringLiteral(e.type)];"break"===e.type||"continue"===e.type?(m.assertLiteral(e.target),t[1]=e.target):"return"!==e.type&&"throw"!==e.type||e.value&&(m.assertExpression(e.value),t[1]=e.value),this.emit(m.returnStatement(m.callExpression(this.contextProperty("abrupt"),t)))},D.getUnmarkedCurrentLoc=function(){return m.numericLiteral(this.listing.length)},D.updateContextPrevLoc=function(e){e?(m.assertLiteral(e),e.value===-1?e.value=this.listing.length:d.default.strictEqual(e.value,this.listing.length)):e=this.getUnmarkedCurrentLoc(),this.emitAssign(this.contextProperty("prev"),e)},D.explodeExpression=function(e,t){function n(e){if(m.assertExpression(e),!t)return e;a.emit(e)}function r(e,t,n){d.default.ok(!n||!e,"Ignoring the result of a child expression but forcing it to be assigned to a temporary variable?");var r=a.explodeExpression(t,n);return n||(e||l&&!m.isLiteral(r))&&(r=a.emitAssign(e||a.makeTempVar(),r)),r}var i=e.node;if(!i)return i;m.assertExpression(i);var a=this,o=void 0,u=void 0;if(!x.containsLeap(i))return n(i);var l=x.containsLeap.onlyChildren(i),p=function(){switch(i.type){case"MemberExpression":return{v:n(m.memberExpression(a.explodeExpression(e.get("object")),i.computed?r(null,e.get("property")):i.property,i.computed))};case"CallExpression":var l=e.get("callee"),c=e.get("arguments"),p=void 0,h=[],y=!1;if(c.forEach(function(e){y=y||x.containsLeap(e.node)}),m.isMemberExpression(l.node))if(y){var b=r(a.makeTempVar(),l.get("object")),g=l.node.computed?r(null,l.get("property")):l.node.property;h.unshift(b),p=m.memberExpression(m.memberExpression(b,g,l.node.computed),m.identifier("call"),!1)}else p=a.explodeExpression(l);else p=r(null,l),m.isMemberExpression(p)&&(p=m.sequenceExpression([m.numericLiteral(0),p]));return c.forEach(function(e){h.push(r(null,e))}),{v:n(m.callExpression(p,h))};case"NewExpression":return{v:n(m.newExpression(r(null,e.get("callee")),e.get("arguments").map(function(e){return r(null,e)})))};case"ObjectExpression":return{v:n(m.objectExpression(e.get("properties").map(function(e){return e.isObjectProperty()?m.objectProperty(e.node.key,r(null,e.get("value")),e.node.computed):e.node})))};case"ArrayExpression":return{v:n(m.arrayExpression(e.get("elements").map(function(e){return r(null,e)})))};case"SequenceExpression":var v=i.expressions.length-1;return e.get("expressions").forEach(function(e){e.key===v?o=a.explodeExpression(e,t):a.explodeExpression(e,!0)}),{v:o};case"LogicalExpression":u=s(),t||(o=a.makeTempVar());var _=r(o,e.get("left"));return"&&"===i.operator?a.jumpIfNot(_,u):(d.default.strictEqual(i.operator,"||"),a.jumpIf(_,u)),r(o,e.get("right"),t),a.mark(u),{v:o};case"ConditionalExpression":var E=s();u=s();var A=a.explodeExpression(e.get("test"));return a.jumpIfNot(A,E),t||(o=a.makeTempVar()),r(o,e.get("consequent"),t),a.jump(u),a.mark(E),r(o,e.get("alternate"),t),a.mark(u),{v:o};case"UnaryExpression":return{v:n(m.unaryExpression(i.operator,a.explodeExpression(e.get("argument")),!!i.prefix))};case"BinaryExpression":return{v:n(m.binaryExpression(i.operator,r(null,e.get("left")),r(null,e.get("right"))))};case"AssignmentExpression":return{v:n(m.assignmentExpression(i.operator,a.explodeExpression(e.get("left")),a.explodeExpression(e.get("right"))))};case"UpdateExpression":return{v:n(m.updateExpression(i.operator,a.explodeExpression(e.get("argument")),i.prefix))};case"YieldExpression":u=s();var D=i.argument&&a.explodeExpression(e.get("argument"));if(D&&i.delegate){var C=a.makeTempVar();return a.emit(m.returnStatement(m.callExpression(a.contextProperty("delegateYield"),[D,m.stringLiteral(C.property.name),u]))),a.mark(u),{v:C}}return a.emitAssign(a.contextProperty("next"),u),a.emit(m.returnStatement(D||null)),a.mark(u),{v:a.contextProperty("sent")};default:throw new Error("unknown Expression of type "+(0,f.default)(i.type))}}();return"object"===(void 0===p?"undefined":(0,c.default)(p))?p.v:void 0}},{"./leap":1633,"./meta":1634,"./util":1635,assert:2,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/helpers/typeof":1646,"babel-types":1737}],1631:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}var a=e("babel-runtime/core-js/object/keys"),s=i(a),o=e("babel-types"),u=r(o),l=Object.prototype.hasOwnProperty;n.hoist=function(e){function t(e,t){u.assertVariableDeclaration(e);var r=[];return e.declarations.forEach(function(e){n[e.id.name]=u.identifier(e.id.name),e.init?r.push(u.assignmentExpression("=",e.id,e.init)):t&&r.push(e.id)}),0===r.length?null:1===r.length?r[0]:u.sequenceExpression(r)}u.assertFunction(e.node);var n={};e.get("body").traverse({VariableDeclaration:{exit:function(e){var n=t(e.node,!1);null===n?e.remove():e.replaceWith(u.expressionStatement(n)),e.skip()}},ForStatement:function(e){var n=e.node.init;u.isVariableDeclaration(n)&&e.get("init").replaceWith(t(n,!1))},ForXStatement:function(e){var n=e.get("left");n.isVariableDeclaration()&&n.replaceWith(t(n.node,!0))},FunctionDeclaration:function(e){var t=e.node;n[t.id.name]=t.id;var r=u.expressionStatement(u.assignmentExpression("=",t.id,u.functionExpression(t.id,t.params,t.body,t.generator,t.expression)));e.parentPath.isBlockStatement()?(e.parentPath.unshiftContainer("body",r),e.remove()):e.replaceWith(r),e.skip()},FunctionExpression:function(e){e.skip()}});var r={};e.get("params").forEach(function(e){var t=e.node;u.isIdentifier(t)&&(r[t.name]=t)});var i=[];return(0,s.default)(n).forEach(function(e){l.call(r,e)||i.push(u.variableDeclarator(n[e],null))}),0===i.length?null:u.variableDeclaration("var",i)}},{"babel-runtime/core-js/object/keys":1642,"babel-types":1737}],1632:[function(e,t,n){"use strict";n.__esModule=!0,n.default=function(){return e("./visit")}},{"./visit":1636}],1633:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(){y.default.ok(this instanceof a)}function s(e){a.call(this),b.assertLiteral(e),this.returnLoc=e}function o(e,t,n){a.call(this),b.assertLiteral(e),b.assertLiteral(t),n?b.assertIdentifier(n):n=null,this.breakLoc=e,this.continueLoc=t,this.label=n}function u(e){a.call(this),b.assertLiteral(e),this.breakLoc=e}function l(e,t,n){a.call(this),b.assertLiteral(e),t?y.default.ok(t instanceof c):t=null,n?y.default.ok(n instanceof p):n=null,y.default.ok(t||n),this.firstLoc=e,this.catchEntry=t,this.finallyEntry=n}function c(e,t){a.call(this),b.assertLiteral(e),b.assertIdentifier(t),this.firstLoc=e,this.paramId=t}function p(e,t){a.call(this),b.assertLiteral(e),b.assertLiteral(t),this.firstLoc=e,this.afterLoc=t}function f(e,t){a.call(this),b.assertLiteral(e),b.assertIdentifier(t),this.breakLoc=e,this.label=t}function h(t){y.default.ok(this instanceof h);var n=e("./emit").Emitter;y.default.ok(t instanceof n),this.emitter=t,this.entryStack=[new s(t.finalLoc)]}var d=e("assert"),y=i(d),m=e("babel-types"),b=r(m),g=e("util");(0,g.inherits)(s,a),n.FunctionEntry=s,(0,g.inherits)(o,a),n.LoopEntry=o,(0,g.inherits)(u,a),n.SwitchEntry=u,(0,g.inherits)(l,a),n.TryEntry=l,(0,g.inherits)(c,a),n.CatchEntry=c,(0,g.inherits)(p,a),n.FinallyEntry=p,(0,g.inherits)(f,a),n.LabeledEntry=f;var v=h.prototype;n.LeapManager=h,v.withEntry=function(e,t){y.default.ok(e instanceof a),this.entryStack.push(e);try{t.call(this.emitter)}finally{var n=this.entryStack.pop();y.default.strictEqual(n,e)}},v._findLeapLocation=function(e,t){for(var n=this.entryStack.length-1;n>=0;--n){var r=this.entryStack[n],i=r[e];if(i)if(t){if(r.label&&r.label.name===t.name)return i}else if(!(r instanceof f))return i}return null},v.getBreakLoc=function(e){return this._findLeapLocation("breakLoc",e)},v.getContinueLoc=function(e){return this._findLeapLocation("continueLoc",e)}},{"./emit":1630,assert:2,"babel-types":1737,util:35}],1634:[function(e,t,n){"use strict";function r(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function i(e){return e&&e.__esModule?e:{default:e}}function a(e,t){function n(e){function t(e){return n||(Array.isArray(e)?e.some(t):l.isNode(e)&&(o.default.strictEqual(n,!1),n=r(e))),n}l.assertNode(e);var n=!1,i=l.VISITOR_KEYS[e.type];if(i)for(var a=0;a0&&(s.node.body=l);var c=a(e);p.assertIdentifier(n.id);var d=p.identifier(n.id.name+"$"),m=(0,f.hoist)(e);o(e,i)&&(m=m||p.variableDeclaration("var",[]),m.declarations.push(p.variableDeclarator(i,p.identifier("arguments"))));var b=new h.Emitter(r);b.explode(e.get("body")),m&&m.declarations.length>0&&u.push(m);var x=[b.getContextFunction(d),n.generator?c:p.nullLiteral(),p.thisExpression()],_=b.getTryLocsList();_&&x.push(_);var E=p.callExpression(y.runtimeProperty(n.async?"async":"wrap"),x);u.push(p.returnStatement(E)),n.body=p.blockStatement(u);var A=s.node.directives;A&&(n.body.directives=A);var D=n.generator;D&&(n.generator=!1),n.async&&(n.async=!1),D&&p.isExpression(n)&&e.replaceWith(p.callExpression(y.runtimeProperty("mark"),[n])),e.requeue()}}};var b={"FunctionExpression|FunctionDeclaration":function(e){e.skip()},Identifier:function(e,t){"arguments"===e.node.name&&y.isReference(e)&&(e.replaceWith(t.argsId),t.didRenameArguments=!0)}},g={MetaProperty:function(e){var t=e.node;"function"===t.meta.name&&"sent"===t.property.name&&e.replaceWith(p.memberExpression(this.context,p.identifier("_sent")))}},v={Function:function(e){e.skip()},AwaitExpression:function(e){var t=e.node.argument;e.replaceWith(p.yieldExpression(p.callExpression(y.runtimeProperty("awrap"),[t]),!1))}}},{"./emit":1630,"./hoist":1631,"./util":1635,assert:2,"babel-types":1737,private:1886}],1637:[function(e,t,n){arguments[4][100][0].apply(n,arguments)},{"core-js/library/fn/get-iterator":1647,dup:100}],1638:[function(e,t,n){arguments[4][101][0].apply(n,arguments)},{"core-js/library/fn/json/stringify":1648,dup:101}],1639:[function(e,t,n){arguments[4][103][0].apply(n,arguments)},{"core-js/library/fn/number/max-safe-integer":1649,dup:103}],1640:[function(e,t,n){arguments[4][105][0].apply(n,arguments)},{"core-js/library/fn/object/create":1650,dup:105}],1641:[function(e,t,n){arguments[4][106][0].apply(n,arguments)},{"core-js/library/fn/object/get-own-property-symbols":1651,dup:106}],1642:[function(e,t,n){arguments[4][107][0].apply(n,arguments)},{"core-js/library/fn/object/keys":1652,dup:107}],1643:[function(e,t,n){arguments[4][109][0].apply(n,arguments)},{"core-js/library/fn/symbol":1654,dup:109}],1644:[function(e,t,n){arguments[4][110][0].apply(n,arguments)},{"core-js/library/fn/symbol/for":1653,dup:110}],1645:[function(e,t,n){arguments[4][111][0].apply(n,arguments)},{"core-js/library/fn/symbol/iterator":1655,dup:111}],1646:[function(e,t,n){arguments[4][118][0].apply(n,arguments)},{"../core-js/symbol":1643,"../core-js/symbol/iterator":1645,dup:118}],1647:[function(e,t,n){arguments[4][119][0].apply(n,arguments)},{"../modules/core.get-iterator":1715,"../modules/es6.string.iterator":1721,"../modules/web.dom.iterable":1725,dup:119}],1648:[function(e,t,n){arguments[4][120][0].apply(n,arguments)},{"../../modules/_core":1662,dup:120}],1649:[function(e,t,n){arguments[4][122][0].apply(n,arguments)},{"../../modules/es6.number.max-safe-integer":1717,dup:122}],1650:[function(e,t,n){arguments[4][124][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.create":1718,dup:124}],1651:[function(e,t,n){arguments[4][125][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.symbol":1722,dup:125}],1652:[function(e,t,n){arguments[4][126][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.keys":1719,dup:126}],1653:[function(e,t,n){arguments[4][128][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.symbol":1722,dup:128}],1654:[function(e,t,n){arguments[4][129][0].apply(n,arguments)},{"../../modules/_core":1662,"../../modules/es6.object.to-string":1720,"../../modules/es6.symbol":1722,"../../modules/es7.symbol.async-iterator":1723,"../../modules/es7.symbol.observable":1724,dup:129}],1655:[function(e,t,n){arguments[4][130][0].apply(n,arguments)},{"../../modules/_wks-ext":1712,"../../modules/es6.string.iterator":1721,"../../modules/web.dom.iterable":1725,dup:130}],1656:[function(e,t,n){arguments[4][133][0].apply(n,arguments)},{dup:133}],1657:[function(e,t,n){arguments[4][134][0].apply(n,arguments)},{dup:134}],1658:[function(e,t,n){arguments[4][136][0].apply(n,arguments)},{"./_is-object":1678,dup:136}],1659:[function(e,t,n){arguments[4][138][0].apply(n,arguments)},{"./_to-index":1704,"./_to-iobject":1706,"./_to-length":1707,dup:138}],1660:[function(e,t,n){arguments[4][142][0].apply(n,arguments)},{"./_cof":1661,"./_wks":1713,dup:142}],1661:[function(e,t,n){arguments[4][143][0].apply(n,arguments)},{dup:143}],1662:[function(e,t,n){arguments[4][148][0].apply(n,arguments)},{dup:148}],1663:[function(e,t,n){arguments[4][149][0].apply(n,arguments)},{"./_a-function":1656,dup:149}],1664:[function(e,t,n){arguments[4][150][0].apply(n,arguments)},{dup:150}],1665:[function(e,t,n){arguments[4][151][0].apply(n,arguments)},{"./_fails":1670,dup:151}],1666:[function(e,t,n){arguments[4][152][0].apply(n,arguments)},{"./_global":1671,"./_is-object":1678,dup:152}],1667:[function(e,t,n){arguments[4][153][0].apply(n,arguments)},{dup:153}],1668:[function(e,t,n){arguments[4][154][0].apply(n,arguments)},{"./_object-gops":1692,"./_object-keys":1695,"./_object-pie":1696,dup:154}],1669:[function(e,t,n){arguments[4][155][0].apply(n,arguments)},{"./_core":1662,"./_ctx":1663,"./_global":1671,"./_hide":1673,dup:155}],1670:[function(e,t,n){arguments[4][156][0].apply(n,arguments)},{dup:156}],1671:[function(e,t,n){arguments[4][158][0].apply(n,arguments)},{dup:158}],1672:[function(e,t,n){arguments[4][159][0].apply(n,arguments)},{dup:159}],1673:[function(e,t,n){arguments[4][160][0].apply(n,arguments)},{"./_descriptors":1665,"./_object-dp":1687,"./_property-desc":1698,dup:160}],1674:[function(e,t,n){arguments[4][161][0].apply(n,arguments)},{"./_global":1671,dup:161}],1675:[function(e,t,n){arguments[4][162][0].apply(n,arguments)},{"./_descriptors":1665,"./_dom-create":1666,"./_fails":1670,dup:162}],1676:[function(e,t,n){arguments[4][163][0].apply(n,arguments)},{"./_cof":1661,dup:163}],1677:[function(e,t,n){arguments[4][165][0].apply(n,arguments)},{"./_cof":1661,dup:165}],1678:[function(e,t,n){arguments[4][166][0].apply(n,arguments)},{dup:166}],1679:[function(e,t,n){arguments[4][168][0].apply(n,arguments)},{"./_hide":1673,"./_object-create":1686,"./_property-desc":1698,"./_set-to-string-tag":1700,"./_wks":1713,dup:168}],1680:[function(e,t,n){arguments[4][169][0].apply(n,arguments)},{"./_export":1669,"./_has":1672,"./_hide":1673,"./_iter-create":1679,"./_iterators":1682,"./_library":1684,"./_object-gpo":1693,"./_redefine":1699,"./_set-to-string-tag":1700,"./_wks":1713,dup:169}],1681:[function(e,t,n){arguments[4][170][0].apply(n,arguments)},{dup:170}],1682:[function(e,t,n){arguments[4][171][0].apply(n,arguments)},{dup:171}],1683:[function(e,t,n){arguments[4][172][0].apply(n,arguments)},{"./_object-keys":1695,"./_to-iobject":1706,dup:172}],1684:[function(e,t,n){arguments[4][173][0].apply(n,arguments)},{dup:173}],1685:[function(e,t,n){arguments[4][174][0].apply(n,arguments)},{"./_fails":1670,"./_has":1672,"./_is-object":1678,"./_object-dp":1687,"./_uid":1710,dup:174}],1686:[function(e,t,n){arguments[4][176][0].apply(n,arguments)},{"./_an-object":1658,"./_dom-create":1666,"./_enum-bug-keys":1667,"./_html":1674,"./_object-dps":1688,"./_shared-key":1701,dup:176}],1687:[function(e,t,n){arguments[4][177][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_ie8-dom-define":1675,"./_to-primitive":1709,dup:177}],1688:[function(e,t,n){arguments[4][178][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_object-dp":1687,"./_object-keys":1695,dup:178}],1689:[function(e,t,n){arguments[4][179][0].apply(n,arguments)},{"./_descriptors":1665,"./_has":1672,"./_ie8-dom-define":1675,"./_object-pie":1696,"./_property-desc":1698,"./_to-iobject":1706,"./_to-primitive":1709,dup:179}],1690:[function(e,t,n){arguments[4][180][0].apply(n,arguments)},{"./_object-gopn":1691,"./_to-iobject":1706,dup:180}],1691:[function(e,t,n){arguments[4][181][0].apply(n,arguments)},{"./_enum-bug-keys":1667,"./_object-keys-internal":1694,dup:181}],1692:[function(e,t,n){arguments[4][182][0].apply(n,arguments)},{dup:182}],1693:[function(e,t,n){arguments[4][183][0].apply(n,arguments)},{"./_has":1672,"./_shared-key":1701,"./_to-object":1708,dup:183}],1694:[function(e,t,n){arguments[4][184][0].apply(n,arguments)},{"./_array-includes":1659,"./_has":1672,"./_shared-key":1701,"./_to-iobject":1706,dup:184}],1695:[function(e,t,n){arguments[4][185][0].apply(n,arguments)},{"./_enum-bug-keys":1667,"./_object-keys-internal":1694,dup:185}],1696:[function(e,t,n){arguments[4][186][0].apply(n,arguments)},{dup:186}],1697:[function(e,t,n){arguments[4][187][0].apply(n,arguments)},{"./_core":1662,"./_export":1669,"./_fails":1670,dup:187}],1698:[function(e,t,n){arguments[4][188][0].apply(n,arguments)},{dup:188}],1699:[function(e,t,n){arguments[4][190][0].apply(n,arguments)},{"./_hide":1673,dup:190}],1700:[function(e,t,n){arguments[4][193][0].apply(n,arguments)},{"./_has":1672,"./_object-dp":1687,"./_wks":1713,dup:193}],1701:[function(e,t,n){arguments[4][194][0].apply(n,arguments)},{"./_shared":1702,"./_uid":1710,dup:194}],1702:[function(e,t,n){arguments[4][195][0].apply(n,arguments)},{"./_global":1671,dup:195}],1703:[function(e,t,n){arguments[4][196][0].apply(n,arguments)},{"./_defined":1664,"./_to-integer":1705,dup:196}],1704:[function(e,t,n){arguments[4][197][0].apply(n,arguments)},{"./_to-integer":1705,dup:197}],1705:[function(e,t,n){arguments[4][198][0].apply(n,arguments)},{dup:198}],1706:[function(e,t,n){arguments[4][199][0].apply(n,arguments)},{"./_defined":1664,"./_iobject":1676,dup:199}],1707:[function(e,t,n){arguments[4][200][0].apply(n,arguments)},{"./_to-integer":1705,dup:200}],1708:[function(e,t,n){arguments[4][201][0].apply(n,arguments)},{"./_defined":1664,dup:201}],1709:[function(e,t,n){arguments[4][202][0].apply(n,arguments)},{"./_is-object":1678,dup:202}],1710:[function(e,t,n){arguments[4][203][0].apply(n,arguments)},{dup:203}],1711:[function(e,t,n){arguments[4][204][0].apply(n,arguments)},{"./_core":1662,"./_global":1671,"./_library":1684,"./_object-dp":1687,"./_wks-ext":1712,dup:204}],1712:[function(e,t,n){arguments[4][205][0].apply(n,arguments)},{"./_wks":1713,dup:205}],1713:[function(e,t,n){arguments[4][206][0].apply(n,arguments)},{"./_global":1671,"./_shared":1702,"./_uid":1710,dup:206}],1714:[function(e,t,n){arguments[4][207][0].apply(n,arguments)},{"./_classof":1660,"./_core":1662,"./_iterators":1682,"./_wks":1713,dup:207}],1715:[function(e,t,n){arguments[4][208][0].apply(n,arguments)},{"./_an-object":1658,"./_core":1662,"./core.get-iterator-method":1714,dup:208}],1716:[function(e,t,n){arguments[4][209][0].apply(n,arguments)},{"./_add-to-unscopables":1657,"./_iter-define":1680,"./_iter-step":1681,"./_iterators":1682,"./_to-iobject":1706,dup:209}],1717:[function(e,t,n){arguments[4][211][0].apply(n,arguments)},{"./_export":1669,dup:211}],1718:[function(e,t,n){arguments[4][213][0].apply(n,arguments)},{"./_export":1669,"./_object-create":1686,dup:213}],1719:[function(e,t,n){arguments[4][214][0].apply(n,arguments)},{"./_object-keys":1695,"./_object-sap":1697,"./_to-object":1708,dup:214}],1720:[function(e,t,n){arguments[4][1][0].apply(n,arguments)},{dup:1}],1721:[function(e,t,n){arguments[4][217][0].apply(n,arguments)},{"./_iter-define":1680,"./_string-at":1703,dup:217}],1722:[function(e,t,n){arguments[4][218][0].apply(n,arguments)},{"./_an-object":1658,"./_descriptors":1665,"./_enum-keys":1668,"./_export":1669,"./_fails":1670,"./_global":1671,"./_has":1672,"./_hide":1673,"./_is-array":1677,"./_keyof":1683,"./_library":1684,"./_meta":1685,"./_object-create":1686,"./_object-dp":1687,"./_object-gopd":1689,"./_object-gopn":1691,"./_object-gopn-ext":1690,"./_object-gops":1692,"./_object-keys":1695,"./_object-pie":1696,"./_property-desc":1698,"./_redefine":1699,"./_set-to-string-tag":1700,"./_shared":1702,"./_to-iobject":1706,"./_to-primitive":1709,"./_uid":1710,"./_wks":1713,"./_wks-define":1711,"./_wks-ext":1712,dup:218}],1723:[function(e,t,n){arguments[4][222][0].apply(n,arguments)},{"./_wks-define":1711,dup:222}],1724:[function(e,t,n){arguments[4][223][0].apply(n,arguments)},{"./_wks-define":1711,dup:223}],1725:[function(e,t,n){arguments[4][224][0].apply(n,arguments)},{"./_global":1671,"./_hide":1673,"./_iterators":1682,"./_wks":1713,"./es6.array.iterator":1716,dup:224}],1726:[function(e,t,n){arguments[4][254][0].apply(n,arguments)},{"babel-runtime/core-js/symbol/for":1644,dup:254}],1727:[function(e,t,n){arguments[4][255][0].apply(n,arguments)},{"./index":1737,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/core-js/number/max-safe-integer":1639,dup:255,"lodash/isNumber":1872,"lodash/isPlainObject":1875,"lodash/isRegExp":1876,"lodash/isString":1877}],1728:[function(e,t,n){arguments[4][256][0].apply(n,arguments)},{"../constants":1726,"../index":1737,"./index":1732,dup:256}],1729:[function(e,t,n){arguments[4][257][0].apply(n,arguments)},{"./index":1732,dup:257}],1730:[function(e,t,n){arguments[4][258][0].apply(n,arguments)},{"./index":1732,dup:258}],1731:[function(e,t,n){arguments[4][259][0].apply(n,arguments)},{"./index":1732,dup:259}],1732:[function(e,t,n){arguments[4][260][0].apply(n,arguments)},{"../index":1737,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/helpers/typeof":1646,dup:260}],1733:[function(e,t,n){arguments[4][261][0].apply(n,arguments)},{"./core":1728,"./es2015":1729,"./experimental":1730,"./flow":1731,"./index":1732,"./jsx":1734,"./misc":1735,dup:261}],1734:[function(e,t,n){arguments[4][262][0].apply(n,arguments)},{"./index":1732,dup:262}],1735:[function(e,t,n){arguments[4][263][0].apply(n,arguments)},{"./index":1732,dup:263}],1736:[function(e,t,n){arguments[4][264][0].apply(n,arguments)},{"./index":1737,dup:264}],1737:[function(e,t,n){arguments[4][265][0].apply(n,arguments)},{"./constants":1726,"./converters":1727,"./definitions":1732,"./definitions/init":1733,"./flow":1736,"./react":1738,"./retrievers":1739,"./validators":1740,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/json/stringify":1638,"babel-runtime/core-js/object/get-own-property-symbols":1641,"babel-runtime/core-js/object/keys":1642,dup:265,"lodash/clone":1860,"lodash/compact":1861,"lodash/each":1862,"lodash/uniq":1884,"to-fast-properties":1885}],1738:[function(e,t,n){arguments[4][266][0].apply(n,arguments)},{"./index":1737,dup:266}],1739:[function(e,t,n){arguments[4][267][0].apply(n,arguments)},{"./index":1737,"babel-runtime/core-js/object/create":1640,dup:267}],1740:[function(e,t,n){arguments[4][268][0].apply(n,arguments)},{"./constants":1726,"./index":1737,"./retrievers":1739,"babel-runtime/core-js/get-iterator":1637,"babel-runtime/core-js/object/keys":1642,"babel-runtime/helpers/typeof":1646,dup:268,esutils:1744}],1741:[function(e,t,n){arguments[4][69][0].apply(n,arguments)},{dup:69}],1742:[function(e,t,n){arguments[4][70][0].apply(n,arguments)},{dup:70}],1743:[function(e,t,n){arguments[4][71][0].apply(n,arguments)},{"./code":1742,dup:71}],1744:[function(e,t,n){arguments[4][72][0].apply(n,arguments)},{"./ast":1741,"./code":1742,"./keyword":1743,dup:72}],1745:[function(e,t,n){arguments[4][282][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:282}],1746:[function(e,t,n){arguments[4][283][0].apply(n,arguments)},{"./_hashClear":1820,"./_hashDelete":1821,"./_hashGet":1822,"./_hashHas":1823,"./_hashSet":1824,dup:283}],1747:[function(e,t,n){arguments[4][284][0].apply(n,arguments)},{"./_listCacheClear":1832,"./_listCacheDelete":1833,"./_listCacheGet":1834,"./_listCacheHas":1835,"./_listCacheSet":1836,dup:284}],1748:[function(e,t,n){arguments[4][285][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:285}],1749:[function(e,t,n){arguments[4][286][0].apply(n,arguments)},{"./_mapCacheClear":1837,"./_mapCacheDelete":1838,"./_mapCacheGet":1839,"./_mapCacheHas":1840,"./_mapCacheSet":1841,dup:286}],1750:[function(e,t,n){arguments[4][287][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:287}],1751:[function(e,t,n){arguments[4][288][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:288}],1752:[function(e,t,n){arguments[4][289][0].apply(n,arguments)},{"./_MapCache":1749,"./_setCacheAdd":1850,"./_setCacheHas":1851,dup:289}],1753:[function(e,t,n){arguments[4][290][0].apply(n,arguments)},{"./_ListCache":1747,"./_stackClear":1853,"./_stackDelete":1854,"./_stackGet":1855,"./_stackHas":1856,"./_stackSet":1857,dup:290}],1754:[function(e,t,n){arguments[4][291][0].apply(n,arguments)},{"./_root":1849,dup:291}],1755:[function(e,t,n){arguments[4][292][0].apply(n,arguments)},{"./_root":1849,dup:292}],1756:[function(e,t,n){arguments[4][293][0].apply(n,arguments)},{"./_getNative":1813,"./_root":1849,dup:293}],1757:[function(e,t,n){arguments[4][294][0].apply(n,arguments)},{dup:294}],1758:[function(e,t,n){arguments[4][295][0].apply(n,arguments)},{dup:295}],1759:[function(e,t,n){arguments[4][297][0].apply(n,arguments)},{dup:297}],1760:[function(e,t,n){arguments[4][298][0].apply(n,arguments)},{dup:298}],1761:[function(e,t,n){arguments[4][299][0].apply(n,arguments)},{"./_baseIndexOf":1779,dup:299}],1762:[function(e,t,n){arguments[4][300][0].apply(n,arguments)},{dup:300}],1763:[function(e,t,n){arguments[4][301][0].apply(n,arguments)},{"./_baseTimes":1787,"./_isIndex":1828,"./isArguments":1866,"./isArray":1867,"./isBuffer":1869,"./isTypedArray":1878,dup:301}],1764:[function(e,t,n){arguments[4][303][0].apply(n,arguments)},{dup:303}],1765:[function(e,t,n){arguments[4][304][0].apply(n,arguments)},{dup:304}],1766:[function(e,t,n){arguments[4][308][0].apply(n,arguments)},{"./_baseAssignValue":1770,"./eq":1863,dup:308}],1767:[function(e,t,n){arguments[4][309][0].apply(n,arguments)},{"./eq":1863,dup:309}],1768:[function(e,t,n){arguments[4][310][0].apply(n,arguments)},{"./_copyObject":1801,"./keys":1879,dup:310}],1769:[function(e,t,n){arguments[4][311][0].apply(n,arguments)},{"./_copyObject":1801,"./keysIn":1880,dup:311}],1770:[function(e,t,n){arguments[4][312][0].apply(n,arguments)},{"./_defineProperty":1808,dup:312}],1771:[function(e,t,n){arguments[4][314][0].apply(n,arguments)},{"./_Stack":1753,"./_arrayEach":1759,"./_assignValue":1766,"./_baseAssign":1768,"./_baseAssignIn":1769,"./_cloneBuffer":1793,"./_copyArray":1800,"./_copySymbols":1802,"./_copySymbolsIn":1803,"./_getAllKeys":1810,"./_getAllKeysIn":1811,"./_getTag":1818,"./_initCloneArray":1825,"./_initCloneByTag":1826,"./_initCloneObject":1827,"./isArray":1867,"./isBuffer":1869,"./isObject":1873,"./keys":1879,dup:314}],1772:[function(e,t,n){arguments[4][315][0].apply(n,arguments)},{"./isObject":1873,dup:315}],1773:[function(e,t,n){arguments[4][316][0].apply(n,arguments)},{"./_baseForOwn":1776,"./_createBaseEach":1805,dup:316}],1774:[function(e,t,n){arguments[4][317][0].apply(n,arguments)},{dup:317}],1775:[function(e,t,n){arguments[4][319][0].apply(n,arguments)},{"./_createBaseFor":1806,dup:319}],1776:[function(e,t,n){arguments[4][320][0].apply(n,arguments)},{"./_baseFor":1775,"./keys":1879,dup:320}],1777:[function(e,t,n){arguments[4][322][0].apply(n,arguments)},{"./_arrayPush":1764,"./isArray":1867,dup:322}],1778:[function(e,t,n){arguments[4][323][0].apply(n,arguments)},{"./_Symbol":1754,"./_getRawTag":1815,"./_objectToString":1847,
+dup:323}],1779:[function(e,t,n){arguments[4][326][0].apply(n,arguments)},{"./_baseFindIndex":1774,"./_baseIsNaN":1781,"./_strictIndexOf":1858,dup:326}],1780:[function(e,t,n){arguments[4][327][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:327}],1781:[function(e,t,n){arguments[4][331][0].apply(n,arguments)},{dup:331}],1782:[function(e,t,n){arguments[4][332][0].apply(n,arguments)},{"./_isMasked":1830,"./_toSource":1859,"./isFunction":1870,"./isObject":1873,dup:332}],1783:[function(e,t,n){arguments[4][333][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:333}],1784:[function(e,t,n){arguments[4][334][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isLength":1871,"./isObjectLike":1874,dup:334}],1785:[function(e,t,n){arguments[4][336][0].apply(n,arguments)},{"./_isPrototype":1831,"./_nativeKeys":1844,dup:336}],1786:[function(e,t,n){arguments[4][337][0].apply(n,arguments)},{"./_isPrototype":1831,"./_nativeKeysIn":1845,"./isObject":1873,dup:337}],1787:[function(e,t,n){arguments[4][351][0].apply(n,arguments)},{dup:351}],1788:[function(e,t,n){arguments[4][353][0].apply(n,arguments)},{dup:353}],1789:[function(e,t,n){arguments[4][354][0].apply(n,arguments)},{"./_SetCache":1752,"./_arrayIncludes":1761,"./_arrayIncludesWith":1762,"./_cacheHas":1790,"./_createSet":1807,"./_setToArray":1852,dup:354}],1790:[function(e,t,n){arguments[4][356][0].apply(n,arguments)},{dup:356}],1791:[function(e,t,n){arguments[4][357][0].apply(n,arguments)},{"./identity":1865,dup:357}],1792:[function(e,t,n){arguments[4][361][0].apply(n,arguments)},{"./_Uint8Array":1755,dup:361}],1793:[function(e,t,n){arguments[4][362][0].apply(n,arguments)},{"./_root":1849,dup:362}],1794:[function(e,t,n){arguments[4][363][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,dup:363}],1795:[function(e,t,n){arguments[4][364][0].apply(n,arguments)},{"./_addMapEntry":1757,"./_arrayReduce":1765,"./_mapToArray":1842,dup:364}],1796:[function(e,t,n){arguments[4][365][0].apply(n,arguments)},{dup:365}],1797:[function(e,t,n){arguments[4][366][0].apply(n,arguments)},{"./_addSetEntry":1758,"./_arrayReduce":1765,"./_setToArray":1852,dup:366}],1798:[function(e,t,n){arguments[4][367][0].apply(n,arguments)},{"./_Symbol":1754,dup:367}],1799:[function(e,t,n){arguments[4][368][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,dup:368}],1800:[function(e,t,n){arguments[4][371][0].apply(n,arguments)},{dup:371}],1801:[function(e,t,n){arguments[4][372][0].apply(n,arguments)},{"./_assignValue":1766,"./_baseAssignValue":1770,dup:372}],1802:[function(e,t,n){arguments[4][373][0].apply(n,arguments)},{"./_copyObject":1801,"./_getSymbols":1816,dup:373}],1803:[function(e,t,n){arguments[4][374][0].apply(n,arguments)},{"./_copyObject":1801,"./_getSymbolsIn":1817,dup:374}],1804:[function(e,t,n){arguments[4][375][0].apply(n,arguments)},{"./_root":1849,dup:375}],1805:[function(e,t,n){arguments[4][377][0].apply(n,arguments)},{"./isArrayLike":1868,dup:377}],1806:[function(e,t,n){arguments[4][378][0].apply(n,arguments)},{dup:378}],1807:[function(e,t,n){arguments[4][380][0].apply(n,arguments)},{"./_Set":1751,"./_setToArray":1852,"./noop":1881,dup:380}],1808:[function(e,t,n){arguments[4][382][0].apply(n,arguments)},{"./_getNative":1813,dup:382}],1809:[function(e,t,n){arguments[4][386][0].apply(n,arguments)},{dup:386}],1810:[function(e,t,n){arguments[4][387][0].apply(n,arguments)},{"./_baseGetAllKeys":1777,"./_getSymbols":1816,"./keys":1879,dup:387}],1811:[function(e,t,n){arguments[4][388][0].apply(n,arguments)},{"./_baseGetAllKeys":1777,"./_getSymbolsIn":1817,"./keysIn":1880,dup:388}],1812:[function(e,t,n){arguments[4][389][0].apply(n,arguments)},{"./_isKeyable":1829,dup:389}],1813:[function(e,t,n){arguments[4][391][0].apply(n,arguments)},{"./_baseIsNative":1782,"./_getValue":1819,dup:391}],1814:[function(e,t,n){arguments[4][392][0].apply(n,arguments)},{"./_overArg":1848,dup:392}],1815:[function(e,t,n){arguments[4][393][0].apply(n,arguments)},{"./_Symbol":1754,dup:393}],1816:[function(e,t,n){arguments[4][394][0].apply(n,arguments)},{"./_arrayFilter":1760,"./stubArray":1882,dup:394}],1817:[function(e,t,n){arguments[4][395][0].apply(n,arguments)},{"./_arrayPush":1764,"./_getPrototype":1814,"./_getSymbols":1816,"./stubArray":1882,dup:395}],1818:[function(e,t,n){arguments[4][396][0].apply(n,arguments)},{"./_DataView":1745,"./_Map":1748,"./_Promise":1750,"./_Set":1751,"./_WeakMap":1756,"./_baseGetTag":1778,"./_toSource":1859,dup:396}],1819:[function(e,t,n){arguments[4][397][0].apply(n,arguments)},{dup:397}],1820:[function(e,t,n){arguments[4][400][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:400}],1821:[function(e,t,n){arguments[4][401][0].apply(n,arguments)},{dup:401}],1822:[function(e,t,n){arguments[4][402][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:402}],1823:[function(e,t,n){arguments[4][403][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:403}],1824:[function(e,t,n){arguments[4][404][0].apply(n,arguments)},{"./_nativeCreate":1843,dup:404}],1825:[function(e,t,n){arguments[4][405][0].apply(n,arguments)},{dup:405}],1826:[function(e,t,n){arguments[4][406][0].apply(n,arguments)},{"./_cloneArrayBuffer":1792,"./_cloneDataView":1794,"./_cloneMap":1795,"./_cloneRegExp":1796,"./_cloneSet":1797,"./_cloneSymbol":1798,"./_cloneTypedArray":1799,dup:406}],1827:[function(e,t,n){arguments[4][407][0].apply(n,arguments)},{"./_baseCreate":1772,"./_getPrototype":1814,"./_isPrototype":1831,dup:407}],1828:[function(e,t,n){arguments[4][409][0].apply(n,arguments)},{dup:409}],1829:[function(e,t,n){arguments[4][412][0].apply(n,arguments)},{dup:412}],1830:[function(e,t,n){arguments[4][413][0].apply(n,arguments)},{"./_coreJsData":1804,dup:413}],1831:[function(e,t,n){arguments[4][414][0].apply(n,arguments)},{dup:414}],1832:[function(e,t,n){arguments[4][416][0].apply(n,arguments)},{dup:416}],1833:[function(e,t,n){arguments[4][417][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:417}],1834:[function(e,t,n){arguments[4][418][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:418}],1835:[function(e,t,n){arguments[4][419][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:419}],1836:[function(e,t,n){arguments[4][420][0].apply(n,arguments)},{"./_assocIndexOf":1767,dup:420}],1837:[function(e,t,n){arguments[4][421][0].apply(n,arguments)},{"./_Hash":1746,"./_ListCache":1747,"./_Map":1748,dup:421}],1838:[function(e,t,n){arguments[4][422][0].apply(n,arguments)},{"./_getMapData":1812,dup:422}],1839:[function(e,t,n){arguments[4][423][0].apply(n,arguments)},{"./_getMapData":1812,dup:423}],1840:[function(e,t,n){arguments[4][424][0].apply(n,arguments)},{"./_getMapData":1812,dup:424}],1841:[function(e,t,n){arguments[4][425][0].apply(n,arguments)},{"./_getMapData":1812,dup:425}],1842:[function(e,t,n){arguments[4][426][0].apply(n,arguments)},{dup:426}],1843:[function(e,t,n){arguments[4][429][0].apply(n,arguments)},{"./_getNative":1813,dup:429}],1844:[function(e,t,n){arguments[4][430][0].apply(n,arguments)},{"./_overArg":1848,dup:430}],1845:[function(e,t,n){arguments[4][431][0].apply(n,arguments)},{dup:431}],1846:[function(e,t,n){arguments[4][432][0].apply(n,arguments)},{"./_freeGlobal":1809,dup:432}],1847:[function(e,t,n){arguments[4][433][0].apply(n,arguments)},{dup:433}],1848:[function(e,t,n){arguments[4][434][0].apply(n,arguments)},{dup:434}],1849:[function(e,t,n){arguments[4][436][0].apply(n,arguments)},{"./_freeGlobal":1809,dup:436}],1850:[function(e,t,n){arguments[4][437][0].apply(n,arguments)},{dup:437}],1851:[function(e,t,n){arguments[4][438][0].apply(n,arguments)},{dup:438}],1852:[function(e,t,n){arguments[4][439][0].apply(n,arguments)},{dup:439}],1853:[function(e,t,n){arguments[4][442][0].apply(n,arguments)},{"./_ListCache":1747,dup:442}],1854:[function(e,t,n){arguments[4][443][0].apply(n,arguments)},{dup:443}],1855:[function(e,t,n){arguments[4][444][0].apply(n,arguments)},{dup:444}],1856:[function(e,t,n){arguments[4][445][0].apply(n,arguments)},{dup:445}],1857:[function(e,t,n){arguments[4][446][0].apply(n,arguments)},{"./_ListCache":1747,"./_Map":1748,"./_MapCache":1749,dup:446}],1858:[function(e,t,n){arguments[4][447][0].apply(n,arguments)},{dup:447}],1859:[function(e,t,n){arguments[4][451][0].apply(n,arguments)},{dup:451}],1860:[function(e,t,n){arguments[4][455][0].apply(n,arguments)},{"./_baseClone":1771,dup:455}],1861:[function(e,t,n){arguments[4][458][0].apply(n,arguments)},{dup:458}],1862:[function(e,t,n){arguments[4][461][0].apply(n,arguments)},{"./forEach":1864,dup:461}],1863:[function(e,t,n){arguments[4][462][0].apply(n,arguments)},{dup:462}],1864:[function(e,t,n){arguments[4][468][0].apply(n,arguments)},{"./_arrayEach":1759,"./_baseEach":1773,"./_castFunction":1791,"./isArray":1867,dup:468}],1865:[function(e,t,n){arguments[4][472][0].apply(n,arguments)},{dup:472}],1866:[function(e,t,n){arguments[4][474][0].apply(n,arguments)},{"./_baseIsArguments":1780,"./isObjectLike":1874,dup:474}],1867:[function(e,t,n){arguments[4][475][0].apply(n,arguments)},{dup:475}],1868:[function(e,t,n){arguments[4][476][0].apply(n,arguments)},{"./isFunction":1870,"./isLength":1871,dup:476}],1869:[function(e,t,n){arguments[4][479][0].apply(n,arguments)},{"./_root":1849,"./stubFalse":1883,dup:479}],1870:[function(e,t,n){arguments[4][480][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObject":1873,dup:480}],1871:[function(e,t,n){arguments[4][482][0].apply(n,arguments)},{dup:482}],1872:[function(e,t,n){arguments[4][483][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isObjectLike":1874,dup:483}],1873:[function(e,t,n){arguments[4][484][0].apply(n,arguments)},{dup:484}],1874:[function(e,t,n){arguments[4][485][0].apply(n,arguments)},{dup:485}],1875:[function(e,t,n){arguments[4][486][0].apply(n,arguments)},{"./_baseGetTag":1778,"./_getPrototype":1814,"./isObjectLike":1874,dup:486}],1876:[function(e,t,n){arguments[4][487][0].apply(n,arguments)},{"./_baseIsRegExp":1783,"./_baseUnary":1788,"./_nodeUtil":1846,dup:487}],1877:[function(e,t,n){arguments[4][488][0].apply(n,arguments)},{"./_baseGetTag":1778,"./isArray":1867,"./isObjectLike":1874,dup:488}],1878:[function(e,t,n){arguments[4][490][0].apply(n,arguments)},{"./_baseIsTypedArray":1784,"./_baseUnary":1788,"./_nodeUtil":1846,dup:490}],1879:[function(e,t,n){arguments[4][491][0].apply(n,arguments)},{"./_arrayLikeKeys":1763,"./_baseKeys":1785,"./isArrayLike":1868,dup:491}],1880:[function(e,t,n){arguments[4][492][0].apply(n,arguments)},{"./_arrayLikeKeys":1763,"./_baseKeysIn":1786,"./isArrayLike":1868,dup:492}],1881:[function(e,t,n){arguments[4][496][0].apply(n,arguments)},{dup:496}],1882:[function(e,t,n){arguments[4][501][0].apply(n,arguments)},{dup:501}],1883:[function(e,t,n){arguments[4][502][0].apply(n,arguments)},{dup:502}],1884:[function(e,t,n){arguments[4][509][0].apply(n,arguments)},{"./_baseUniq":1789,dup:509}],1885:[function(e,t,n){arguments[4][273][0].apply(n,arguments)},{dup:273}],1886:[function(e,t,n){arguments[4][560][0].apply(n,arguments)},{dup:560}],1887:[function(e,t,n){(function(t){n.path=e("path").join(t,"runtime.js")}).call(this,"/node_modules/regenerator/node_modules/regenerator-runtime")},{path:12}],1888:[function(e,t,n){(function(n){var r="object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this,i=r.regeneratorRuntime&&Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime")>=0,a=i&&r.regeneratorRuntime;if(r.regeneratorRuntime=void 0,t.exports=e("./runtime"),i)r.regeneratorRuntime=a;else try{delete r.regeneratorRuntime}catch(e){r.regeneratorRuntime=void 0}}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./runtime":1889}],1889:[function(e,t,n){(function(e,n){!function(n){"use strict";function r(e,t,n,r){var i=t&&t.prototype instanceof a?t:a,s=Object.create(i.prototype),o=new h(r||[]);return s._invoke=c(e,n,o),s}function i(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}function a(){}function s(){}function o(){}function u(e){["next","throw","return"].forEach(function(t){e[t]=function(e){return this._invoke(t,e)}})}function l(t){function n(e,r,a,s){var o=i(t[e],t,r);if("throw"!==o.type){var u=o.arg,l=u.value;return l&&"object"==typeof l&&g.call(l,"__await")?Promise.resolve(l.__await).then(function(e){n("next",e,a,s)},function(e){n("throw",e,a,s)}):Promise.resolve(l).then(function(e){u.value=e,a(u)},s)}s(o.arg)}function r(e,t){function r(){return new Promise(function(r,i){n(e,t,r,i)})}return a=a?a.then(r,r):r()}"object"==typeof e&&e.domain&&(n=e.domain.bind(n));var a;this._invoke=r}function c(e,t,n){var r=D;return function(a,s){if(r===S)throw new Error("Generator is already running");if(r===w){if("throw"===a)throw s;return y()}for(;;){var o=n.delegate;if(o){if("return"===a||"throw"===a&&o.iterator[a]===m){n.delegate=null;var u=o.iterator.return;if(u){var l=i(u,o.iterator,s);if("throw"===l.type){a="throw",s=l.arg;continue}}if("return"===a)continue}var l=i(o.iterator[a],o.iterator,s);if("throw"===l.type){n.delegate=null,a="throw",s=l.arg;continue}a="next",s=m;var c=l.arg;if(!c.done)return r=C,c;n[o.resultName]=c.value,n.next=o.nextLoc,n.delegate=null}if("next"===a)n.sent=n._sent=s;else if("throw"===a){if(r===D)throw r=w,s;n.dispatchException(s)&&(a="next",s=m)}else"return"===a&&n.abrupt("return",s);r=S;var l=i(e,t,n);if("normal"===l.type){r=n.done?w:C;var c={value:l.arg,done:n.done};if(l.arg!==k)return c;n.delegate&&"next"===a&&(s=m)}else"throw"===l.type&&(r=w,a="throw",s=l.arg)}}}function p(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function f(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function h(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(p,this),this.reset(!0)}function d(e){if(e){var t=e[x];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,r=function t(){for(;++n=0;--r){var i=this.tryEntries[r],a=i.completion;if("root"===i.tryLoc)return t("end");if(i.tryLoc<=this.prev){var s=g.call(i,"catchLoc"),o=g.call(i,"finallyLoc");if(s&&o){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&g.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),f(n),k}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var r=n.completion;if("throw"===r.type){var i=r.arg;f(n)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:d(e),resultName:t,nextLoc:n},k}}}("object"==typeof n?n:"object"==typeof window?window:"object"==typeof self?self:this)}).call(this,e("_process"),"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{_process:13}],1890:[function(e,t,n){(function(r){function i(e,t,n){function i(){for(;l.length&&!p.paused;){var e=l.shift();if(null===e)return p.emit("end");p.emit("data",e)}}function s(){p.writable=!1,t.call(p),!p.readable&&p.autoDestroy&&p.destroy()}e=e||function(e){this.queue(e)},t=t||function(){this.queue(null)};var o=!1,u=!1,l=[],c=!1,p=new a;return p.readable=p.writable=!0,p.paused=!1,p.autoDestroy=!(n&&n.autoDestroy===!1),p.write=function(t){return e.call(this,t),!p.paused},p.queue=p.push=function(e){return c?p:(null===e&&(c=!0),l.push(e),i(),p)},p.on("end",function(){p.readable=!1,!p.writable&&p.autoDestroy&&r.nextTick(function(){p.destroy()})}),p.end=function(e){if(!o)return o=!0,arguments.length&&p.write(e),s(),p},p.destroy=function(){if(!u)return u=!0,o=!0,l.length=0,p.writable=p.readable=!1,p.emit("close"),p},p.pause=function(){if(!p.paused)return p.paused=!0,p},p.resume=function(){return p.paused&&(p.paused=!1,p.emit("resume")),i(),p.paused||p.emit("drain"),p},p}var a=e("stream");n=t.exports=i,i.through=i}).call(this,e("_process"))},{_process:13,stream:30}],regenerator:[function(e,t,n){function n(e,t){function n(e){i.push(e)}function r(){try{this.queue(a(i.join(""),t).code),this.queue(null)}catch(e){this.emit("error",e)}}var i=[];return o(n,r)}function r(){regeneratorRuntime=e("regenerator-runtime")}function i(){return p||(p=s.readFileSync(r.path,"utf8"))}function a(t,n){var r;return n=l.defaults(n||{},{includeRuntime:!1}),r=c.test(t)?e("babel-core").transform(t,f):{code:t},n.includeRuntime===!0&&(r.code=i()+"\n"+r.code),r}var s=e("fs"),o=e("through"),u=e("./lib/visit").transform,l=e("./lib/util"),c=/\bfunction\s*\*|\basync\b/;t.exports=n,n.runtime=r,r.path=e("regenerator-runtime/path.js").path;var p,f={presets:[e("regenerator-preset")],parserOpts:{sourceType:"module",allowImportExportEverywhere:!0,allowReturnOutsideFunction:!0,allowSuperOutsideMethod:!0,strictMode:!1,plugins:["*","jsx","flow"]}};n.types=e("recast").types,n.compile=a,n.transform=u},{"./lib/util":36,"./lib/visit":37,"babel-core":38,fs:1,recast:539,"regenerator-preset":572,"regenerator-runtime":1888,"regenerator-runtime/path.js":1887,through:1890}]},{},[]);
\ No newline at end of file
diff --git a/tools/eslint/node_modules/ajv/lib/ajv.d.ts b/tools/eslint/node_modules/ajv/lib/ajv.d.ts
index 0e10c9a678331e..a45f931c9709ee 100644
--- a/tools/eslint/node_modules/ajv/lib/ajv.d.ts
+++ b/tools/eslint/node_modules/ajv/lib/ajv.d.ts
@@ -158,6 +158,8 @@ declare namespace ajv {
     errors?: boolean | string;
     // schema: false makes validate not to expect schema (ValidateFunction)
     schema?: boolean;
+    modifying?: boolean;
+    valid?: boolean;
     // one and only one of the following properties should be present
     validate?: ValidateFunction | SchemaValidateFunction;
     compile?: (schema: Object, parentSchema: Object) => ValidateFunction;
@@ -200,7 +202,7 @@ declare namespace ajv {
                           MultipleOfParams | PatternParams | RequiredParams |
                           TypeParams | UniqueItemsParams | CustomParams |
                           PatternGroupsParams | PatternRequiredParams |
-                          SwitchParams | NoParams;
+                          SwitchParams | NoParams | EnumParams;
 
   interface RefParams {
     ref: string;
@@ -271,6 +273,10 @@ declare namespace ajv {
   }
 
   interface NoParams {}
+
+  interface EnumParams {
+    allowedValues: Array;
+  }
 }
 
 export = ajv;
diff --git a/tools/eslint/node_modules/ajv/lib/dot/coerce.def b/tools/eslint/node_modules/ajv/lib/dot/coerce.def
index f3ff718d5c5eff..86e0e18af9f2ec 100644
--- a/tools/eslint/node_modules/ajv/lib/dot/coerce.def
+++ b/tools/eslint/node_modules/ajv/lib/dot/coerce.def
@@ -53,15 +53,9 @@
   if ({{=$coerced}} === undefined) {
     {{# def.error:'type' }}
   } else {
-    {{? $dataLvl }}
-      {{
-        var $parentData = 'data' + (($dataLvl-1)||'')
-          , $dataProperty = it.dataPathArr[$dataLvl];
-      }}
-      {{=$data}} = {{=$parentData}}[{{=$dataProperty}}] = {{=$coerced}};
-    {{??}}
-      data = {{=$coerced}};
-      if (parentData !== undefined) parentData[parentDataProperty] = {{=$coerced}};
-    {{?}}
+    {{# def.setParentData }}
+    {{=$data}} = {{=$coerced}};
+    {{? !$dataLvl }}if ({{=$parentData}} !== undefined){{?}}
+      {{=$parentData}}[{{=$parentDataProperty}}] = {{=$coerced}};
   }
 #}}
diff --git a/tools/eslint/node_modules/ajv/lib/dot/custom.jst b/tools/eslint/node_modules/ajv/lib/dot/custom.jst
index 55c143bbf7e765..ed5d80a5ef1479 100644
--- a/tools/eslint/node_modules/ajv/lib/dot/custom.jst
+++ b/tools/eslint/node_modules/ajv/lib/dot/custom.jst
@@ -46,7 +46,7 @@
 
 {{? !($inline || $macro) }}{{=$ruleErrs}} = null;{{?}}
 var {{=$errs}} = errors;
-var valid{{=$lvl}};
+var {{=$valid}};
 
 {{## def.callRuleValidate:
   {{=$validateCode}}.call(
@@ -64,34 +64,11 @@ var valid{{=$lvl}};
   )
 #}}
 
-{{## def.ruleValidationResult:
-  {{? $inline }}
-    {{? $rDef.statements }}
-      valid{{=$lvl}}
-    {{??}}
-      ({{= $ruleValidate.validate }})
-    {{?}}
-  {{?? $macro }}
-    {{=$nextValid}}
-  {{??}}
-    {{? $asyncKeyword }}
-      {{? $rDef.errors === false }}
-        ({{=it.yieldAwait}}{{= def_callRuleValidate }})
-      {{??}}
-        valid{{=$lvl}}
-      {{?}}
-    {{??}}
-      {{= def_callRuleValidate }}
-    {{?}}
-  {{?}}
-#}}
-
 {{## def.extendErrors:_inline:
   for (var {{=$i}}={{=$errs}}; {{=$i}}=4.7.0 <5.0.0",
-  "_id": "ajv@4.10.4",
+  "_id": "ajv@4.11.5",
   "_inCache": true,
   "_location": "/ajv",
   "_nodeVersion": "4.6.1",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/ajv-4.10.4.tgz_1483646632206_0.8484643213450909"
+    "tmp": "tmp/ajv-4.11.5.tgz_1489268678176_0.7930811231490225"
   },
   "_npmUser": {
     "name": "esp",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/table"
   ],
-  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz",
-  "_shasum": "c0974dd00b3464984892d6010aa9c2c945933254",
+  "_resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz",
+  "_shasum": "b6ee74657b993a01dce44b7944d56f485828d5bd",
   "_shrinkwrap": null,
   "_spec": "ajv@^4.7.0",
   "_where": "/Users/trott/io.js/tools/node_modules/table",
@@ -59,9 +59,10 @@
   "devDependencies": {
     "bluebird": "^3.1.5",
     "brfs": "^1.4.3",
-    "browserify": "^13.0.0",
+    "browserify": "^14.1.0",
     "chai": "^3.5.0",
     "coveralls": "^2.11.4",
+    "del-cli": "^0.2.1",
     "dot": "^1.0.3",
     "eslint": "^3.2.2",
     "gh-pages-generator": "^0.2.0",
@@ -88,8 +89,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "c0974dd00b3464984892d6010aa9c2c945933254",
-    "tarball": "https://registry.npmjs.org/ajv/-/ajv-4.10.4.tgz"
+    "shasum": "b6ee74657b993a01dce44b7944d56f485828d5bd",
+    "tarball": "https://registry.npmjs.org/ajv/-/ajv-4.11.5.tgz"
   },
   "files": [
     "lib/",
@@ -98,7 +99,7 @@
     "LICENSE",
     ".tonic_example.js"
   ],
-  "gitHead": "b4ecf27fb2f19516034a6ddf9c1cc7f766b0d014",
+  "gitHead": "c0a625b1a911ef1de6a67ed8f7819cba12161ff8",
   "homepage": "https://github.com/epoberezkin/ajv",
   "keywords": [
     "JSON",
@@ -140,17 +141,17 @@
     "url": "git+https://github.com/epoberezkin/ajv.git"
   },
   "scripts": {
-    "build": "rm -f lib/dotjs/*.js && node scripts/compile-dots.js",
-    "bundle": "./scripts/bundle . Ajv pure_getters",
-    "bundle-all": "rm -rf dist && npm run bundle && npm run bundle-regenerator && npm run bundle-nodent",
-    "bundle-beautify": "./scripts/bundle js-beautify",
-    "bundle-nodent": "./scripts/bundle nodent",
-    "bundle-regenerator": "./scripts/bundle regenerator",
-    "eslint": "if-node-version '>=4' eslint lib/*.js lib/compile/*.js spec",
+    "build": "del-cli lib/dotjs/*.js && node scripts/compile-dots.js",
+    "bundle": "node ./scripts/bundle.js . Ajv pure_getters",
+    "bundle-all": "del-cli dist && npm run bundle && npm run bundle-regenerator && npm run bundle-nodent",
+    "bundle-beautify": "node ./scripts/bundle.js js-beautify",
+    "bundle-nodent": "node ./scripts/bundle.js nodent",
+    "bundle-regenerator": "node ./scripts/bundle.js regenerator",
+    "eslint": "if-node-version \">=4\" eslint lib/*.js lib/compile/*.js spec scripts",
     "jshint": "jshint lib/*.js lib/**/*.js --exclude lib/dotjs/**/*",
     "prepublish": "npm run build && npm run bundle-all",
     "test": "npm run jshint && npm run eslint && npm run test-ts && npm run build && npm run test-cov && npm run test-browser",
-    "test-browser": "rm -rf .browser && npm run bundle-all && scripts/prepare-tests && npm run test-karma",
+    "test-browser": "del-cli .browser && npm run bundle-all && scripts/prepare-tests && npm run test-karma",
     "test-cov": "nyc npm run test-spec",
     "test-debug": "mocha spec/*.spec.js --debug-brk -R spec",
     "test-fast": "AJV_FAST_TEST=true npm run test-spec",
@@ -161,6 +162,6 @@
   },
   "tonicExampleFilename": ".tonic_example.js",
   "typings": "lib/ajv.d.ts",
-  "version": "4.10.4",
+  "version": "4.11.5",
   "webpack": "dist/ajv.bundle.js"
 }
diff --git a/tools/eslint/node_modules/ajv/scripts/.eslintrc.yml b/tools/eslint/node_modules/ajv/scripts/.eslintrc.yml
new file mode 100644
index 00000000000000..493d7d312d4295
--- /dev/null
+++ b/tools/eslint/node_modules/ajv/scripts/.eslintrc.yml
@@ -0,0 +1,3 @@
+rules:
+  no-console: 0
+  no-empty: [2, allowEmptyCatch: true]
diff --git a/tools/eslint/node_modules/ajv/scripts/bundle b/tools/eslint/node_modules/ajv/scripts/bundle
deleted file mode 100755
index fe299cdefc995a..00000000000000
--- a/tools/eslint/node_modules/ajv/scripts/bundle
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env bash
-
-set -e
-
-package=$1
-standalone=$2
-compress=$3
-
-name=$(./scripts/info $package name)
-main=$(./scripts/info $package main)
-version=$(./scripts/info $package version)
-description=$(./scripts/info $package description)
-
-if [ "$package" != "." ]; then
-    package="./node_modules/$package"
-fi 
-
-mkdir -p dist
-
-browserify -r "$package/$main:$name" \
-           -o "dist/$name.bundle.js" \
-           $([ -n "$standalone" ] && echo "-s $standalone")
-
-uglifyjs dist/$name.bundle.js \
-         -o dist/$name.min.js \
-         -c $compress \
-         -m \
-         $([ -n "$standalone" ] && echo "--source-map dist/$name.min.js.map -r $standalone") \
-         --preamble "/* $name $version: $description */"
-
-if [ -z "$standalone" ]; then
-    rm dist/$name.bundle.js
-fi
diff --git a/tools/eslint/node_modules/ajv/scripts/bundle.js b/tools/eslint/node_modules/ajv/scripts/bundle.js
new file mode 100644
index 00000000000000..b3a9890c59f3a6
--- /dev/null
+++ b/tools/eslint/node_modules/ajv/scripts/bundle.js
@@ -0,0 +1,54 @@
+'use strict';
+
+var fs = require('fs')
+  , path = require('path')
+  , browserify = require('browserify')
+  , uglify = require('uglify-js');
+
+var pkg = process.argv[2]
+  , standalone = process.argv[3]
+  , compress = process.argv[4];
+
+var packageDir = path.join(__dirname, '..');
+if (pkg != '.') packageDir = path.join(packageDir, 'node_modules', pkg);
+
+var json = require(path.join(packageDir, 'package.json'));
+
+var distDir = path.join(__dirname, '..', 'dist');
+if (!fs.existsSync(distDir)) fs.mkdirSync(distDir);
+
+var bOpts = {};
+if (standalone) bOpts.standalone = standalone;
+
+browserify(bOpts)
+.require(path.join(packageDir, json.main), {expose: json.name})
+.bundle(function (err, buf) {
+  if (err) {
+    console.error('browserify error:', err);
+    process.exit(1);
+  }
+
+  var outputFile = path.join(distDir, json.name);
+  var outputBundle = outputFile + '.bundle.js';
+  fs.writeFileSync(outputBundle, buf);
+  var uglifyOpts = {
+    warnings: true,
+    compress: {},
+    output: {
+      preamble: '/* ' + json.name + ' ' + json.version + ': ' + json.description + ' */'
+    }
+  };
+  if (compress) {
+    var compressOpts = compress.split(',');
+    for (var i=0; i<]/g;
+	return /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]/g;
 };
diff --git a/tools/eslint/node_modules/ansi-regex/package.json b/tools/eslint/node_modules/ansi-regex/package.json
index 4b6c93b69c20b5..c747f9a834f7b2 100644
--- a/tools/eslint/node_modules/ansi-regex/package.json
+++ b/tools/eslint/node_modules/ansi-regex/package.json
@@ -14,15 +14,19 @@
     ]
   ],
   "_from": "ansi-regex@>=2.0.0 <3.0.0",
-  "_id": "ansi-regex@2.0.0",
+  "_id": "ansi-regex@2.1.1",
   "_inCache": true,
   "_location": "/ansi-regex",
-  "_nodeVersion": "0.12.5",
+  "_nodeVersion": "0.10.32",
+  "_npmOperationalInternal": {
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/ansi-regex-2.1.1.tgz_1484363378013_0.4482989883981645"
+  },
   "_npmUser": {
-    "name": "sindresorhus",
-    "email": "sindresorhus@gmail.com"
+    "name": "qix",
+    "email": "i.am.qix@gmail.com"
   },
-  "_npmVersion": "2.11.2",
+  "_npmVersion": "2.14.2",
   "_phantomChildren": {},
   "_requested": {
     "raw": "ansi-regex@^2.0.0",
@@ -38,8 +42,8 @@
     "/inquirer",
     "/strip-ansi"
   ],
-  "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz",
-  "_shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
+  "_resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+  "_shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
   "_shrinkwrap": null,
   "_spec": "ansi-regex@^2.0.0",
   "_where": "/Users/trott/io.js/tools/node_modules/has-ansi",
@@ -49,17 +53,18 @@
     "url": "sindresorhus.com"
   },
   "bugs": {
-    "url": "https://github.com/sindresorhus/ansi-regex/issues"
+    "url": "https://github.com/chalk/ansi-regex/issues"
   },
   "dependencies": {},
   "description": "Regular expression for matching ANSI escape codes",
   "devDependencies": {
-    "mocha": "*"
+    "ava": "0.17.0",
+    "xo": "0.16.0"
   },
   "directories": {},
   "dist": {
-    "shasum": "c5061b6e0ef8a81775e50f5d66151bf6bf371107",
-    "tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.0.0.tgz"
+    "shasum": "c3b33ab5ee360d86e0e628f0468ae7ef27d654df",
+    "tarball": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -67,8 +72,8 @@
   "files": [
     "index.js"
   ],
-  "gitHead": "57c3f2941a73079fa8b081e02a522e3d29913e2f",
-  "homepage": "https://github.com/sindresorhus/ansi-regex",
+  "gitHead": "7c908e7b4eb6cd82bfe1295e33fdf6d166c7ed85",
+  "homepage": "https://github.com/chalk/ansi-regex#readme",
   "keywords": [
     "ansi",
     "styles",
@@ -99,12 +104,12 @@
   "license": "MIT",
   "maintainers": [
     {
-      "name": "sindresorhus",
-      "email": "sindresorhus@gmail.com"
+      "name": "qix",
+      "email": "i.am.qix@gmail.com"
     },
     {
-      "name": "jbnicolai",
-      "email": "jappelman@xebia.com"
+      "name": "sindresorhus",
+      "email": "sindresorhus@gmail.com"
     }
   ],
   "name": "ansi-regex",
@@ -112,11 +117,17 @@
   "readme": "ERROR: No README data found!",
   "repository": {
     "type": "git",
-    "url": "git+https://github.com/sindresorhus/ansi-regex.git"
+    "url": "git+https://github.com/chalk/ansi-regex.git"
   },
   "scripts": {
-    "test": "mocha test/test.js",
-    "view-supported": "node test/viewCodes.js"
+    "test": "xo && ava --verbose",
+    "view-supported": "node fixtures/view-codes.js"
   },
-  "version": "2.0.0"
+  "version": "2.1.1",
+  "xo": {
+    "rules": {
+      "guard-for-in": 0,
+      "no-loop-func": 0
+    }
+  }
 }
diff --git a/tools/eslint/node_modules/ansi-regex/readme.md b/tools/eslint/node_modules/ansi-regex/readme.md
index 1a4894ec1110e3..6a928edf0f6b08 100644
--- a/tools/eslint/node_modules/ansi-regex/readme.md
+++ b/tools/eslint/node_modules/ansi-regex/readme.md
@@ -1,4 +1,4 @@
-# ansi-regex [![Build Status](https://travis-ci.org/sindresorhus/ansi-regex.svg?branch=master)](https://travis-ci.org/sindresorhus/ansi-regex)
+# ansi-regex [![Build Status](https://travis-ci.org/chalk/ansi-regex.svg?branch=master)](https://travis-ci.org/chalk/ansi-regex)
 
 > Regular expression for matching [ANSI escape codes](http://en.wikipedia.org/wiki/ANSI_escape_code)
 
@@ -13,7 +13,7 @@ $ npm install --save ansi-regex
 ## Usage
 
 ```js
-var ansiRegex = require('ansi-regex');
+const ansiRegex = require('ansi-regex');
 
 ansiRegex().test('\u001b[4mcake\u001b[0m');
 //=> true
@@ -25,6 +25,14 @@ ansiRegex().test('cake');
 //=> ['\u001b[4m', '\u001b[0m']
 ```
 
+## FAQ
+
+### Why do you test for codes not in the ECMA 48 standard?
+
+Some of the codes we run as a test are codes that we acquired finding various lists of non-standard or manufacturer specific codes. If I recall correctly, we test for both standard and non-standard codes, as most of them follow the same or similar format and can be safely matched in strings without the risk of removing actual string content. There are a few non-standard control codes that do not follow the traditional format (i.e. they end in numbers) thus forcing us to exclude them from the test because we cannot reliably match them.
+
+On the historical side, those ECMA standards were established in the early 90's whereas the VT100, for example, was designed in the mid/late 70's. At that point in time, control codes were still pretty ungoverned and engineers used them for a multitude of things, namely to activate hardware ports that may have been proprietary. Somewhere else you see a similar 'anarchy' of codes is in the x86 architecture for processors; there are a ton of "interrupts" that can mean different things on certain brands of processors, most of which have been phased out.
+
 
 ## License
 
diff --git a/tools/eslint/node_modules/babel-code-frame/lib/index.js b/tools/eslint/node_modules/babel-code-frame/lib/index.js
index 486f53a632976d..ff49b9082ccb43 100644
--- a/tools/eslint/node_modules/babel-code-frame/lib/index.js
+++ b/tools/eslint/node_modules/babel-code-frame/lib/index.js
@@ -97,7 +97,7 @@ function getTokenType(match) {
       offset = _match$slice[0],
       text = _match$slice[1];
 
-  var token = _jsTokens2.default.matchToToken(match);
+  var token = (0, _jsTokens.matchToToken)(match);
 
   if (token.type === "name") {
     if (_esutils2.default.keyword.isReservedWordES6(token.value)) {
diff --git a/tools/eslint/node_modules/babel-code-frame/package.json b/tools/eslint/node_modules/babel-code-frame/package.json
index 6d31cc583c69ea..31d4f073fd6625 100644
--- a/tools/eslint/node_modules/babel-code-frame/package.json
+++ b/tools/eslint/node_modules/babel-code-frame/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "babel-code-frame@>=6.16.0 <7.0.0",
-  "_id": "babel-code-frame@6.20.0",
+  "_id": "babel-code-frame@6.22.0",
   "_inCache": true,
   "_location": "/babel-code-frame",
   "_nodeVersion": "6.9.0",
   "_npmOperationalInternal": {
-    "host": "packages-18-east.internal.npmjs.com",
-    "tmp": "tmp/babel-code-frame-6.20.0.tgz_1481239541478_0.12437463807873428"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/babel-code-frame-6.22.0.tgz_1484872404755_0.3806710622739047"
   },
   "_npmUser": {
     "name": "hzoo",
     "email": "hi@henryzoo.com"
   },
-  "_npmVersion": "3.10.8",
+  "_npmVersion": "3.10.10",
   "_phantomChildren": {},
   "_requested": {
     "raw": "babel-code-frame@^6.16.0",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/eslint"
   ],
-  "_resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.20.0.tgz",
-  "_shasum": "b968f839090f9a8bc6d41938fb96cb84f7387b26",
+  "_resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
+  "_shasum": "027620bee567a88c32561574e7fd0801d33118e4",
   "_shrinkwrap": null,
   "_spec": "babel-code-frame@^6.16.0",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
@@ -52,14 +52,14 @@
   "dependencies": {
     "chalk": "^1.1.0",
     "esutils": "^2.0.2",
-    "js-tokens": "^2.0.0"
+    "js-tokens": "^3.0.0"
   },
   "description": "Generate errors that contain a code frame that point to source locations.",
   "devDependencies": {},
   "directories": {},
   "dist": {
-    "shasum": "b968f839090f9a8bc6d41938fb96cb84f7387b26",
-    "tarball": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.20.0.tgz"
+    "shasum": "027620bee567a88c32561574e7fd0801d33118e4",
+    "tarball": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz"
   },
   "homepage": "https://babeljs.io/",
   "license": "MIT",
@@ -98,5 +98,5 @@
     "url": "https://github.com/babel/babel/tree/master/packages/babel-code-frame"
   },
   "scripts": {},
-  "version": "6.20.0"
+  "version": "6.22.0"
 }
diff --git a/tools/eslint/node_modules/concat-stream/package.json b/tools/eslint/node_modules/concat-stream/package.json
index e8a12a8fe8e0dd..2d422497cfe072 100644
--- a/tools/eslint/node_modules/concat-stream/package.json
+++ b/tools/eslint/node_modules/concat-stream/package.json
@@ -2,18 +2,18 @@
   "_args": [
     [
       {
-        "raw": "concat-stream@^1.4.6",
+        "raw": "concat-stream@^1.5.2",
         "scope": null,
         "escapedName": "concat-stream",
         "name": "concat-stream",
-        "rawSpec": "^1.4.6",
-        "spec": ">=1.4.6 <2.0.0",
+        "rawSpec": "^1.5.2",
+        "spec": ">=1.5.2 <2.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/eslint"
     ]
   ],
-  "_from": "concat-stream@>=1.4.6 <2.0.0",
+  "_from": "concat-stream@>=1.5.2 <2.0.0",
   "_id": "concat-stream@1.6.0",
   "_inCache": true,
   "_location": "/concat-stream",
@@ -29,12 +29,12 @@
   "_npmVersion": "2.15.11",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "concat-stream@^1.4.6",
+    "raw": "concat-stream@^1.5.2",
     "scope": null,
     "escapedName": "concat-stream",
     "name": "concat-stream",
-    "rawSpec": "^1.4.6",
-    "spec": ">=1.4.6 <2.0.0",
+    "rawSpec": "^1.5.2",
+    "spec": ">=1.5.2 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -43,7 +43,7 @@
   "_resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.0.tgz",
   "_shasum": "0aac662fd52be78964d5532f694784e70110acf7",
   "_shrinkwrap": null,
-  "_spec": "concat-stream@^1.4.6",
+  "_spec": "concat-stream@^1.5.2",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
   "author": {
     "name": "Max Ogden",
diff --git a/tools/eslint/node_modules/d/.lint b/tools/eslint/node_modules/d/.lint
index 858b75353b331c..cf54d815684b2f 100644
--- a/tools/eslint/node_modules/d/.lint
+++ b/tools/eslint/node_modules/d/.lint
@@ -1,11 +1,10 @@
 @root
 
-es5
 module
 
 tabs
 indent 2
-maxlen 80
+maxlen 100
 
 ass
 nomen
diff --git a/tools/eslint/node_modules/d/LICENCE b/tools/eslint/node_modules/d/LICENSE
similarity index 100%
rename from tools/eslint/node_modules/d/LICENCE
rename to tools/eslint/node_modules/d/LICENSE
diff --git a/tools/eslint/node_modules/d/README.md b/tools/eslint/node_modules/d/README.md
index 872d493ed86b6b..cab458ba0612d1 100644
--- a/tools/eslint/node_modules/d/README.md
+++ b/tools/eslint/node_modules/d/README.md
@@ -1,4 +1,5 @@
-# D - Property descriptor factory
+# D
+## Property descriptor factory
 
 _Originally derived from [es5-ext](https://github.com/medikoo/es5-ext) package._
 
@@ -10,7 +11,7 @@ Object.defineProperties(Account.prototype, {
   deposit: { value: function () {
       /* ... */
     }, configurable: true, enumerable: false, writable: true },
-  whithdraw: { value: function () {
+  withdraw: { value: function () {
       /* ... */
     }, configurable: true, enumerable: false, writable: true },
   balance: { get: function () {
@@ -29,7 +30,7 @@ Object.defineProperties(Account.prototype, {
   deposit: d(function () {
     /* ... */
   }),
-  whithdraw: d(function () {
+  withdraw: d(function () {
     /* ... */
   }),
   balance: d.gs(function () {
@@ -54,6 +55,12 @@ d('e', value); // { configurable: false, enumerable: true, writable: false }
 d.gs('e', value); // { configurable: false, enumerable: true }
 ```
 
+### Installation
+
+	$ npm install d
+
+To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
+
 ### Other utilities
 
 #### autoBind(obj, props) _(d/auto-bind)_
@@ -65,9 +72,9 @@ var d = require('d');
 var autoBind = require('d/auto-bind');
 
 var Foo = function () { this._count = 0; };
-autoBind(Foo.prototype, {
+Object.defineProperties(Foo.prototype, autoBind({
   increment: d(function () { ++this._count; });
-});
+}));
 
 var foo = new Foo();
 
@@ -84,25 +91,14 @@ var d = require('d');
 var lazy = require('d/lazy');
 
 var Foo = function () {};
-lazy(Foo.prototype, {
+Object.defineProperties(Foo.prototype, lazy({
   items: d(function () { return []; })
-});
+}));
 
 var foo = new Foo();
-foo.items.push(1, 2); // foo.items array created
+foo.items.push(1, 2); // foo.items array created and defined directly on foo
 ```
 
-## Installation
-### NPM
-
-In your project path:
-
-	$ npm install d
-
-### Browser
-
-You can easily bundle _D_ for browser with [modules-webmake](https://github.com/medikoo/modules-webmake)
-
 ## Tests [![Build Status](https://travis-ci.org/medikoo/d.png)](https://travis-ci.org/medikoo/d)
 
 	$ npm test
diff --git a/tools/eslint/node_modules/d/auto-bind.js b/tools/eslint/node_modules/d/auto-bind.js
index 1b00dba3cc3ddf..0fdac9b73024af 100644
--- a/tools/eslint/node_modules/d/auto-bind.js
+++ b/tools/eslint/node_modules/d/auto-bind.js
@@ -1,31 +1,32 @@
 'use strict';
 
-var copy       = require('es5-ext/object/copy')
-  , map        = require('es5-ext/object/map')
-  , callable   = require('es5-ext/object/valid-callable')
-  , validValue = require('es5-ext/object/valid-value')
+var copy             = require('es5-ext/object/copy')
+  , normalizeOptions = require('es5-ext/object/normalize-options')
+  , ensureCallable   = require('es5-ext/object/valid-callable')
+  , map              = require('es5-ext/object/map')
+  , callable         = require('es5-ext/object/valid-callable')
+  , validValue       = require('es5-ext/object/valid-value')
 
   , bind = Function.prototype.bind, defineProperty = Object.defineProperty
   , hasOwnProperty = Object.prototype.hasOwnProperty
   , define;
 
-define = function (name, desc, bindTo) {
+define = function (name, desc, options) {
 	var value = validValue(desc) && callable(desc.value), dgs;
 	dgs = copy(desc);
 	delete dgs.writable;
 	delete dgs.value;
 	dgs.get = function () {
-		if (hasOwnProperty.call(this, name)) return value;
-		desc.value = bind.call(value, (bindTo == null) ? this : this[bindTo]);
+		if (!options.overwriteDefinition && hasOwnProperty.call(this, name)) return value;
+		desc.value = bind.call(value, options.resolveContext ? options.resolveContext(this) : this);
 		defineProperty(this, name, desc);
 		return this[name];
 	};
 	return dgs;
 };
 
-module.exports = function (props/*, bindTo*/) {
-	var bindTo = arguments[1];
-	return map(props, function (desc, name) {
-		return define(name, desc, bindTo);
-	});
+module.exports = function (props/*, options*/) {
+	var options = normalizeOptions(arguments[1]);
+	if (options.resolveContext != null) ensureCallable(options.resolveContext);
+	return map(props, function (desc, name) { return define(name, desc, options); });
 };
diff --git a/tools/eslint/node_modules/d/lazy.js b/tools/eslint/node_modules/d/lazy.js
index 61e466535f3dab..d75b34b7798fd0 100644
--- a/tools/eslint/node_modules/d/lazy.js
+++ b/tools/eslint/node_modules/d/lazy.js
@@ -44,11 +44,14 @@ define = function (name, options) {
 				ownDesc = getOwnPropertyDescriptor(this, name);
 				// It happens in Safari, that getter is still called after property
 				// was defined with a value, following workarounds that
-				if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
-				if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
-					return ownDesc.get.call(this);
+				// While in IE11 it may happen that here ownDesc is undefined (go figure)
+				if (ownDesc) {
+					if (ownDesc.hasOwnProperty('value')) return ownDesc.value;
+					if ((typeof ownDesc.get === 'function') && (ownDesc.get !== self)) {
+						return ownDesc.get.call(this);
+					}
+					return value;
 				}
-				return value;
 			}
 			desc.value = resolvable ? call.call(value, this, options) : value;
 			defineProperty(this, name, desc);
@@ -75,6 +78,9 @@ define = function (name, options) {
 		};
 	}
 	dgs.set = function (value) {
+		if (hasOwnProperty.call(this, name)) {
+			throw new TypeError("Cannot assign to lazy defined '" + name + "' property of " + this);
+		}
 		dgs.get.call(this);
 		this[cacheName] = value;
 	};
diff --git a/tools/eslint/node_modules/d/package.json b/tools/eslint/node_modules/d/package.json
index 5b3534509d1fb8..09743d275dcde0 100644
--- a/tools/eslint/node_modules/d/package.json
+++ b/tools/eslint/node_modules/d/package.json
@@ -2,34 +2,35 @@
   "_args": [
     [
       {
-        "raw": "d@~0.1.1",
+        "raw": "d@1",
         "scope": null,
         "escapedName": "d",
         "name": "d",
-        "rawSpec": "~0.1.1",
-        "spec": ">=0.1.1 <0.2.0",
+        "rawSpec": "1",
+        "spec": ">=1.0.0 <2.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "d@>=0.1.1 <0.2.0",
-  "_id": "d@0.1.1",
+  "_from": "d@>=1.0.0 <2.0.0",
+  "_id": "d@1.0.0",
   "_inCache": true,
   "_location": "/d",
+  "_nodeVersion": "4.2.3",
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "1.4.3",
+  "_npmVersion": "2.14.7",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "d@~0.1.1",
+    "raw": "d@1",
     "scope": null,
     "escapedName": "d",
     "name": "d",
-    "rawSpec": "~0.1.1",
-    "spec": ">=0.1.1 <0.2.0",
+    "rawSpec": "1",
+    "spec": ">=1.0.0 <2.0.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -40,10 +41,10 @@
     "/es6-weak-map",
     "/event-emitter"
   ],
-  "_resolved": "https://registry.npmjs.org/d/-/d-0.1.1.tgz",
-  "_shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
+  "_resolved": "https://registry.npmjs.org/d/-/d-1.0.0.tgz",
+  "_shasum": "754bb5bfe55451da69a58b94d45f4c5b0462d58f",
   "_shrinkwrap": null,
-  "_spec": "d@~0.1.1",
+  "_spec": "d@1",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -54,18 +55,21 @@
     "url": "https://github.com/medikoo/d/issues"
   },
   "dependencies": {
-    "es5-ext": "~0.10.2"
+    "es5-ext": "^0.10.9"
   },
   "description": "Property descriptor factory",
   "devDependencies": {
-    "tad": "~0.1.21"
+    "tad": "^0.2.4",
+    "xlint": "^0.2.2",
+    "xlint-jslint-medikoo": "^0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "da184c535d18d8ee7ba2aa229b914009fae11309",
-    "tarball": "https://registry.npmjs.org/d/-/d-0.1.1.tgz"
+    "shasum": "754bb5bfe55451da69a58b94d45f4c5b0462d58f",
+    "tarball": "https://registry.npmjs.org/d/-/d-1.0.0.tgz"
   },
-  "homepage": "https://github.com/medikoo/d",
+  "gitHead": "f9031455a5012c23bb85a3eec93007df302b3a64",
+  "homepage": "https://github.com/medikoo/d#readme",
   "keywords": [
     "descriptor",
     "es",
@@ -91,7 +95,9 @@
     "url": "git://github.com/medikoo/d.git"
   },
   "scripts": {
+    "lint": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --no-cache --no-stream",
+    "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node node_modules/tad/bin/tad"
   },
-  "version": "0.1.1"
+  "version": "1.0.0"
 }
diff --git a/tools/eslint/node_modules/debug/Makefile b/tools/eslint/node_modules/debug/Makefile
index 1a2c195a6a9273..584da8bf938e63 100644
--- a/tools/eslint/node_modules/debug/Makefile
+++ b/tools/eslint/node_modules/debug/Makefile
@@ -17,36 +17,34 @@ BROWSERIFY ?= $(NODE) $(BIN)/browserify
 
 .FORCE:
 
-all: dist/debug.js
-
 install: node_modules
-	
+
 node_modules: package.json
 	@NODE_ENV= $(PKG) install
 	@touch node_modules
-	
+
 lint: .FORCE
 	eslint browser.js debug.js index.js node.js
-	
+
 test-node: .FORCE
 	istanbul cover node_modules/mocha/bin/_mocha -- test/**.js
-	
+
 test-browser: .FORCE
 	mkdir -p dist
-	
+
 	@$(BROWSERIFY) \
 		--standalone debug \
 		. > dist/debug.js
-	
+
 	karma start --single-run
 	rimraf dist
-	
+
 test: .FORCE
 	concurrently \
 		"make test-node" \
 		"make test-browser"
-	
-coveralls: 
+
+coveralls:
 	cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js
-	
+
 .PHONY: all install clean distclean
diff --git a/tools/eslint/node_modules/debug/Readme.md b/tools/eslint/node_modules/debug/Readme.md
index 2c57ddfa5da818..9b70a382f952c8 100644
--- a/tools/eslint/node_modules/debug/Readme.md
+++ b/tools/eslint/node_modules/debug/Readme.md
@@ -1,5 +1,8 @@
 # debug
-[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug)  [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master)
+[![Build Status](https://travis-ci.org/visionmedia/debug.svg?branch=master)](https://travis-ci.org/visionmedia/debug)  [![Coverage Status](https://coveralls.io/repos/github/visionmedia/debug/badge.svg?branch=master)](https://coveralls.io/github/visionmedia/debug?branch=master)  [![Slack](https://visionmedia-community-slackin.now.sh/badge.svg)](https://visionmedia-community-slackin.now.sh/) [![OpenCollective](https://opencollective.com/debug/backers/badge.svg)](#backers)
+[![OpenCollective](https://opencollective.com/debug/sponsors/badge.svg)](#sponsors)
+
+
 
 A tiny node.js debugging utility modelled after node core's debugging technique.
 
@@ -13,7 +16,7 @@ $ npm install debug
 
 ## Usage
 
-`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole. 
+`debug` exposes a function; simply pass this function the name of your module, and it will return a decorated version of `console.error` for you to pass debug statements to. This will allow you to toggle the debug output for different parts of your module as well as the module as a whole.
 
 Example _app.js_:
 
@@ -212,6 +215,77 @@ log('still goes to stdout, but via console.info now');
  - Nathan Rajlich
  - Andrew Rhyne
 
+## Backers
+
+Support us with a monthly donation and help us continue our activities. [[Become a backer](https://opencollective.com/debug#backer)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## Sponsors
+
+Become a sponsor and get your logo on our README on Github with a link to your site. [[Become a sponsor](https://opencollective.com/debug#sponsor)]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 ## License
 
 (The MIT License)
diff --git a/tools/eslint/node_modules/debug/package.json b/tools/eslint/node_modules/debug/package.json
index 3e8f3b946b5e83..04bdbe2ecfbf58 100644
--- a/tools/eslint/node_modules/debug/package.json
+++ b/tools/eslint/node_modules/debug/package.json
@@ -14,13 +14,13 @@
     ]
   ],
   "_from": "debug@>=2.1.1 <3.0.0",
-  "_id": "debug@2.6.0",
+  "_id": "debug@2.6.3",
   "_inCache": true,
   "_location": "/debug",
   "_nodeVersion": "6.9.2",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/debug-2.6.0.tgz_1482990633625_0.042889281176030636"
+    "tmp": "tmp/debug-2.6.3.tgz_1489463433800_0.9440390267409384"
   },
   "_npmUser": {
     "name": "thebigredgeek",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/eslint"
   ],
-  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz",
-  "_shasum": "bc596bcabe7617f11d9fa15361eded5608b8499b",
+  "_resolved": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz",
+  "_shasum": "0f7eb8c30965ec08c72accfa0130c8b79984141d",
   "_shrinkwrap": null,
   "_spec": "debug@^2.1.1",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
@@ -94,10 +94,10 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "bc596bcabe7617f11d9fa15361eded5608b8499b",
-    "tarball": "https://registry.npmjs.org/debug/-/debug-2.6.0.tgz"
+    "shasum": "0f7eb8c30965ec08c72accfa0130c8b79984141d",
+    "tarball": "https://registry.npmjs.org/debug/-/debug-2.6.3.tgz"
   },
-  "gitHead": "ac5ccae70358a2bccc71d288e5f9c656a7678748",
+  "gitHead": "9dc30f8378cc12192635cc6a31f0d96bb39be8bb",
   "homepage": "https://github.com/visionmedia/debug#readme",
   "keywords": [
     "debug",
@@ -120,5 +120,5 @@
     "url": "git://github.com/visionmedia/debug.git"
   },
   "scripts": {},
-  "version": "2.6.0"
+  "version": "2.6.3"
 }
diff --git a/tools/eslint/node_modules/debug/src/browser.js b/tools/eslint/node_modules/debug/src/browser.js
index 38d6391e3e4216..e21c1e0b61e157 100644
--- a/tools/eslint/node_modules/debug/src/browser.js
+++ b/tools/eslint/node_modules/debug/src/browser.js
@@ -148,14 +148,17 @@ function save(namespaces) {
  */
 
 function load() {
+  var r;
   try {
-    return exports.storage.debug;
+    r = exports.storage.debug;
   } catch(e) {}
 
   // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
-  if (typeof process !== 'undefined' && 'env' in process) {
-    return process.env.DEBUG;
+  if (!r && typeof process !== 'undefined' && 'env' in process) {
+    r = process.env.DEBUG;
   }
+
+  return r;
 }
 
 /**
diff --git a/tools/eslint/node_modules/debug/src/debug.js b/tools/eslint/node_modules/debug/src/debug.js
index 4d3c7f2782ff99..d5d6d167006bd6 100644
--- a/tools/eslint/node_modules/debug/src/debug.js
+++ b/tools/eslint/node_modules/debug/src/debug.js
@@ -6,7 +6,7 @@
  * Expose `debug()` as the module.
  */
 
-exports = module.exports = createDebug.debug = createDebug.default = createDebug;
+exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
 exports.coerce = coerce;
 exports.disable = disable;
 exports.enable = enable;
@@ -138,6 +138,9 @@ function createDebug(namespace) {
 function enable(namespaces) {
   exports.save(namespaces);
 
+  exports.names = [];
+  exports.skips = [];
+
   var split = (namespaces || '').split(/[\s,]+/);
   var len = split.length;
 
diff --git a/tools/eslint/node_modules/debug/src/node.js b/tools/eslint/node_modules/debug/src/node.js
index ea6a8967b34ca0..3c7407b6b73326 100644
--- a/tools/eslint/node_modules/debug/src/node.js
+++ b/tools/eslint/node_modules/debug/src/node.js
@@ -38,7 +38,7 @@ exports.inspectOpts = Object.keys(process.env).filter(function (key) {
   var prop = key
     .substring(6)
     .toLowerCase()
-    .replace(/_([a-z])/, function (_, k) { return k.toUpperCase() });
+    .replace(/_([a-z])/g, function (_, k) { return k.toUpperCase() });
 
   // coerce string value into JS value
   var val = process.env[key];
@@ -58,11 +58,12 @@ exports.inspectOpts = Object.keys(process.env).filter(function (key) {
  *   $ DEBUG_FD=3 node script.js 3>debug.log
  */
 
-if ('DEBUG_FD' in process.env) {
-  util.deprecate(function(){}, '`DEBUG_FD` is deprecated. Override `debug.log` if you want to use a different log function (https://git.io/vMUyr)')()
+var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
+
+if (1 !== fd && 2 !== fd) {
+  util.deprecate(function(){}, 'except for stderr(2) and stdout(1), any other usage of DEBUG_FD is deprecated. Override debug.log if you want to use a different log function (https://git.io/debug_fd)')()
 }
 
-var fd = parseInt(process.env.DEBUG_FD, 10) || 2;
 var stream = 1 === fd ? process.stdout :
              2 === fd ? process.stderr :
              createWritableStdioStream(fd);
diff --git a/tools/eslint/node_modules/doctrine/LICENSE b/tools/eslint/node_modules/doctrine/LICENSE
new file mode 100644
index 00000000000000..3e8ba72f69be57
--- /dev/null
+++ b/tools/eslint/node_modules/doctrine/LICENSE
@@ -0,0 +1,177 @@
+
+                             Apache License
+                       Version 2.0, January 2004
+                    http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+  "License" shall mean the terms and conditions for use, reproduction,
+  and distribution as defined by Sections 1 through 9 of this document.
+
+  "Licensor" shall mean the copyright owner or entity authorized by
+  the copyright owner that is granting the License.
+
+  "Legal Entity" shall mean the union of the acting entity and all
+  other entities that control, are controlled by, or are under common
+  control with that entity. For the purposes of this definition,
+  "control" means (i) the power, direct or indirect, to cause the
+  direction or management of such entity, whether by contract or
+  otherwise, or (ii) ownership of fifty percent (50%) or more of the
+  outstanding shares, or (iii) beneficial ownership of such entity.
+
+  "You" (or "Your") shall mean an individual or Legal Entity
+  exercising permissions granted by this License.
+
+  "Source" form shall mean the preferred form for making modifications,
+  including but not limited to software source code, documentation
+  source, and configuration files.
+
+  "Object" form shall mean any form resulting from mechanical
+  transformation or translation of a Source form, including but
+  not limited to compiled object code, generated documentation,
+  and conversions to other media types.
+
+  "Work" shall mean the work of authorship, whether in Source or
+  Object form, made available under the License, as indicated by a
+  copyright notice that is included in or attached to the work
+  (an example is provided in the Appendix below).
+
+  "Derivative Works" shall mean any work, whether in Source or Object
+  form, that is based on (or derived from) the Work and for which the
+  editorial revisions, annotations, elaborations, or other modifications
+  represent, as a whole, an original work of authorship. For the purposes
+  of this License, Derivative Works shall not include works that remain
+  separable from, or merely link (or bind by name) to the interfaces of,
+  the Work and Derivative Works thereof.
+
+  "Contribution" shall mean any work of authorship, including
+  the original version of the Work and any modifications or additions
+  to that Work or Derivative Works thereof, that is intentionally
+  submitted to Licensor for inclusion in the Work by the copyright owner
+  or by an individual or Legal Entity authorized to submit on behalf of
+  the copyright owner. For the purposes of this definition, "submitted"
+  means any form of electronic, verbal, or written communication sent
+  to the Licensor or its representatives, including but not limited to
+  communication on electronic mailing lists, source code control systems,
+  and issue tracking systems that are managed by, or on behalf of, the
+  Licensor for the purpose of discussing and improving the Work, but
+  excluding communication that is conspicuously marked or otherwise
+  designated in writing by the copyright owner as "Not a Contribution."
+
+  "Contributor" shall mean Licensor and any individual or Legal Entity
+  on behalf of whom a Contribution has been received by Licensor and
+  subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+  this License, each Contributor hereby grants to You a perpetual,
+  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+  copyright license to reproduce, prepare Derivative Works of,
+  publicly display, publicly perform, sublicense, and distribute the
+  Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+  this License, each Contributor hereby grants to You a perpetual,
+  worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+  (except as stated in this section) patent license to make, have made,
+  use, offer to sell, sell, import, and otherwise transfer the Work,
+  where such license applies only to those patent claims licensable
+  by such Contributor that are necessarily infringed by their
+  Contribution(s) alone or by combination of their Contribution(s)
+  with the Work to which such Contribution(s) was submitted. If You
+  institute patent litigation against any entity (including a
+  cross-claim or counterclaim in a lawsuit) alleging that the Work
+  or a Contribution incorporated within the Work constitutes direct
+  or contributory patent infringement, then any patent licenses
+  granted to You under this License for that Work shall terminate
+  as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+  Work or Derivative Works thereof in any medium, with or without
+  modifications, and in Source or Object form, provided that You
+  meet the following conditions:
+
+  (a) You must give any other recipients of the Work or
+      Derivative Works a copy of this License; and
+
+  (b) You must cause any modified files to carry prominent notices
+      stating that You changed the files; and
+
+  (c) You must retain, in the Source form of any Derivative Works
+      that You distribute, all copyright, patent, trademark, and
+      attribution notices from the Source form of the Work,
+      excluding those notices that do not pertain to any part of
+      the Derivative Works; and
+
+  (d) If the Work includes a "NOTICE" text file as part of its
+      distribution, then any Derivative Works that You distribute must
+      include a readable copy of the attribution notices contained
+      within such NOTICE file, excluding those notices that do not
+      pertain to any part of the Derivative Works, in at least one
+      of the following places: within a NOTICE text file distributed
+      as part of the Derivative Works; within the Source form or
+      documentation, if provided along with the Derivative Works; or,
+      within a display generated by the Derivative Works, if and
+      wherever such third-party notices normally appear. The contents
+      of the NOTICE file are for informational purposes only and
+      do not modify the License. You may add Your own attribution
+      notices within Derivative Works that You distribute, alongside
+      or as an addendum to the NOTICE text from the Work, provided
+      that such additional attribution notices cannot be construed
+      as modifying the License.
+
+  You may add Your own copyright statement to Your modifications and
+  may provide additional or different license terms and conditions
+  for use, reproduction, or distribution of Your modifications, or
+  for any such Derivative Works as a whole, provided Your use,
+  reproduction, and distribution of the Work otherwise complies with
+  the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+  any Contribution intentionally submitted for inclusion in the Work
+  by You to the Licensor shall be under the terms and conditions of
+  this License, without any additional terms or conditions.
+  Notwithstanding the above, nothing herein shall supersede or modify
+  the terms of any separate license agreement you may have executed
+  with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+  names, trademarks, service marks, or product names of the Licensor,
+  except as required for reasonable and customary use in describing the
+  origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+  agreed to in writing, Licensor provides the Work (and each
+  Contributor provides its Contributions) on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+  implied, including, without limitation, any warranties or conditions
+  of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+  PARTICULAR PURPOSE. You are solely responsible for determining the
+  appropriateness of using or redistributing the Work and assume any
+  risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+  whether in tort (including negligence), contract, or otherwise,
+  unless required by applicable law (such as deliberate and grossly
+  negligent acts) or agreed to in writing, shall any Contributor be
+  liable to You for damages, including any direct, indirect, special,
+  incidental, or consequential damages of any character arising as a
+  result of this License or out of the use or inability to use the
+  Work (including but not limited to damages for loss of goodwill,
+  work stoppage, computer failure or malfunction, or any and all
+  other commercial damages or losses), even if such Contributor
+  has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+  the Work or Derivative Works thereof, You may choose to offer,
+  and charge a fee for, acceptance of support, warranty, indemnity,
+  or other liability obligations and/or rights consistent with this
+  License. However, in accepting such obligations, You may act only
+  on Your own behalf and on Your sole responsibility, not on behalf
+  of any other Contributor, and only if You agree to indemnify,
+  defend, and hold each Contributor harmless for any liability
+  incurred by, or claims asserted against, such Contributor by reason
+  of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
diff --git a/tools/eslint/node_modules/doctrine/LICENSE.BSD b/tools/eslint/node_modules/doctrine/LICENSE.BSD
deleted file mode 100644
index 1e03b5df5ffc5a..00000000000000
--- a/tools/eslint/node_modules/doctrine/LICENSE.BSD
+++ /dev/null
@@ -1,22 +0,0 @@
-Doctrine
-Copyright jQuery Foundation and other contributors, https://jquery.org/
-
-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.
-
-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  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.
diff --git a/tools/eslint/node_modules/doctrine/README.md b/tools/eslint/node_modules/doctrine/README.md
index bc6dcf91907faf..dcfe776c4694c3 100644
--- a/tools/eslint/node_modules/doctrine/README.md
+++ b/tools/eslint/node_modules/doctrine/README.md
@@ -98,29 +98,19 @@ No. Doctrine can only parse JSDoc comments, so you'll need to pass just the JSDo
 
 #### doctrine
 
-Copyright (C) 2012 [Yusuke Suzuki](http://github.com/Constellation)
- (twitter: [@Constellation](http://twitter.com/Constellation)) and other contributors.
+Copyright JS Foundation and other contributors, https://js.foundation
 
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
+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
 
-  * Redistributions of source code must retain the above copyright
-    notice, this list of conditions and the following disclaimer.
+    http://www.apache.org/licenses/LICENSE-2.0
 
-  * 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.
-
-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  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.
+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.
 
 #### esprima
 
diff --git a/tools/eslint/node_modules/doctrine/package.json b/tools/eslint/node_modules/doctrine/package.json
index d1e888fad31a3f..00ff82ee57b1ae 100644
--- a/tools/eslint/node_modules/doctrine/package.json
+++ b/tools/eslint/node_modules/doctrine/package.json
@@ -2,48 +2,48 @@
   "_args": [
     [
       {
-        "raw": "doctrine@^1.2.2",
+        "raw": "doctrine@^2.0.0",
         "scope": null,
         "escapedName": "doctrine",
         "name": "doctrine",
-        "rawSpec": "^1.2.2",
-        "spec": ">=1.2.2 <2.0.0",
+        "rawSpec": "^2.0.0",
+        "spec": ">=2.0.0 <3.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/eslint"
     ]
   ],
-  "_from": "doctrine@>=1.2.2 <2.0.0",
-  "_id": "doctrine@1.5.0",
+  "_from": "doctrine@>=2.0.0 <3.0.0",
+  "_id": "doctrine@2.0.0",
   "_inCache": true,
   "_location": "/doctrine",
-  "_nodeVersion": "4.4.7",
+  "_nodeVersion": "4.4.2",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/doctrine-1.5.0.tgz_1476393949423_0.8078370734583586"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/doctrine-2.0.0.tgz_1479232728285_0.34204454137943685"
   },
   "_npmUser": {
-    "name": "eslint",
-    "email": "nicholas+eslint@nczconsulting.com"
+    "name": "nzakas",
+    "email": "nicholas@nczconsulting.com"
   },
-  "_npmVersion": "2.15.8",
+  "_npmVersion": "2.15.0",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "doctrine@^1.2.2",
+    "raw": "doctrine@^2.0.0",
     "scope": null,
     "escapedName": "doctrine",
     "name": "doctrine",
-    "rawSpec": "^1.2.2",
-    "spec": ">=1.2.2 <2.0.0",
+    "rawSpec": "^2.0.0",
+    "spec": ">=2.0.0 <3.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/eslint"
   ],
-  "_resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
-  "_shasum": "379dce730f6166f76cefa4e6707a159b02c5a6fa",
+  "_resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz",
+  "_shasum": "c73d8d2909d22291e1a007a395804da8b665fe63",
   "_shrinkwrap": null,
-  "_spec": "doctrine@^1.2.2",
+  "_spec": "doctrine@^2.0.0",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
   "bugs": {
     "url": "https://github.com/eslint/doctrine/issues"
@@ -71,8 +71,8 @@
     "lib": "./lib"
   },
   "dist": {
-    "shasum": "379dce730f6166f76cefa4e6707a159b02c5a6fa",
-    "tarball": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz"
+    "shasum": "c73d8d2909d22291e1a007a395804da8b665fe63",
+    "tarball": "https://registry.npmjs.org/doctrine/-/doctrine-2.0.0.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -84,14 +84,9 @@
     "LICENSE.esprima",
     "README.md"
   ],
-  "gitHead": "dcd631feb5dd5bcd0899dd35548da2752ea2263e",
+  "gitHead": "46c600f27f54b3ab6b0b8a9ac9f97c807ffa95ef",
   "homepage": "https://github.com/eslint/doctrine",
-  "licenses": [
-    {
-      "type": "BSD",
-      "url": "http://github.com/eslint/doctrine/raw/master/LICENSE.BSD"
-    }
-  ],
+  "license": "Apache-2.0",
   "main": "lib/doctrine.js",
   "maintainers": [
     {
@@ -122,5 +117,5 @@
     "release": "eslint-release",
     "test": "npm run lint && node Makefile.js test"
   },
-  "version": "1.5.0"
+  "version": "2.0.0"
 }
diff --git a/tools/eslint/node_modules/es5-ext/.lint b/tools/eslint/node_modules/es5-ext/.lint
index d1da610376a524..1347d518e4fe34 100644
--- a/tools/eslint/node_modules/es5-ext/.lint
+++ b/tools/eslint/node_modules/es5-ext/.lint
@@ -12,6 +12,7 @@ forin
 nomen
 plusplus
 vars
+sub
 
 ./global.js
 ./function/_define-length.js
diff --git a/tools/eslint/node_modules/es5-ext/LICENSE b/tools/eslint/node_modules/es5-ext/LICENSE
index de39071f1b8bbf..f82047ef95b580 100644
--- a/tools/eslint/node_modules/es5-ext/LICENSE
+++ b/tools/eslint/node_modules/es5-ext/LICENSE
@@ -1,4 +1,6 @@
-Copyright (C) 2011-2015 Mariusz Nowak (www.medikoo.com)
+The MIT License (MIT)
+
+Copyright (C) 2011-2017 Mariusz Nowak (www.medikoo.com)
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
diff --git a/tools/eslint/node_modules/es5-ext/array/#/concat/shim.js b/tools/eslint/node_modules/es5-ext/array/#/concat/shim.js
index 8b28e4ae03b70f..52963d9d214069 100644
--- a/tools/eslint/node_modules/es5-ext/array/#/concat/shim.js
+++ b/tools/eslint/node_modules/es5-ext/array/#/concat/shim.js
@@ -1,8 +1,9 @@
 'use strict';
 
-var isPlainArray = require('../../is-plain-array')
-  , toPosInt     = require('../../../number/to-pos-integer')
-  , isObject     = require('../../../object/is-object')
+var isPlainArray       = require('../../is-plain-array')
+  , toPosInt           = require('../../../number/to-pos-integer')
+  , isObject           = require('../../../object/is-object')
+  , isConcatSpreadable = require('es6-symbol').isConcatSpreadable
 
   , isArray = Array.isArray, concat = Array.prototype.concat
   , forEach = Array.prototype.forEach
@@ -12,8 +13,8 @@ var isPlainArray = require('../../is-plain-array')
 isSpreadable = function (value) {
 	if (!value) return false;
 	if (!isObject(value)) return false;
-	if (value['@@isConcatSpreadable'] !== undefined) {
-		return Boolean(value['@@isConcatSpreadable']);
+	if (value[isConcatSpreadable] !== undefined) {
+		return Boolean(value[isConcatSpreadable]);
 	}
 	return isArray(value);
 };
@@ -23,8 +24,12 @@ module.exports = function (item/*, …items*/) {
 	if (!this || !isArray(this) || isPlainArray(this)) {
 		return concat.apply(this, arguments);
 	}
-	result = new this.constructor(this.length);
-	forEach.call(this, function (val, i) { result[i] = val; });
+	result = new this.constructor();
+	if (isSpreadable(this)) {
+		forEach.call(this, function (val, i) { result[i] = val; });
+	} else {
+		result[0] = this;
+	}
 	forEach.call(arguments, function (arg) {
 		var base;
 		if (isSpreadable(arg)) {
diff --git a/tools/eslint/node_modules/es5-ext/array/#/flatten.js b/tools/eslint/node_modules/es5-ext/array/#/flatten.js
index 4bf267f2bad8d9..ae794d45dc064d 100644
--- a/tools/eslint/node_modules/es5-ext/array/#/flatten.js
+++ b/tools/eslint/node_modules/es5-ext/array/#/flatten.js
@@ -1,15 +1,39 @@
+// Stack grow safe implementation
+
 'use strict';
 
-var isArray = Array.isArray, forEach = Array.prototype.forEach;
+var ensureValue = require('../../object/valid-value')
+
+  , isArray = Array.isArray, hasOwnProperty = Object.prototype.hasOwnProperty;
 
-module.exports = function flatten() {
-	var r = [];
-	forEach.call(this, function (x) {
-		if (isArray(x)) {
-			r = r.concat(flatten.call(x));
+module.exports = function () {
+	var input = ensureValue(this), index = 0, remaining, remainingIndexes, l, i, result = [];
+	main: //jslint: ignore
+	while (input) {
+		l = input.length;
+		for (i = index; i < l; ++i) {
+			if (!hasOwnProperty.call(input, i)) continue;
+			if (isArray(input[i])) {
+				if (i < (l - 1)) {
+					if (!remaining) {
+						remaining = [];
+						remainingIndexes = [];
+					}
+					remaining.push(input);
+					remainingIndexes.push(i + 1);
+				}
+				input = input[i];
+				index = 0;
+				continue main;
+			}
+			result.push(input[i]);
+		}
+		if (remaining) {
+			input = remaining.pop();
+			index = remainingIndexes.pop();
 		} else {
-			r.push(x);
+			input = null;
 		}
-	});
-	return r;
+	}
+	return result;
 };
diff --git a/tools/eslint/node_modules/es5-ext/error/custom.js b/tools/eslint/node_modules/es5-ext/error/custom.js
index bbc2dc20b462b8..368368a3f4689f 100644
--- a/tools/eslint/node_modules/es5-ext/error/custom.js
+++ b/tools/eslint/node_modules/es5-ext/error/custom.js
@@ -5,7 +5,7 @@ var assign = require('../object/assign')
   , captureStackTrace = Error.captureStackTrace;
 
 exports = module.exports = function (message/*, code, ext*/) {
-	var err = new Error(), code = arguments[1], ext = arguments[2];
+	var err = new Error(message), code = arguments[1], ext = arguments[2];
 	if (ext == null) {
 		if (code && (typeof code === 'object')) {
 			ext = code;
@@ -13,7 +13,6 @@ exports = module.exports = function (message/*, code, ext*/) {
 		}
 	}
 	if (ext != null) assign(err, ext);
-	err.message = String(message);
 	if (code != null) err.code = String(code);
 	if (captureStackTrace) captureStackTrace(err, exports);
 	return err;
diff --git a/tools/eslint/node_modules/es5-ext/index.js b/tools/eslint/node_modules/es5-ext/index.js
index db9a7600b47115..bbd9bd3dc324f4 100644
--- a/tools/eslint/node_modules/es5-ext/index.js
+++ b/tools/eslint/node_modules/es5-ext/index.js
@@ -9,6 +9,7 @@ module.exports = {
 	error:    require('./error'),
 	function: require('./function'),
 	iterable: require('./iterable'),
+	json:     require('./json'),
 	math:     require('./math'),
 	number:   require('./number'),
 	object:   require('./object'),
diff --git a/tools/eslint/node_modules/es5-ext/json/index.js b/tools/eslint/node_modules/es5-ext/json/index.js
new file mode 100644
index 00000000000000..9213ffb32eb20d
--- /dev/null
+++ b/tools/eslint/node_modules/es5-ext/json/index.js
@@ -0,0 +1,5 @@
+'use strict';
+
+module.exports = {
+	safeStringify: require('./safe-stringify')
+};
diff --git a/tools/eslint/node_modules/es5-ext/json/safe-stringify.js b/tools/eslint/node_modules/es5-ext/json/safe-stringify.js
new file mode 100644
index 00000000000000..89e339de240440
--- /dev/null
+++ b/tools/eslint/node_modules/es5-ext/json/safe-stringify.js
@@ -0,0 +1,26 @@
+'use strict';
+
+var compact  = require('../array/#/compact')
+  , isObject = require('../object/is-object')
+  , toArray  = require('../object/to-array')
+
+  , isArray = Array.isArray, stringify = JSON.stringify;
+
+module.exports = function self(value/*, replacer, space*/) {
+	var replacer = arguments[1], space = arguments[2];
+	try {
+		return stringify(value, replacer, space);
+	} catch (e) {
+		if (!isObject(value)) return;
+		if (typeof value.toJSON === 'function') return;
+		if (isArray(value)) {
+			return '[' +
+				compact.call(value.map(function (value) { return self(value, replacer, space); })) + ']';
+		}
+		return '{' + compact.call(toArray(value, function (value, key) {
+			value = self(value, replacer, space);
+			if (!value) return;
+			return stringify(key) + ':' + value;
+		})).join(',') + '}';
+	}
+};
diff --git a/tools/eslint/node_modules/es5-ext/math/atanh/is-implemented.js b/tools/eslint/node_modules/es5-ext/math/atanh/is-implemented.js
index dbaf18ece2d2b0..9a526353ce8761 100644
--- a/tools/eslint/node_modules/es5-ext/math/atanh/is-implemented.js
+++ b/tools/eslint/node_modules/es5-ext/math/atanh/is-implemented.js
@@ -3,5 +3,5 @@
 module.exports = function () {
 	var atanh = Math.atanh;
 	if (typeof atanh !== 'function') return false;
-	return atanh(0.5) === 0.5493061443340549;
+	return Math.round(atanh(0.5) * 1e15) === 549306144334055;
 };
diff --git a/tools/eslint/node_modules/es5-ext/object/index.js b/tools/eslint/node_modules/es5-ext/object/index.js
index 77f5b6aebab1e1..13d412c50a1ea0 100644
--- a/tools/eslint/node_modules/es5-ext/object/index.js
+++ b/tools/eslint/node_modules/es5-ext/object/index.js
@@ -29,6 +29,7 @@ module.exports = {
 	isNumberValue:              require('./is-number-value'),
 	isObject:                   require('./is-object'),
 	isPlainObject:              require('./is-plain-object'),
+	isValue:                    require('./is-value'),
 	keyOf:                      require('./key-of'),
 	keys:                       require('./keys'),
 	map:                        require('./map'),
diff --git a/tools/eslint/node_modules/es5-ext/object/is-object.js b/tools/eslint/node_modules/es5-ext/object/is-object.js
index a86facf187a86f..974689df782dea 100644
--- a/tools/eslint/node_modules/es5-ext/object/is-object.js
+++ b/tools/eslint/node_modules/es5-ext/object/is-object.js
@@ -1,6 +1,6 @@
 'use strict';
 
-var map = { function: true, object: true };
+var map = { 'function': true, object: true };
 
 module.exports = function (x) {
 	return ((x != null) && map[typeof x]) || false;
diff --git a/tools/eslint/node_modules/es5-ext/object/is-value.js b/tools/eslint/node_modules/es5-ext/object/is-value.js
new file mode 100644
index 00000000000000..701dd7b17e9da5
--- /dev/null
+++ b/tools/eslint/node_modules/es5-ext/object/is-value.js
@@ -0,0 +1,5 @@
+'use strict';
+
+var _undefined = require('../function/noop')(); // Support ES3 engines
+
+module.exports = function (val) { return ((val !== _undefined) && (val !== null)); };
diff --git a/tools/eslint/node_modules/es5-ext/package.json b/tools/eslint/node_modules/es5-ext/package.json
index f83eaaea1fa7c9..a6541aabf649bf 100644
--- a/tools/eslint/node_modules/es5-ext/package.json
+++ b/tools/eslint/node_modules/es5-ext/package.json
@@ -2,39 +2,39 @@
   "_args": [
     [
       {
-        "raw": "es5-ext@~0.10.11",
+        "raw": "es5-ext@~0.10.14",
         "scope": null,
         "escapedName": "es5-ext",
         "name": "es5-ext",
-        "rawSpec": "~0.10.11",
-        "spec": ">=0.10.11 <0.11.0",
+        "rawSpec": "~0.10.14",
+        "spec": ">=0.10.14 <0.11.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "es5-ext@>=0.10.11 <0.11.0",
-  "_id": "es5-ext@0.10.12",
+  "_from": "es5-ext@>=0.10.14 <0.11.0",
+  "_id": "es5-ext@0.10.15",
   "_inCache": true,
   "_location": "/es5-ext",
-  "_nodeVersion": "4.4.5",
+  "_nodeVersion": "4.8.0",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/es5-ext-0.10.12.tgz_1467387765797_0.7073166444897652"
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/es5-ext-0.10.15.tgz_1490027658480_0.23058239626698196"
   },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.15.5",
+  "_npmVersion": "2.15.11",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "es5-ext@~0.10.11",
+    "raw": "es5-ext@~0.10.14",
     "scope": null,
     "escapedName": "es5-ext",
     "name": "es5-ext",
-    "rawSpec": "~0.10.11",
-    "spec": ">=0.10.11 <0.11.0",
+    "rawSpec": "~0.10.14",
+    "spec": ">=0.10.14 <0.11.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -46,10 +46,10 @@
     "/es6-weak-map",
     "/event-emitter"
   ],
-  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz",
-  "_shasum": "aa84641d4db76b62abba5e45fd805ecbab140047",
+  "_resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz",
+  "_shasum": "c330a5934c1ee21284a7c081a86e5fd937c91ea6",
   "_shrinkwrap": null,
-  "_spec": "es5-ext@~0.10.11",
+  "_spec": "es5-ext@~0.10.14",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -65,16 +65,16 @@
   },
   "description": "ECMAScript extensions and shims",
   "devDependencies": {
-    "tad": "~0.2.4",
+    "tad": "~0.2.7",
     "xlint": "~0.2.2",
     "xlint-jslint-medikoo": "~0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "aa84641d4db76b62abba5e45fd805ecbab140047",
-    "tarball": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.12.tgz"
+    "shasum": "c330a5934c1ee21284a7c081a86e5fd937c91ea6",
+    "tarball": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.15.tgz"
   },
-  "gitHead": "96fddc3a327b3a28b1653af9490e3b905f127fa8",
+  "gitHead": "51091920f5e4bec719702011c358fb4a24b2e998",
   "homepage": "https://github.com/medikoo/es5-ext#readme",
   "keywords": [
     "ecmascript",
@@ -113,5 +113,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "0.10.12"
+  "version": "0.10.15"
 }
diff --git a/tools/eslint/node_modules/es6-iterator/LICENSE b/tools/eslint/node_modules/es6-iterator/LICENSE
index 04724a3ab1b70b..5d87e598b86314 100644
--- a/tools/eslint/node_modules/es6-iterator/LICENSE
+++ b/tools/eslint/node_modules/es6-iterator/LICENSE
@@ -1,3 +1,5 @@
+The MIT License (MIT)
+
 Copyright (C) 2013-2015 Mariusz Nowak (www.medikoo.com)
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
diff --git a/tools/eslint/node_modules/es6-iterator/package.json b/tools/eslint/node_modules/es6-iterator/package.json
index 5fb6c935121d78..1ed4adcadc1156 100644
--- a/tools/eslint/node_modules/es6-iterator/package.json
+++ b/tools/eslint/node_modules/es6-iterator/package.json
@@ -2,35 +2,39 @@
   "_args": [
     [
       {
-        "raw": "es6-iterator@2",
+        "raw": "es6-iterator@~2.0.1",
         "scope": null,
         "escapedName": "es6-iterator",
         "name": "es6-iterator",
-        "rawSpec": "2",
-        "spec": ">=2.0.0 <3.0.0",
+        "rawSpec": "~2.0.1",
+        "spec": ">=2.0.1 <2.1.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "es6-iterator@>=2.0.0 <3.0.0",
-  "_id": "es6-iterator@2.0.0",
+  "_from": "es6-iterator@>=2.0.1 <2.1.0",
+  "_id": "es6-iterator@2.0.1",
   "_inCache": true,
   "_location": "/es6-iterator",
-  "_nodeVersion": "0.12.7",
+  "_nodeVersion": "7.7.3",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/es6-iterator-2.0.1.tgz_1489589746077_0.3706093495711684"
+  },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.11.3",
+  "_npmVersion": "4.1.2",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "es6-iterator@2",
+    "raw": "es6-iterator@~2.0.1",
     "scope": null,
     "escapedName": "es6-iterator",
     "name": "es6-iterator",
-    "rawSpec": "2",
-    "spec": ">=2.0.0 <3.0.0",
+    "rawSpec": "~2.0.1",
+    "spec": ">=2.0.1 <2.1.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -39,10 +43,10 @@
     "/es6-set",
     "/es6-weak-map"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz",
-  "_shasum": "bd968567d61635e33c0b80727613c9cb4b096bac",
+  "_resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz",
+  "_shasum": "8e319c9f0453bf575d374940a655920e59ca5512",
   "_shrinkwrap": null,
-  "_spec": "es6-iterator@2",
+  "_spec": "es6-iterator@~2.0.1",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -53,23 +57,23 @@
     "url": "https://github.com/medikoo/es6-iterator/issues"
   },
   "dependencies": {
-    "d": "^0.1.1",
-    "es5-ext": "^0.10.7",
-    "es6-symbol": "3"
+    "d": "1",
+    "es5-ext": "^0.10.14",
+    "es6-symbol": "^3.1"
   },
   "description": "Iterator abstraction based on ES6 specification",
   "devDependencies": {
     "event-emitter": "^0.3.4",
-    "tad": "^0.2.3",
+    "tad": "^0.2.7",
     "xlint": "^0.2.2",
-    "xlint-jslint-medikoo": "^0.1.3"
+    "xlint-jslint-medikoo": "^0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "bd968567d61635e33c0b80727613c9cb4b096bac",
-    "tarball": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.0.tgz"
+    "shasum": "8e319c9f0453bf575d374940a655920e59ca5512",
+    "tarball": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.1.tgz"
   },
-  "gitHead": "4d9445834e87780ab373b14d6791e860899e2d31",
+  "gitHead": "27ee4f6bd202d0dc53ee578edb081489ad12dfc3",
   "homepage": "https://github.com/medikoo/es6-iterator#readme",
   "keywords": [
     "iterator",
@@ -98,5 +102,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "2.0.0"
+  "version": "2.0.1"
 }
diff --git a/tools/eslint/node_modules/es6-map/README.md b/tools/eslint/node_modules/es6-map/README.md
index 387eb1a1458a98..34a4993f2b77a3 100644
--- a/tools/eslint/node_modules/es6-map/README.md
+++ b/tools/eslint/node_modules/es6-map/README.md
@@ -1,9 +1,13 @@
 # es6-map
 ## Map collection as specified in ECMAScript6
 
+__Warning:
+v0.1 version does not ensure O(1) algorithm complexity (but O(n)). This shortcoming will be addressed in v1.0__
+
+
 ### Usage
 
-It’s safest to use *es6-map* as a [ponyfill](http://kikobeats.com/polyfill-ponyfill-and-prollyfill/) – a polyfill which doesn’t touch global objects:
+It’s safest to use *es6-map* as a [ponyfill](https://ponyfill.com) – a polyfill which doesn’t touch global objects:
 
 ```javascript
 var Map = require('es6-map');
@@ -24,7 +28,7 @@ var Map = require('es6-map/polyfill');
 ### Installation
 
 	$ npm install es6-map
-	
+
 To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
 
 #### API
diff --git a/tools/eslint/node_modules/es6-map/package.json b/tools/eslint/node_modules/es6-map/package.json
index 4f5d3f45c9d192..de9173e4b55412 100644
--- a/tools/eslint/node_modules/es6-map/package.json
+++ b/tools/eslint/node_modules/es6-map/package.json
@@ -14,19 +14,19 @@
     ]
   ],
   "_from": "es6-map@>=0.1.3 <0.2.0",
-  "_id": "es6-map@0.1.4",
+  "_id": "es6-map@0.1.5",
   "_inCache": true,
   "_location": "/es6-map",
-  "_nodeVersion": "4.4.5",
+  "_nodeVersion": "4.8.0",
   "_npmOperationalInternal": {
-    "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/es6-map-0.1.4.tgz_1464964802447_0.8775503970682621"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/es6-map-0.1.5.tgz_1489767956347_0.803560264641419"
   },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.15.5",
+  "_npmVersion": "2.15.11",
   "_phantomChildren": {},
   "_requested": {
     "raw": "es6-map@^0.1.3",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/escope"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz",
-  "_shasum": "a34b147be224773a4d7da8072794cefa3632b897",
+  "_resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz",
+  "_shasum": "9136e0503dcc06a301690f0bb14ff4e364e949f0",
   "_shrinkwrap": null,
   "_spec": "es6-map@^0.1.3",
   "_where": "/Users/trott/io.js/tools/node_modules/escope",
@@ -54,25 +54,25 @@
     "url": "https://github.com/medikoo/es6-map/issues"
   },
   "dependencies": {
-    "d": "~0.1.1",
-    "es5-ext": "~0.10.11",
-    "es6-iterator": "2",
-    "es6-set": "~0.1.3",
-    "es6-symbol": "~3.1.0",
-    "event-emitter": "~0.3.4"
+    "d": "1",
+    "es5-ext": "~0.10.14",
+    "es6-iterator": "~2.0.1",
+    "es6-set": "~0.1.5",
+    "es6-symbol": "~3.1.1",
+    "event-emitter": "~0.3.5"
   },
   "description": "ECMAScript6 Map polyfill",
   "devDependencies": {
-    "tad": "~0.2.4",
+    "tad": "~0.2.7",
     "xlint": "~0.2.2",
     "xlint-jslint-medikoo": "~0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "a34b147be224773a4d7da8072794cefa3632b897",
-    "tarball": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.4.tgz"
+    "shasum": "9136e0503dcc06a301690f0bb14ff4e364e949f0",
+    "tarball": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz"
   },
-  "gitHead": "8bac54367a95720d24bb517fba6c7da7f29cc806",
+  "gitHead": "901fee71166dd5bc4b515b619521ae403a95472e",
   "homepage": "https://github.com/medikoo/es6-map#readme",
   "keywords": [
     "collection",
@@ -105,5 +105,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "0.1.4"
+  "version": "0.1.5"
 }
diff --git a/tools/eslint/node_modules/es6-set/README.md b/tools/eslint/node_modules/es6-set/README.md
index 95e9d35861533d..f70b66bd979ee5 100644
--- a/tools/eslint/node_modules/es6-set/README.md
+++ b/tools/eslint/node_modules/es6-set/README.md
@@ -1,6 +1,9 @@
 # es6-set
 ## Set collection as specified in ECMAScript6
 
+__Warning:
+v0.1 version does not ensure O(1) algorithm complexity (but O(n)). This shortcoming will be addressed in v1.0__
+
 ### Usage
 
 If you want to make sure your environment implements `Set`, do:
diff --git a/tools/eslint/node_modules/es6-set/package.json b/tools/eslint/node_modules/es6-set/package.json
index 53d008968174ee..b5c373bc15cf83 100644
--- a/tools/eslint/node_modules/es6-set/package.json
+++ b/tools/eslint/node_modules/es6-set/package.json
@@ -2,44 +2,48 @@
   "_args": [
     [
       {
-        "raw": "es6-set@~0.1.3",
+        "raw": "es6-set@~0.1.5",
         "scope": null,
         "escapedName": "es6-set",
         "name": "es6-set",
-        "rawSpec": "~0.1.3",
-        "spec": ">=0.1.3 <0.2.0",
+        "rawSpec": "~0.1.5",
+        "spec": ">=0.1.5 <0.2.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "es6-set@>=0.1.3 <0.2.0",
-  "_id": "es6-set@0.1.4",
+  "_from": "es6-set@>=0.1.5 <0.2.0",
+  "_id": "es6-set@0.1.5",
   "_inCache": true,
   "_location": "/es6-set",
-  "_nodeVersion": "4.2.4",
+  "_nodeVersion": "4.8.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/es6-set-0.1.5.tgz_1489663202314_0.31579156569205225"
+  },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.14.12",
+  "_npmVersion": "2.15.11",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "es6-set@~0.1.3",
+    "raw": "es6-set@~0.1.5",
     "scope": null,
     "escapedName": "es6-set",
     "name": "es6-set",
-    "rawSpec": "~0.1.3",
-    "spec": ">=0.1.3 <0.2.0",
+    "rawSpec": "~0.1.5",
+    "spec": ">=0.1.5 <0.2.0",
     "type": "range"
   },
   "_requiredBy": [
     "/es6-map"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz",
-  "_shasum": "9516b6761c2964b92ff479456233a247dc707ce8",
+  "_resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz",
+  "_shasum": "d2b3ec5d4d800ced818db538d28974db0a73ccb1",
   "_shrinkwrap": null,
-  "_spec": "es6-set@~0.1.3",
+  "_spec": "es6-set@~0.1.5",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -50,24 +54,24 @@
     "url": "https://github.com/medikoo/es6-set/issues"
   },
   "dependencies": {
-    "d": "~0.1.1",
-    "es5-ext": "~0.10.11",
-    "es6-iterator": "2",
-    "es6-symbol": "3",
-    "event-emitter": "~0.3.4"
+    "d": "1",
+    "es5-ext": "~0.10.14",
+    "es6-iterator": "~2.0.1",
+    "es6-symbol": "3.1.1",
+    "event-emitter": "~0.3.5"
   },
   "description": "ECMAScript6 Set polyfill",
   "devDependencies": {
-    "tad": "~0.2.4",
+    "tad": "~0.2.7",
     "xlint": "~0.2.2",
     "xlint-jslint-medikoo": "~0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "9516b6761c2964b92ff479456233a247dc707ce8",
-    "tarball": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.4.tgz"
+    "shasum": "d2b3ec5d4d800ced818db538d28974db0a73ccb1",
+    "tarball": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz"
   },
-  "gitHead": "89717f1b294382ca28e9070e644f768ff240dc71",
+  "gitHead": "e1f3198609b6e0b8c62f5c5f6a8913a7f488f258",
   "homepage": "https://github.com/medikoo/es6-set#readme",
   "keywords": [
     "set",
@@ -96,5 +100,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "0.1.4"
+  "version": "0.1.5"
 }
diff --git a/tools/eslint/node_modules/es6-symbol/README.md b/tools/eslint/node_modules/es6-symbol/README.md
index 0fa8978450cb4f..fea99062ec69bd 100644
--- a/tools/eslint/node_modules/es6-symbol/README.md
+++ b/tools/eslint/node_modules/es6-symbol/README.md
@@ -12,7 +12,7 @@ Underneath it uses real string property names which can easily be retrieved, how
 
 ### Usage
 
-It’s safest to use *es6-symbol* as a [ponyfill](http://kikobeats.com/polyfill-ponyfill-and-prollyfill/) – a polyfill which doesn’t touch global objects:
+If you'd like to use native version when it exists and fallback to [ponyfill](https://ponyfill.com) if it doesn't, use *es6-symbol* as following:
 
 ```javascript
 var Symbol = require('es6-symbol');
diff --git a/tools/eslint/node_modules/es6-symbol/is-native-implemented.js b/tools/eslint/node_modules/es6-symbol/is-native-implemented.js
index 5f073a19cab7c8..8676d0e8df30fa 100644
--- a/tools/eslint/node_modules/es6-symbol/is-native-implemented.js
+++ b/tools/eslint/node_modules/es6-symbol/is-native-implemented.js
@@ -2,7 +2,4 @@
 
 'use strict';
 
-module.exports = (function () {
-	if (typeof Symbol !== 'function') return false;
-	return (typeof Symbol() === 'symbol');
-}());
+module.exports = typeof Symbol === 'function' && typeof Symbol() === 'symbol';
diff --git a/tools/eslint/node_modules/es6-symbol/package.json b/tools/eslint/node_modules/es6-symbol/package.json
index fa5b683860cd70..2a7ea55797b82f 100644
--- a/tools/eslint/node_modules/es6-symbol/package.json
+++ b/tools/eslint/node_modules/es6-symbol/package.json
@@ -2,39 +2,39 @@
   "_args": [
     [
       {
-        "raw": "es6-symbol@~3.1.0",
+        "raw": "es6-symbol@~3.1.1",
         "scope": null,
         "escapedName": "es6-symbol",
         "name": "es6-symbol",
-        "rawSpec": "~3.1.0",
-        "spec": ">=3.1.0 <3.2.0",
+        "rawSpec": "~3.1.1",
+        "spec": ">=3.1.1 <3.2.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "es6-symbol@>=3.1.0 <3.2.0",
-  "_id": "es6-symbol@3.1.0",
+  "_from": "es6-symbol@>=3.1.1 <3.2.0",
+  "_id": "es6-symbol@3.1.1",
   "_inCache": true,
   "_location": "/es6-symbol",
-  "_nodeVersion": "4.4.5",
+  "_nodeVersion": "7.7.3",
   "_npmOperationalInternal": {
     "host": "packages-12-west.internal.npmjs.com",
-    "tmp": "tmp/es6-symbol-3.1.0.tgz_1464960261964_0.3645231726113707"
+    "tmp": "tmp/es6-symbol-3.1.1.tgz_1489590359389_0.7073800666257739"
   },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.15.5",
+  "_npmVersion": "4.1.2",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "es6-symbol@~3.1.0",
+    "raw": "es6-symbol@~3.1.1",
     "scope": null,
     "escapedName": "es6-symbol",
     "name": "es6-symbol",
-    "rawSpec": "~3.1.0",
-    "spec": ">=3.1.0 <3.2.0",
+    "rawSpec": "~3.1.1",
+    "spec": ">=3.1.1 <3.2.0",
     "type": "range"
   },
   "_requiredBy": [
@@ -44,10 +44,10 @@
     "/es6-set",
     "/es6-weak-map"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz",
-  "_shasum": "94481c655e7a7cad82eba832d97d5433496d7ffa",
+  "_resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz",
+  "_shasum": "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77",
   "_shrinkwrap": null,
-  "_spec": "es6-symbol@~3.1.0",
+  "_spec": "es6-symbol@~3.1.1",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -58,21 +58,21 @@
     "url": "https://github.com/medikoo/es6-symbol/issues"
   },
   "dependencies": {
-    "d": "~0.1.1",
-    "es5-ext": "~0.10.11"
+    "d": "1",
+    "es5-ext": "~0.10.14"
   },
   "description": "ECMAScript 6 Symbol polyfill",
   "devDependencies": {
-    "tad": "~0.2.4",
+    "tad": "~0.2.7",
     "xlint": "~0.2.2",
     "xlint-jslint-medikoo": "~0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "94481c655e7a7cad82eba832d97d5433496d7ffa",
-    "tarball": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.0.tgz"
+    "shasum": "bf00ef4fdab6ba1b46ecb7b629b4c7ed5715cc77",
+    "tarball": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz"
   },
-  "gitHead": "f84175053e9cad6a1230f3b7cc13e078c3fcc12f",
+  "gitHead": "0b28a2d969d7b77532bc32b66c34214acf445771",
   "homepage": "https://github.com/medikoo/es6-symbol#readme",
   "keywords": [
     "symbol",
@@ -103,5 +103,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "3.1.0"
+  "version": "3.1.1"
 }
diff --git a/tools/eslint/node_modules/es6-symbol/polyfill.js b/tools/eslint/node_modules/es6-symbol/polyfill.js
index 48832a5f36f59e..dca879a3e28d54 100644
--- a/tools/eslint/node_modules/es6-symbol/polyfill.js
+++ b/tools/eslint/node_modules/es6-symbol/polyfill.js
@@ -1,4 +1,4 @@
-// ES2015 Symbol polyfill for environments that do not support it (or partially support it)
+// ES2015 Symbol polyfill for environments that do not (or partially) support it
 
 'use strict';
 
@@ -43,7 +43,7 @@ var generateName = (function () {
 // Internal constructor (not one exposed) for creating Symbol instances.
 // This one is used to ensure that `someSymbol instanceof Symbol` always return false
 HiddenSymbol = function Symbol(description) {
-	if (this instanceof HiddenSymbol) throw new TypeError('TypeError: Symbol is not a constructor');
+	if (this instanceof HiddenSymbol) throw new TypeError('Symbol is not a constructor');
 	return SymbolPolyfill(description);
 };
 
@@ -51,7 +51,7 @@ HiddenSymbol = function Symbol(description) {
 // (returns instances of HiddenSymbol)
 module.exports = SymbolPolyfill = function Symbol(description) {
 	var symbol;
-	if (this instanceof Symbol) throw new TypeError('TypeError: Symbol is not a constructor');
+	if (this instanceof Symbol) throw new TypeError('Symbol is not a constructor');
 	if (isNativeSafe) return NativeSymbol(description);
 	symbol = create(HiddenSymbol.prototype);
 	description = (description === undefined ? '' : String(description));
@@ -71,8 +71,8 @@ defineProperties(SymbolPolyfill, {
 		for (key in globalSymbols) if (globalSymbols[key] === s) return key;
 	}),
 
-	// If there's native implementation of given symbol, let's fallback to it
-	// to ensure proper interoperability with other native functions e.g. Array.from
+	// To ensure proper interoperability with other native functions (e.g. Array.from)
+	// fallback to eventual native implementation of given symbol
 	hasInstance: d('', (NativeSymbol && NativeSymbol.hasInstance) || SymbolPolyfill('hasInstance')),
 	isConcatSpreadable: d('', (NativeSymbol && NativeSymbol.isConcatSpreadable) ||
 		SymbolPolyfill('isConcatSpreadable')),
diff --git a/tools/eslint/node_modules/es6-weak-map/package.json b/tools/eslint/node_modules/es6-weak-map/package.json
index d31366401a2104..4265b8549d5f02 100644
--- a/tools/eslint/node_modules/es6-weak-map/package.json
+++ b/tools/eslint/node_modules/es6-weak-map/package.json
@@ -14,15 +14,19 @@
     ]
   ],
   "_from": "es6-weak-map@>=2.0.1 <3.0.0",
-  "_id": "es6-weak-map@2.0.1",
+  "_id": "es6-weak-map@2.0.2",
   "_inCache": true,
   "_location": "/es6-weak-map",
-  "_nodeVersion": "0.12.7",
+  "_nodeVersion": "7.7.3",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/es6-weak-map-2.0.2.tgz_1489593299009_0.35603313939645886"
+  },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.11.3",
+  "_npmVersion": "4.1.2",
   "_phantomChildren": {},
   "_requested": {
     "raw": "es6-weak-map@^2.0.1",
@@ -36,8 +40,8 @@
   "_requiredBy": [
     "/escope"
   ],
-  "_resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz",
-  "_shasum": "0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81",
+  "_resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz",
+  "_shasum": "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f",
   "_shrinkwrap": null,
   "_spec": "es6-weak-map@^2.0.1",
   "_where": "/Users/trott/io.js/tools/node_modules/escope",
@@ -50,23 +54,23 @@
     "url": "https://github.com/medikoo/es6-weak-map/issues"
   },
   "dependencies": {
-    "d": "^0.1.1",
-    "es5-ext": "^0.10.8",
-    "es6-iterator": "2",
-    "es6-symbol": "3"
+    "d": "1",
+    "es5-ext": "^0.10.14",
+    "es6-iterator": "^2.0.1",
+    "es6-symbol": "^3.1.1"
   },
   "description": "ECMAScript6 WeakMap polyfill",
   "devDependencies": {
-    "tad": "^0.2.3",
+    "tad": "^0.2.7",
     "xlint": "^0.2.2",
     "xlint-jslint-medikoo": "^0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "0d2bbd8827eb5fb4ba8f97fbfea50d43db21ea81",
-    "tarball": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.1.tgz"
+    "shasum": "5e3ab32251ffd1538a1f8e5ffa1357772f92d96f",
+    "tarball": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.2.tgz"
   },
-  "gitHead": "b8b62d44e3b9f8134095c8fb6a5697e371b36867",
+  "gitHead": "14c8b5703569d9c4f8788812abfea2ecab8433a6",
   "homepage": "https://github.com/medikoo/es6-weak-map#readme",
   "keywords": [
     "map",
@@ -98,5 +102,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "2.0.1"
+  "version": "2.0.2"
 }
diff --git a/tools/eslint/node_modules/espree/LICENSE b/tools/eslint/node_modules/espree/LICENSE
index b5cef0004d5b81..321d9607404d85 100644
--- a/tools/eslint/node_modules/espree/LICENSE
+++ b/tools/eslint/node_modules/espree/LICENSE
@@ -1,5 +1,5 @@
 Espree
-Copyright jQuery Foundation and other contributors, https://jquery.org/
+Copyright JS Foundation and other contributors, https://js.foundation
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
diff --git a/tools/eslint/node_modules/espree/README.md b/tools/eslint/node_modules/espree/README.md
index 97e7be423ff6bc..4e5b65cd080b8f 100644
--- a/tools/eslint/node_modules/espree/README.md
+++ b/tools/eslint/node_modules/espree/README.md
@@ -1,3 +1,8 @@
+[![npm version](https://img.shields.io/npm/v/espree.svg)](https://www.npmjs.com/package/espree)
+[![Build Status](https://travis-ci.org/eslint/espree.svg?branch=master)](https://travis-ci.org/eslint/espree)
+[![npm downloads](https://img.shields.io/npm/dm/espree.svg)](https://www.npmjs.com/package/espree)
+[![Bountysource](https://www.bountysource.com/badge/tracker?tracker_id=9348450)](https://www.bountysource.com/trackers/9348450-eslint?utm_source=9348450&utm_medium=shield&utm_campaign=TRACKER_BADGE)
+
 # Espree
 
 Espree started out as a fork of [Esprima](http://esprima.org) v1.2.2, the last stable published released of Esprima before work on ECMAScript 6 began. Espree is now built on top of [Acorn](https://github.com/ternjs/acorn), which has a modular architecture that allows extension of core functionality. The goal of Espree is to produce output that is similar to Esprima with a similar API so that it can be used in place of Esprima.
@@ -41,7 +46,8 @@ var ast = espree.parse(code, {
     // create a top-level tokens array containing all tokens
     tokens: true,
 
-    // specify the language version (3, 5, 6, 7, or 8, default is 5)
+    // set to 3, 5 (default), 6, 7, or 8 to specify the version of ECMAScript syntax you want to use.
+    // You can also set to 2015 (same as 6), 2016 (same as 7), or 2017 (same as 8) to use the year-based naming.
     ecmaVersion: 5,
 
     // specify which type of script you're parsing (script or module, default is script)
diff --git a/tools/eslint/node_modules/espree/espree.js b/tools/eslint/node_modules/espree/espree.js
index d6e65c8d53169b..87074c8dd7e746 100644
--- a/tools/eslint/node_modules/espree/espree.js
+++ b/tools/eslint/node_modules/espree/espree.js
@@ -66,7 +66,7 @@ var astNodeTypes = require("./lib/ast-node-types"),
 
 
 var acorn = acornJSX(rawAcorn);
-
+var DEFAULT_ECMA_VERSION = 5;
 var lookahead,
     extra,
     lastToken;
@@ -87,7 +87,7 @@ function resetExtra() {
         errors: [],
         strict: false,
         ecmaFeatures: {},
-        ecmaVersion: 5,
+        ecmaVersion: DEFAULT_ECMA_VERSION,
         isModule: false
     };
 }
@@ -100,6 +100,37 @@ var tt = acorn.tokTypes,
 // custom type for JSX attribute values
 tt.jsxAttrValueToken = {};
 
+/**
+ * Normalize ECMAScript version from the initial config
+ * @param  {number} ecmaVersion ECMAScript version from the initial config
+ * @returns {number} normalized ECMAScript version
+ */
+function normalizeEcmaVersion(ecmaVersion) {
+    if (typeof ecmaVersion === "number") {
+        var version = ecmaVersion;
+
+        // Calculate ECMAScript edition number from official year version starting with
+        // ES2015, which corresponds with ES6 (or a difference of 2009).
+        if (version >= 2015) {
+            version -= 2009;
+        }
+
+        switch (version) {
+            case 3:
+            case 5:
+            case 6:
+            case 7:
+            case 8:
+                return version;
+
+            default:
+                throw new Error("Invalid ecmaVersion.");
+        }
+    } else {
+        return DEFAULT_ECMA_VERSION;
+    }
+}
+
 /**
  * Determines if a node is valid given the set of ecmaFeatures.
  * @param {ASTNode} node The node to check.
@@ -163,13 +194,6 @@ function esprimaFinishNode(result) {
         }
     }
 
-    // Acorn currently uses expressions instead of declarations in default exports
-    if (result.type === "ExportDefaultDeclaration") {
-        if (/^(Class|Function)Expression$/.test(result.declaration.type)) {
-            result.declaration.type = result.declaration.type.replace("Expression", "Declaration");
-        }
-    }
-
     // Acorn uses undefined instead of null, which affects serialization
     if (result.type === "Literal" && result.value === undefined) {
         result.value = null;
@@ -322,6 +346,7 @@ acorn.plugins.espree = function(instance) {
     instance.parseObj = function(isPattern, refShorthandDefaultPos) {
         var node = this.startNode(),
             first = true,
+            hasRestProperty = false,
             propHash = {};
         node.properties = [];
         this.next();
@@ -331,6 +356,9 @@ acorn.plugins.espree = function(instance) {
                 this.expect(tt.comma);
 
                 if (this.afterTrailingComma(tt.braceR)) {
+                    if (hasRestProperty) {
+                        this.raise(node.properties[node.properties.length - 1].end, "Unexpected trailing comma after rest property");
+                    }
                     break;
                 }
 
@@ -347,6 +375,7 @@ acorn.plugins.espree = function(instance) {
             if (extra.ecmaFeatures.experimentalObjectRestSpread && this.type === tt.ellipsis) {
                 if (isPattern) {
                     prop = this.parseObjectRest();
+                    hasRestProperty = true;
                 } else {
                     prop = this.parseSpread();
                     prop.type = "ExperimentalSpreadProperty";
@@ -489,7 +518,7 @@ function tokenize(code, options) {
     options = options || {};
 
     var acornOptions = {
-        ecmaVersion: 5,
+        ecmaVersion: DEFAULT_ECMA_VERSION,
         plugins: {
             espree: true
         }
@@ -518,21 +547,7 @@ function tokenize(code, options) {
 
     extra.tolerant = typeof options.tolerant === "boolean" && options.tolerant;
 
-    if (typeof options.ecmaVersion === "number") {
-        switch (options.ecmaVersion) {
-            case 3:
-            case 5:
-            case 6:
-            case 7:
-            case 8:
-                acornOptions.ecmaVersion = options.ecmaVersion;
-                extra.ecmaVersion = options.ecmaVersion;
-                break;
-
-            default:
-                throw new Error("ecmaVersion must be 3, 5, 6, 7, or 8.");
-        }
-    }
+    acornOptions.ecmaVersion = extra.ecmaVersion = normalizeEcmaVersion(options.ecmaVersion);
 
     // apply parsing flags
     if (options.ecmaFeatures && typeof options.ecmaFeatures === "object") {
@@ -615,7 +630,7 @@ function parse(code, options) {
         translator,
         impliedStrict,
         acornOptions = {
-            ecmaVersion: 5,
+            ecmaVersion: DEFAULT_ECMA_VERSION,
             plugins: {
                 espree: true
             }
@@ -656,21 +671,7 @@ function parse(code, options) {
             commentAttachment.reset();
         }
 
-        if (typeof options.ecmaVersion === "number") {
-            switch (options.ecmaVersion) {
-                case 3:
-                case 5:
-                case 6:
-                case 7:
-                case 8:
-                    acornOptions.ecmaVersion = options.ecmaVersion;
-                    extra.ecmaVersion = options.ecmaVersion;
-                    break;
-
-                default:
-                    throw new Error("ecmaVersion must be 3, 5, 6, 7, or 8.");
-            }
-        }
+        acornOptions.ecmaVersion = extra.ecmaVersion = normalizeEcmaVersion(options.ecmaVersion);
 
         if (options.sourceType === "module") {
             extra.isModule = true;
diff --git a/tools/eslint/node_modules/espree/package.json b/tools/eslint/node_modules/espree/package.json
index 0c0f1f52d2d96d..a97bcc29fd04f1 100644
--- a/tools/eslint/node_modules/espree/package.json
+++ b/tools/eslint/node_modules/espree/package.json
@@ -2,25 +2,25 @@
   "_args": [
     [
       {
-        "raw": "espree@^3.3.1",
+        "raw": "espree@^3.4.0",
         "scope": null,
         "escapedName": "espree",
         "name": "espree",
-        "rawSpec": "^3.3.1",
-        "spec": ">=3.3.1 <4.0.0",
+        "rawSpec": "^3.4.0",
+        "spec": ">=3.4.0 <4.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/eslint"
     ]
   ],
-  "_from": "espree@>=3.3.1 <4.0.0",
-  "_id": "espree@3.3.2",
+  "_from": "espree@>=3.4.0 <4.0.0",
+  "_id": "espree@3.4.1",
   "_inCache": true,
   "_location": "/espree",
   "_nodeVersion": "4.4.7",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/espree-3.3.2.tgz_1475184001667_0.6324210215825588"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/espree-3.4.1.tgz_1490989906067_0.2606241556350142"
   },
   "_npmUser": {
     "name": "eslint",
@@ -29,21 +29,21 @@
   "_npmVersion": "2.15.8",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "espree@^3.3.1",
+    "raw": "espree@^3.4.0",
     "scope": null,
     "escapedName": "espree",
     "name": "espree",
-    "rawSpec": "^3.3.1",
-    "spec": ">=3.3.1 <4.0.0",
+    "rawSpec": "^3.4.0",
+    "spec": ">=3.4.0 <4.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/eslint"
   ],
-  "_resolved": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz",
-  "_shasum": "dbf3fadeb4ecb4d4778303e50103b3d36c88b89c",
+  "_resolved": "https://registry.npmjs.org/espree/-/espree-3.4.1.tgz",
+  "_shasum": "28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2",
   "_shrinkwrap": null,
-  "_spec": "espree@^3.3.1",
+  "_spec": "espree@^3.4.0",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
   "author": {
     "name": "Nicholas C. Zakas",
@@ -53,7 +53,7 @@
     "url": "http://github.com/eslint/espree.git"
   },
   "dependencies": {
-    "acorn": "^4.0.1",
+    "acorn": "^5.0.1",
     "acorn-jsx": "^3.0.0"
   },
   "description": "An Esprima-compatible JavaScript parser built on Acorn",
@@ -76,8 +76,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "dbf3fadeb4ecb4d4778303e50103b3d36c88b89c",
-    "tarball": "https://registry.npmjs.org/espree/-/espree-3.3.2.tgz"
+    "shasum": "28a83ab4aaed71ed8fe0f5efe61b76a05c13c4d2",
+    "tarball": "https://registry.npmjs.org/espree/-/espree-3.4.1.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -86,7 +86,7 @@
     "lib",
     "espree.js"
   ],
-  "gitHead": "c8ca13a205ecd3572045872cd0471e174a060281",
+  "gitHead": "d5d1808d2fb841a971ded7c3c4e611b4945b3d70",
   "homepage": "https://github.com/eslint/espree",
   "keywords": [
     "ast",
@@ -126,5 +126,5 @@
     "release": "eslint-release",
     "test": "npm run-script lint && node Makefile.js test"
   },
-  "version": "3.3.2"
+  "version": "3.4.1"
 }
diff --git a/tools/eslint/node_modules/esprima/LICENSE.BSD b/tools/eslint/node_modules/esprima/LICENSE.BSD
index 17557eceb90690..7a55160f562ddb 100644
--- a/tools/eslint/node_modules/esprima/LICENSE.BSD
+++ b/tools/eslint/node_modules/esprima/LICENSE.BSD
@@ -1,4 +1,4 @@
-Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+Copyright JS Foundation and other contributors, https://js.foundation/
 
 Redistribution and use in source and binary forms, with or without
 modification, are permitted provided that the following conditions are met:
diff --git a/tools/eslint/node_modules/esprima/README.md b/tools/eslint/node_modules/esprima/README.md
index 749454f44995ed..872ab305f397d1 100644
--- a/tools/eslint/node_modules/esprima/README.md
+++ b/tools/eslint/node_modules/esprima/README.md
@@ -12,16 +12,33 @@ with the help of [many contributors](https://github.com/jquery/esprima/contribut
 
 ### Features
 
-- Full support for ECMAScript 6 ([ECMA-262](http://www.ecma-international.org/publications/standards/Ecma-262.htm))
-- Sensible [syntax tree format](https://github.com/estree/estree/blob/master/spec.md) as standardized by [ESTree project](https://github.com/estree/estree)
+- Full support for ECMAScript 2016 ([ECMA-262 7th Edition](http://www.ecma-international.org/publications/standards/Ecma-262.htm))
+- Sensible [syntax tree format](https://github.com/estree/estree/blob/master/es5.md) as standardized by [ESTree project](https://github.com/estree/estree)
+- Experimental support for [JSX](https://facebook.github.io/jsx/), a syntax extension for [React](https://facebook.github.io/react/)
 - Optional tracking of syntax node location (index-based and line-column)
-- [Heavily tested](http://esprima.org/test/ci.html) (~1250 [unit tests](https://github.com/jquery/esprima/tree/master/test/fixtures) with [full code coverage](https://codecov.io/github/jquery/esprima))
+- [Heavily tested](http://esprima.org/test/ci.html) (~1300 [unit tests](https://github.com/jquery/esprima/tree/master/test/fixtures) with [full code coverage](https://codecov.io/github/jquery/esprima))
 
-Esprima serves as a **building block** for some JavaScript
-language tools, from [code instrumentation](http://esprima.org/demo/functiontrace.html)
-to [editor autocompletion](http://esprima.org/demo/autocomplete.html).
+### API
 
-Esprima runs on many popular web browsers, as well as other ECMAScript platforms such as
-[Rhino](http://www.mozilla.org/rhino), [Nashorn](http://openjdk.java.net/projects/nashorn/), and [Node.js](https://npmjs.org/package/esprima).
+Esprima can be used to perform [lexical analysis](https://en.wikipedia.org/wiki/Lexical_analysis) (tokenization) or [syntactic analysis](https://en.wikipedia.org/wiki/Parsing) (parsing) of a JavaScript program.
 
-For more information, check the web site [esprima.org](http://esprima.org).
+A simple example on Node.js REPL:
+
+```javascript
+> var esprima = require('esprima');
+> var program = 'const answer = 42';
+
+> esprima.tokenize(program);
+[ { type: 'Keyword', value: 'const' },
+  { type: 'Identifier', value: 'answer' },
+  { type: 'Punctuator', value: '=' },
+  { type: 'Numeric', value: '42' } ]
+
+> esprima.parse(program);
+{ type: 'Program',
+  body:
+   [ { type: 'VariableDeclaration',
+       declarations: [Object],
+       kind: 'const' } ],
+  sourceType: 'script' }
+```
diff --git a/tools/eslint/node_modules/esprima/bin/esparse.js b/tools/eslint/node_modules/esprima/bin/esparse.js
index 98bdbf48f2629e..45d05fbb732673 100755
--- a/tools/eslint/node_modules/esprima/bin/esparse.js
+++ b/tools/eslint/node_modules/esprima/bin/esparse.js
@@ -1,6 +1,6 @@
 #!/usr/bin/env node
 /*
-  Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+  Copyright JS Foundation and other contributors, https://js.foundation/
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
@@ -25,11 +25,15 @@
 
 /*jslint sloppy:true node:true rhino:true */
 
-var fs, esprima, fname, content, options, syntax;
+var fs, esprima, fname, forceFile, content, options, syntax;
 
 if (typeof require === 'function') {
     fs = require('fs');
-    esprima = require('esprima');
+    try {
+        esprima = require('esprima');
+    } catch (e) {
+        esprima = require('../');
+    }
 } else if (typeof load === 'function') {
     try {
         load('esprima.js');
@@ -49,7 +53,7 @@ if (typeof console === 'undefined' && typeof process === 'undefined') {
 
 function showUsage() {
     console.log('Usage:');
-    console.log('   esparse [options] file.js');
+    console.log('   esparse [options] [file.js]');
     console.log();
     console.log('Available options:');
     console.log();
@@ -64,15 +68,18 @@ function showUsage() {
     process.exit(1);
 }
 
-if (process.argv.length <= 2) {
-    showUsage();
-}
-
 options = {};
 
 process.argv.splice(2).forEach(function (entry) {
 
-    if (entry === '-h' || entry === '--help') {
+    if (forceFile || entry === '-' || entry.slice(0, 1) !== '-') {
+        if (typeof fname === 'string') {
+            console.log('Error: more than one input file.');
+            process.exit(1);
+        } else {
+            fname = entry;
+        }
+    } else if (entry === '-h' || entry === '--help') {
         showUsage();
     } else if (entry === '-v' || entry === '--version') {
         console.log('ECMAScript Parser (using Esprima version', esprima.version, ')');
@@ -90,22 +97,14 @@ process.argv.splice(2).forEach(function (entry) {
         options.tokens = true;
     } else if (entry === '--tolerant') {
         options.tolerant = true;
-    } else if (entry.slice(0, 2) === '--') {
+    } else if (entry === '--') {
+        forceFile = true;
+    } else {
         console.log('Error: unknown option ' + entry + '.');
         process.exit(1);
-    } else if (typeof fname === 'string') {
-        console.log('Error: more than one input file.');
-        process.exit(1);
-    } else {
-        fname = entry;
     }
 });
 
-if (typeof fname !== 'string') {
-    console.log('Error: no input file.');
-    process.exit(1);
-}
-
 // Special handling for regular expression literal since we need to
 // convert it to a string literal, otherwise it will be decoded
 // as object "{}" and the regular expression would be lost.
@@ -116,10 +115,24 @@ function adjustRegexLiteral(key, value) {
     return value;
 }
 
-try {
-    content = fs.readFileSync(fname, 'utf-8');
+function run(content) {
     syntax = esprima.parse(content, options);
     console.log(JSON.stringify(syntax, adjustRegexLiteral, 4));
+}
+
+try {
+    if (fname && (fname !== '-' || forceFile)) {
+        run(fs.readFileSync(fname, 'utf-8'));
+    } else {
+        var content = '';
+        process.stdin.resume();
+        process.stdin.on('data', function(chunk) {
+            content += chunk;
+        });
+        process.stdin.on('end', function() {
+            run(content);
+        });
+    }
 } catch (e) {
     console.log('Error: ' + e.message);
     process.exit(1);
diff --git a/tools/eslint/node_modules/esprima/bin/esvalidate.js b/tools/eslint/node_modules/esprima/bin/esvalidate.js
index f522dec290b707..4faf760e20f852 100755
--- a/tools/eslint/node_modules/esprima/bin/esvalidate.js
+++ b/tools/eslint/node_modules/esprima/bin/esvalidate.js
@@ -1,6 +1,6 @@
 #!/usr/bin/env node
 /*
-  Copyright (c) jQuery Foundation, Inc. and Contributors, All Rights Reserved.
+  Copyright JS Foundation and other contributors, https://js.foundation/
 
   Redistribution and use in source and binary forms, with or without
   modification, are permitted provided that the following conditions are met:
@@ -26,7 +26,7 @@
 /*jslint sloppy:true plusplus:true node:true rhino:true */
 /*global phantom:true */
 
-var fs, system, esprima, options, fnames, count;
+var fs, system, esprima, options, fnames, forceFile, count;
 
 if (typeof esprima === 'undefined') {
     // PhantomJS can only require() relative files
@@ -36,7 +36,11 @@ if (typeof esprima === 'undefined') {
         esprima = require('./esprima');
     } else if (typeof require === 'function') {
         fs = require('fs');
-        esprima = require('esprima');
+        try {
+            esprima = require('esprima');
+        } catch (e) {
+            esprima = require('../');
+        }
     } else if (typeof load === 'function') {
         try {
             load('esprima.js');
@@ -51,7 +55,10 @@ if (typeof phantom === 'object') {
     fs.readFileSync = fs.read;
     process = {
         argv: [].slice.call(system.args),
-        exit: phantom.exit
+        exit: phantom.exit,
+        on: function (evt, callback) {
+            callback();
+        }
     };
     process.argv.unshift('phantomjs');
 }
@@ -60,14 +67,20 @@ if (typeof phantom === 'object') {
 if (typeof console === 'undefined' && typeof process === 'undefined') {
     console = { log: print };
     fs = { readFileSync: readFile };
-    process = { argv: arguments, exit: quit };
+    process = {
+        argv: arguments,
+        exit: quit,
+        on: function (evt, callback) {
+            callback();
+        }
+    };
     process.argv.unshift('esvalidate.js');
     process.argv.unshift('rhino');
 }
 
 function showUsage() {
     console.log('Usage:');
-    console.log('   esvalidate [options] file.js');
+    console.log('   esvalidate [options] [file.js...]');
     console.log();
     console.log('Available options:');
     console.log();
@@ -77,10 +90,6 @@ function showUsage() {
     process.exit(1);
 }
 
-if (process.argv.length <= 2) {
-    showUsage();
-}
-
 options = {
     format: 'plain'
 };
@@ -89,7 +98,9 @@ fnames = [];
 
 process.argv.splice(2).forEach(function (entry) {
 
-    if (entry === '-h' || entry === '--help') {
+    if (forceFile || entry === '-' || entry.slice(0, 1) !== '-') {
+        fnames.push(entry);
+    } else if (entry === '-h' || entry === '--help') {
         showUsage();
     } else if (entry === '-v' || entry === '--version') {
         console.log('ECMAScript Validator (using Esprima version', esprima.version, ')');
@@ -101,17 +112,16 @@ process.argv.splice(2).forEach(function (entry) {
             console.log('Error: unknown report format ' + options.format + '.');
             process.exit(1);
         }
-    } else if (entry.slice(0, 2) === '--') {
+    } else if (entry === '--') {
+        forceFile = true;
+    } else {
         console.log('Error: unknown option ' + entry + '.');
         process.exit(1);
-    } else {
-        fnames.push(entry);
     }
 });
 
 if (fnames.length === 0) {
-    console.log('Error: no input file.');
-    process.exit(1);
+    fnames.push('');
 }
 
 if (options.format === 'junit') {
@@ -120,10 +130,13 @@ if (options.format === 'junit') {
 }
 
 count = 0;
-fnames.forEach(function (fname) {
-    var content, timestamp, syntax, name;
+
+function run(fname, content) {
+    var timestamp, syntax, name;
     try {
-        content = fs.readFileSync(fname, 'utf-8');
+        if (typeof content !== 'string') {
+            throw content;
+        }
 
         if (content[0] === '#' && content[1] === '!') {
             content = '//' + content.substr(2, content.length);
@@ -184,16 +197,40 @@ fnames.forEach(function (fname) {
             console.log('Error: ' + e.message);
         }
     }
+}
+
+fnames.forEach(function (fname) {
+    var content = '';
+    try {
+        if (fname && (fname !== '-' || forceFile)) {
+            content = fs.readFileSync(fname, 'utf-8');
+        } else {
+            fname = '';
+            process.stdin.resume();
+            process.stdin.on('data', function(chunk) {
+                content += chunk;
+            });
+            process.stdin.on('end', function() {
+                run(fname, content);
+            });
+            return;
+        }
+    } catch (e) {
+        content = e;
+    }
+    run(fname, content);
 });
 
-if (options.format === 'junit') {
-    console.log('');
-}
+process.on('exit', function () {
+    if (options.format === 'junit') {
+        console.log('');
+    }
 
-if (count > 0) {
-    process.exit(1);
-}
+    if (count > 0) {
+        process.exit(1);
+    }
 
-if (count === 0 && typeof phantom === 'object') {
-    process.exit(0);
-}
+    if (count === 0 && typeof phantom === 'object') {
+        process.exit(0);
+    }
+});
diff --git a/tools/eslint/node_modules/esprima/dist/esprima.js b/tools/eslint/node_modules/esprima/dist/esprima.js
new file mode 100644
index 00000000000000..34675c03dc7f80
--- /dev/null
+++ b/tools/eslint/node_modules/esprima/dist/esprima.js
@@ -0,0 +1,6401 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+/* istanbul ignore next */
+	if(typeof exports === 'object' && typeof module === 'object')
+		module.exports = factory();
+	else if(typeof define === 'function' && define.amd)
+		define([], factory);
+/* istanbul ignore next */
+	else if(typeof exports === 'object')
+		exports["esprima"] = factory();
+	else
+		root["esprima"] = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ 	// The module cache
+/******/ 	var installedModules = {};
+
+/******/ 	// The require function
+/******/ 	function __webpack_require__(moduleId) {
+
+/******/ 		// Check if module is in cache
+/* istanbul ignore if */
+/******/ 		if(installedModules[moduleId])
+/******/ 			return installedModules[moduleId].exports;
+
+/******/ 		// Create a new module (and put it into the cache)
+/******/ 		var module = installedModules[moduleId] = {
+/******/ 			exports: {},
+/******/ 			id: moduleId,
+/******/ 			loaded: false
+/******/ 		};
+
+/******/ 		// Execute the module function
+/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+
+/******/ 		// Flag the module as loaded
+/******/ 		module.loaded = true;
+
+/******/ 		// Return the exports of the module
+/******/ 		return module.exports;
+/******/ 	}
+
+
+/******/ 	// expose the modules object (__webpack_modules__)
+/******/ 	__webpack_require__.m = modules;
+
+/******/ 	// expose the module cache
+/******/ 	__webpack_require__.c = installedModules;
+
+/******/ 	// __webpack_public_path__
+/******/ 	__webpack_require__.p = "";
+
+/******/ 	// Load entry module and return exports
+/******/ 	return __webpack_require__(0);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+	/*
+	  Copyright JS Foundation and other contributors, https://js.foundation/
+
+	  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.
+
+	  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  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.
+	*/
+	"use strict";
+	var comment_handler_1 = __webpack_require__(1);
+	var parser_1 = __webpack_require__(3);
+	var jsx_parser_1 = __webpack_require__(11);
+	var tokenizer_1 = __webpack_require__(15);
+	function parse(code, options, delegate) {
+	    var commentHandler = null;
+	    var proxyDelegate = function (node, metadata) {
+	        if (delegate) {
+	            delegate(node, metadata);
+	        }
+	        if (commentHandler) {
+	            commentHandler.visit(node, metadata);
+	        }
+	    };
+	    var parserDelegate = (typeof delegate === 'function') ? proxyDelegate : null;
+	    var collectComment = false;
+	    if (options) {
+	        collectComment = (typeof options.comment === 'boolean' && options.comment);
+	        var attachComment = (typeof options.attachComment === 'boolean' && options.attachComment);
+	        if (collectComment || attachComment) {
+	            commentHandler = new comment_handler_1.CommentHandler();
+	            commentHandler.attach = attachComment;
+	            options.comment = true;
+	            parserDelegate = proxyDelegate;
+	        }
+	    }
+	    var parser;
+	    if (options && typeof options.jsx === 'boolean' && options.jsx) {
+	        parser = new jsx_parser_1.JSXParser(code, options, parserDelegate);
+	    }
+	    else {
+	        parser = new parser_1.Parser(code, options, parserDelegate);
+	    }
+	    var ast = (parser.parseProgram());
+	    if (collectComment) {
+	        ast.comments = commentHandler.comments;
+	    }
+	    if (parser.config.tokens) {
+	        ast.tokens = parser.tokens;
+	    }
+	    if (parser.config.tolerant) {
+	        ast.errors = parser.errorHandler.errors;
+	    }
+	    return ast;
+	}
+	exports.parse = parse;
+	function tokenize(code, options, delegate) {
+	    var tokenizer = new tokenizer_1.Tokenizer(code, options);
+	    var tokens;
+	    tokens = [];
+	    try {
+	        while (true) {
+	            var token = tokenizer.getNextToken();
+	            if (!token) {
+	                break;
+	            }
+	            if (delegate) {
+	                token = delegate(token);
+	            }
+	            tokens.push(token);
+	        }
+	    }
+	    catch (e) {
+	        tokenizer.errorHandler.tolerate(e);
+	    }
+	    if (tokenizer.errorHandler.tolerant) {
+	        tokens.errors = tokenizer.errors();
+	    }
+	    return tokens;
+	}
+	exports.tokenize = tokenize;
+	var syntax_1 = __webpack_require__(2);
+	exports.Syntax = syntax_1.Syntax;
+	// Sync with *.json manifests.
+	exports.version = '3.1.3';
+
+
+/***/ },
+/* 1 */
+/***/ function(module, exports, __webpack_require__) {
+
+	"use strict";
+	var syntax_1 = __webpack_require__(2);
+	var CommentHandler = (function () {
+	    function CommentHandler() {
+	        this.attach = false;
+	        this.comments = [];
+	        this.stack = [];
+	        this.leading = [];
+	        this.trailing = [];
+	    }
+	    CommentHandler.prototype.insertInnerComments = function (node, metadata) {
+	        //  innnerComments for properties empty block
+	        //  `function a() {/** comments **\/}`
+	        if (node.type === syntax_1.Syntax.BlockStatement && node.body.length === 0) {
+	            var innerComments = [];
+	            for (var i = this.leading.length - 1; i >= 0; --i) {
+	                var entry = this.leading[i];
+	                if (metadata.end.offset >= entry.start) {
+	                    innerComments.unshift(entry.comment);
+	                    this.leading.splice(i, 1);
+	                    this.trailing.splice(i, 1);
+	                }
+	            }
+	            if (innerComments.length) {
+	                node.innerComments = innerComments;
+	            }
+	        }
+	    };
+	    CommentHandler.prototype.findTrailingComments = function (node, metadata) {
+	        var trailingComments = [];
+	        if (this.trailing.length > 0) {
+	            for (var i = this.trailing.length - 1; i >= 0; --i) {
+	                var entry_1 = this.trailing[i];
+	                if (entry_1.start >= metadata.end.offset) {
+	                    trailingComments.unshift(entry_1.comment);
+	                }
+	            }
+	            this.trailing.length = 0;
+	            return trailingComments;
+	        }
+	        var entry = this.stack[this.stack.length - 1];
+	        if (entry && entry.node.trailingComments) {
+	            var firstComment = entry.node.trailingComments[0];
+	            if (firstComment && firstComment.range[0] >= metadata.end.offset) {
+	                trailingComments = entry.node.trailingComments;
+	                delete entry.node.trailingComments;
+	            }
+	        }
+	        return trailingComments;
+	    };
+	    CommentHandler.prototype.findLeadingComments = function (node, metadata) {
+	        var leadingComments = [];
+	        var target;
+	        while (this.stack.length > 0) {
+	            var entry = this.stack[this.stack.length - 1];
+	            if (entry && entry.start >= metadata.start.offset) {
+	                target = this.stack.pop().node;
+	            }
+	            else {
+	                break;
+	            }
+	        }
+	        if (target) {
+	            var count = target.leadingComments ? target.leadingComments.length : 0;
+	            for (var i = count - 1; i >= 0; --i) {
+	                var comment = target.leadingComments[i];
+	                if (comment.range[1] <= metadata.start.offset) {
+	                    leadingComments.unshift(comment);
+	                    target.leadingComments.splice(i, 1);
+	                }
+	            }
+	            if (target.leadingComments && target.leadingComments.length === 0) {
+	                delete target.leadingComments;
+	            }
+	            return leadingComments;
+	        }
+	        for (var i = this.leading.length - 1; i >= 0; --i) {
+	            var entry = this.leading[i];
+	            if (entry.start <= metadata.start.offset) {
+	                leadingComments.unshift(entry.comment);
+	                this.leading.splice(i, 1);
+	            }
+	        }
+	        return leadingComments;
+	    };
+	    CommentHandler.prototype.visitNode = function (node, metadata) {
+	        if (node.type === syntax_1.Syntax.Program && node.body.length > 0) {
+	            return;
+	        }
+	        this.insertInnerComments(node, metadata);
+	        var trailingComments = this.findTrailingComments(node, metadata);
+	        var leadingComments = this.findLeadingComments(node, metadata);
+	        if (leadingComments.length > 0) {
+	            node.leadingComments = leadingComments;
+	        }
+	        if (trailingComments.length > 0) {
+	            node.trailingComments = trailingComments;
+	        }
+	        this.stack.push({
+	            node: node,
+	            start: metadata.start.offset
+	        });
+	    };
+	    CommentHandler.prototype.visitComment = function (node, metadata) {
+	        var type = (node.type[0] === 'L') ? 'Line' : 'Block';
+	        var comment = {
+	            type: type,
+	            value: node.value
+	        };
+	        if (node.range) {
+	            comment.range = node.range;
+	        }
+	        if (node.loc) {
+	            comment.loc = node.loc;
+	        }
+	        this.comments.push(comment);
+	        if (this.attach) {
+	            var entry = {
+	                comment: {
+	                    type: type,
+	                    value: node.value,
+	                    range: [metadata.start.offset, metadata.end.offset]
+	                },
+	                start: metadata.start.offset
+	            };
+	            if (node.loc) {
+	                entry.comment.loc = node.loc;
+	            }
+	            node.type = type;
+	            this.leading.push(entry);
+	            this.trailing.push(entry);
+	        }
+	    };
+	    CommentHandler.prototype.visit = function (node, metadata) {
+	        if (node.type === 'LineComment') {
+	            this.visitComment(node, metadata);
+	        }
+	        else if (node.type === 'BlockComment') {
+	            this.visitComment(node, metadata);
+	        }
+	        else if (this.attach) {
+	            this.visitNode(node, metadata);
+	        }
+	    };
+	    return CommentHandler;
+	}());
+	exports.CommentHandler = CommentHandler;
+
+
+/***/ },
+/* 2 */
+/***/ function(module, exports) {
+
+	"use strict";
+	exports.Syntax = {
+	    AssignmentExpression: 'AssignmentExpression',
+	    AssignmentPattern: 'AssignmentPattern',
+	    ArrayExpression: 'ArrayExpression',
+	    ArrayPattern: 'ArrayPattern',
+	    ArrowFunctionExpression: 'ArrowFunctionExpression',
+	    BlockStatement: 'BlockStatement',
+	    BinaryExpression: 'BinaryExpression',
+	    BreakStatement: 'BreakStatement',
+	    CallExpression: 'CallExpression',
+	    CatchClause: 'CatchClause',
+	    ClassBody: 'ClassBody',
+	    ClassDeclaration: 'ClassDeclaration',
+	    ClassExpression: 'ClassExpression',
+	    ConditionalExpression: 'ConditionalExpression',
+	    ContinueStatement: 'ContinueStatement',
+	    DoWhileStatement: 'DoWhileStatement',
+	    DebuggerStatement: 'DebuggerStatement',
+	    EmptyStatement: 'EmptyStatement',
+	    ExportAllDeclaration: 'ExportAllDeclaration',
+	    ExportDefaultDeclaration: 'ExportDefaultDeclaration',
+	    ExportNamedDeclaration: 'ExportNamedDeclaration',
+	    ExportSpecifier: 'ExportSpecifier',
+	    ExpressionStatement: 'ExpressionStatement',
+	    ForStatement: 'ForStatement',
+	    ForOfStatement: 'ForOfStatement',
+	    ForInStatement: 'ForInStatement',
+	    FunctionDeclaration: 'FunctionDeclaration',
+	    FunctionExpression: 'FunctionExpression',
+	    Identifier: 'Identifier',
+	    IfStatement: 'IfStatement',
+	    ImportDeclaration: 'ImportDeclaration',
+	    ImportDefaultSpecifier: 'ImportDefaultSpecifier',
+	    ImportNamespaceSpecifier: 'ImportNamespaceSpecifier',
+	    ImportSpecifier: 'ImportSpecifier',
+	    Literal: 'Literal',
+	    LabeledStatement: 'LabeledStatement',
+	    LogicalExpression: 'LogicalExpression',
+	    MemberExpression: 'MemberExpression',
+	    MetaProperty: 'MetaProperty',
+	    MethodDefinition: 'MethodDefinition',
+	    NewExpression: 'NewExpression',
+	    ObjectExpression: 'ObjectExpression',
+	    ObjectPattern: 'ObjectPattern',
+	    Program: 'Program',
+	    Property: 'Property',
+	    RestElement: 'RestElement',
+	    ReturnStatement: 'ReturnStatement',
+	    SequenceExpression: 'SequenceExpression',
+	    SpreadElement: 'SpreadElement',
+	    Super: 'Super',
+	    SwitchCase: 'SwitchCase',
+	    SwitchStatement: 'SwitchStatement',
+	    TaggedTemplateExpression: 'TaggedTemplateExpression',
+	    TemplateElement: 'TemplateElement',
+	    TemplateLiteral: 'TemplateLiteral',
+	    ThisExpression: 'ThisExpression',
+	    ThrowStatement: 'ThrowStatement',
+	    TryStatement: 'TryStatement',
+	    UnaryExpression: 'UnaryExpression',
+	    UpdateExpression: 'UpdateExpression',
+	    VariableDeclaration: 'VariableDeclaration',
+	    VariableDeclarator: 'VariableDeclarator',
+	    WhileStatement: 'WhileStatement',
+	    WithStatement: 'WithStatement',
+	    YieldExpression: 'YieldExpression'
+	};
+
+
+/***/ },
+/* 3 */
+/***/ function(module, exports, __webpack_require__) {
+
+	"use strict";
+	var assert_1 = __webpack_require__(4);
+	var messages_1 = __webpack_require__(5);
+	var error_handler_1 = __webpack_require__(6);
+	var token_1 = __webpack_require__(7);
+	var scanner_1 = __webpack_require__(8);
+	var syntax_1 = __webpack_require__(2);
+	var Node = __webpack_require__(10);
+	var ArrowParameterPlaceHolder = 'ArrowParameterPlaceHolder';
+	var Parser = (function () {
+	    function Parser(code, options, delegate) {
+	        if (options === void 0) { options = {}; }
+	        this.config = {
+	            range: (typeof options.range === 'boolean') && options.range,
+	            loc: (typeof options.loc === 'boolean') && options.loc,
+	            source: null,
+	            tokens: (typeof options.tokens === 'boolean') && options.tokens,
+	            comment: (typeof options.comment === 'boolean') && options.comment,
+	            tolerant: (typeof options.tolerant === 'boolean') && options.tolerant
+	        };
+	        if (this.config.loc && options.source && options.source !== null) {
+	            this.config.source = String(options.source);
+	        }
+	        this.delegate = delegate;
+	        this.errorHandler = new error_handler_1.ErrorHandler();
+	        this.errorHandler.tolerant = this.config.tolerant;
+	        this.scanner = new scanner_1.Scanner(code, this.errorHandler);
+	        this.scanner.trackComment = this.config.comment;
+	        this.operatorPrecedence = {
+	            ')': 0,
+	            ';': 0,
+	            ',': 0,
+	            '=': 0,
+	            ']': 0,
+	            '||': 1,
+	            '&&': 2,
+	            '|': 3,
+	            '^': 4,
+	            '&': 5,
+	            '==': 6,
+	            '!=': 6,
+	            '===': 6,
+	            '!==': 6,
+	            '<': 7,
+	            '>': 7,
+	            '<=': 7,
+	            '>=': 7,
+	            '<<': 8,
+	            '>>': 8,
+	            '>>>': 8,
+	            '+': 9,
+	            '-': 9,
+	            '*': 11,
+	            '/': 11,
+	            '%': 11
+	        };
+	        this.sourceType = (options && options.sourceType === 'module') ? 'module' : 'script';
+	        this.lookahead = null;
+	        this.hasLineTerminator = false;
+	        this.context = {
+	            allowIn: true,
+	            allowYield: true,
+	            firstCoverInitializedNameError: null,
+	            isAssignmentTarget: false,
+	            isBindingElement: false,
+	            inFunctionBody: false,
+	            inIteration: false,
+	            inSwitch: false,
+	            labelSet: {},
+	            strict: (this.sourceType === 'module')
+	        };
+	        this.tokens = [];
+	        this.startMarker = {
+	            index: 0,
+	            lineNumber: this.scanner.lineNumber,
+	            lineStart: 0
+	        };
+	        this.lastMarker = {
+	            index: 0,
+	            lineNumber: this.scanner.lineNumber,
+	            lineStart: 0
+	        };
+	        this.nextToken();
+	        this.lastMarker = {
+	            index: this.scanner.index,
+	            lineNumber: this.scanner.lineNumber,
+	            lineStart: this.scanner.lineStart
+	        };
+	    }
+	    Parser.prototype.throwError = function (messageFormat) {
+	        var values = [];
+	        for (var _i = 1; _i < arguments.length; _i++) {
+	            values[_i - 1] = arguments[_i];
+	        }
+	        var args = Array.prototype.slice.call(arguments, 1);
+	        var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) {
+	            assert_1.assert(idx < args.length, 'Message reference must be in range');
+	            return args[idx];
+	        });
+	        var index = this.lastMarker.index;
+	        var line = this.lastMarker.lineNumber;
+	        var column = this.lastMarker.index - this.lastMarker.lineStart + 1;
+	        throw this.errorHandler.createError(index, line, column, msg);
+	    };
+	    Parser.prototype.tolerateError = function (messageFormat) {
+	        var values = [];
+	        for (var _i = 1; _i < arguments.length; _i++) {
+	            values[_i - 1] = arguments[_i];
+	        }
+	        var args = Array.prototype.slice.call(arguments, 1);
+	        var msg = messageFormat.replace(/%(\d)/g, function (whole, idx) {
+	            assert_1.assert(idx < args.length, 'Message reference must be in range');
+	            return args[idx];
+	        });
+	        var index = this.lastMarker.index;
+	        var line = this.scanner.lineNumber;
+	        var column = this.lastMarker.index - this.lastMarker.lineStart + 1;
+	        this.errorHandler.tolerateError(index, line, column, msg);
+	    };
+	    // Throw an exception because of the token.
+	    Parser.prototype.unexpectedTokenError = function (token, message) {
+	        var msg = message || messages_1.Messages.UnexpectedToken;
+	        var value;
+	        if (token) {
+	            if (!message) {
+	                msg = (token.type === token_1.Token.EOF) ? messages_1.Messages.UnexpectedEOS :
+	                    (token.type === token_1.Token.Identifier) ? messages_1.Messages.UnexpectedIdentifier :
+	                        (token.type === token_1.Token.NumericLiteral) ? messages_1.Messages.UnexpectedNumber :
+	                            (token.type === token_1.Token.StringLiteral) ? messages_1.Messages.UnexpectedString :
+	                                (token.type === token_1.Token.Template) ? messages_1.Messages.UnexpectedTemplate :
+	                                    messages_1.Messages.UnexpectedToken;
+	                if (token.type === token_1.Token.Keyword) {
+	                    if (this.scanner.isFutureReservedWord(token.value)) {
+	                        msg = messages_1.Messages.UnexpectedReserved;
+	                    }
+	                    else if (this.context.strict && this.scanner.isStrictModeReservedWord(token.value)) {
+	                        msg = messages_1.Messages.StrictReservedWord;
+	                    }
+	                }
+	            }
+	            value = (token.type === token_1.Token.Template) ? token.value.raw : token.value;
+	        }
+	        else {
+	            value = 'ILLEGAL';
+	        }
+	        msg = msg.replace('%0', value);
+	        if (token && typeof token.lineNumber === 'number') {
+	            var index = token.start;
+	            var line = token.lineNumber;
+	            var column = token.start - this.lastMarker.lineStart + 1;
+	            return this.errorHandler.createError(index, line, column, msg);
+	        }
+	        else {
+	            var index = this.lastMarker.index;
+	            var line = this.lastMarker.lineNumber;
+	            var column = index - this.lastMarker.lineStart + 1;
+	            return this.errorHandler.createError(index, line, column, msg);
+	        }
+	    };
+	    Parser.prototype.throwUnexpectedToken = function (token, message) {
+	        throw this.unexpectedTokenError(token, message);
+	    };
+	    Parser.prototype.tolerateUnexpectedToken = function (token, message) {
+	        this.errorHandler.tolerate(this.unexpectedTokenError(token, message));
+	    };
+	    Parser.prototype.collectComments = function () {
+	        if (!this.config.comment) {
+	            this.scanner.scanComments();
+	        }
+	        else {
+	            var comments = this.scanner.scanComments();
+	            if (comments.length > 0 && this.delegate) {
+	                for (var i = 0; i < comments.length; ++i) {
+	                    var e = comments[i];
+	                    var node = void 0;
+	                    node = {
+	                        type: e.multiLine ? 'BlockComment' : 'LineComment',
+	                        value: this.scanner.source.slice(e.slice[0], e.slice[1])
+	                    };
+	                    if (this.config.range) {
+	                        node.range = e.range;
+	                    }
+	                    if (this.config.loc) {
+	                        node.loc = e.loc;
+	                    }
+	                    var metadata = {
+	                        start: {
+	                            line: e.loc.start.line,
+	                            column: e.loc.start.column,
+	                            offset: e.range[0]
+	                        },
+	                        end: {
+	                            line: e.loc.end.line,
+	                            column: e.loc.end.column,
+	                            offset: e.range[1]
+	                        }
+	                    };
+	                    this.delegate(node, metadata);
+	                }
+	            }
+	        }
+	    };
+	    // From internal representation to an external structure
+	    Parser.prototype.getTokenRaw = function (token) {
+	        return this.scanner.source.slice(token.start, token.end);
+	    };
+	    Parser.prototype.convertToken = function (token) {
+	        var t;
+	        t = {
+	            type: token_1.TokenName[token.type],
+	            value: this.getTokenRaw(token)
+	        };
+	        if (this.config.range) {
+	            t.range = [token.start, token.end];
+	        }
+	        if (this.config.loc) {
+	            t.loc = {
+	                start: {
+	                    line: this.startMarker.lineNumber,
+	                    column: this.startMarker.index - this.startMarker.lineStart
+	                },
+	                end: {
+	                    line: this.scanner.lineNumber,
+	                    column: this.scanner.index - this.scanner.lineStart
+	                }
+	            };
+	        }
+	        if (token.regex) {
+	            t.regex = token.regex;
+	        }
+	        return t;
+	    };
+	    Parser.prototype.nextToken = function () {
+	        var token = this.lookahead;
+	        this.lastMarker.index = this.scanner.index;
+	        this.lastMarker.lineNumber = this.scanner.lineNumber;
+	        this.lastMarker.lineStart = this.scanner.lineStart;
+	        this.collectComments();
+	        this.startMarker.index = this.scanner.index;
+	        this.startMarker.lineNumber = this.scanner.lineNumber;
+	        this.startMarker.lineStart = this.scanner.lineStart;
+	        var next;
+	        next = this.scanner.lex();
+	        this.hasLineTerminator = (token && next) ? (token.lineNumber !== next.lineNumber) : false;
+	        if (next && this.context.strict && next.type === token_1.Token.Identifier) {
+	            if (this.scanner.isStrictModeReservedWord(next.value)) {
+	                next.type = token_1.Token.Keyword;
+	            }
+	        }
+	        this.lookahead = next;
+	        if (this.config.tokens && next.type !== token_1.Token.EOF) {
+	            this.tokens.push(this.convertToken(next));
+	        }
+	        return token;
+	    };
+	    Parser.prototype.nextRegexToken = function () {
+	        this.collectComments();
+	        var token = this.scanner.scanRegExp();
+	        if (this.config.tokens) {
+	            // Pop the previous token, '/' or '/='
+	            // This is added from the lookahead token.
+	            this.tokens.pop();
+	            this.tokens.push(this.convertToken(token));
+	        }
+	        // Prime the next lookahead.
+	        this.lookahead = token;
+	        this.nextToken();
+	        return token;
+	    };
+	    Parser.prototype.createNode = function () {
+	        return {
+	            index: this.startMarker.index,
+	            line: this.startMarker.lineNumber,
+	            column: this.startMarker.index - this.startMarker.lineStart
+	        };
+	    };
+	    Parser.prototype.startNode = function (token) {
+	        return {
+	            index: token.start,
+	            line: token.lineNumber,
+	            column: token.start - token.lineStart
+	        };
+	    };
+	    Parser.prototype.finalize = function (meta, node) {
+	        if (this.config.range) {
+	            node.range = [meta.index, this.lastMarker.index];
+	        }
+	        if (this.config.loc) {
+	            node.loc = {
+	                start: {
+	                    line: meta.line,
+	                    column: meta.column
+	                },
+	                end: {
+	                    line: this.lastMarker.lineNumber,
+	                    column: this.lastMarker.index - this.lastMarker.lineStart
+	                }
+	            };
+	            if (this.config.source) {
+	                node.loc.source = this.config.source;
+	            }
+	        }
+	        if (this.delegate) {
+	            var metadata = {
+	                start: {
+	                    line: meta.line,
+	                    column: meta.column,
+	                    offset: meta.index
+	                },
+	                end: {
+	                    line: this.lastMarker.lineNumber,
+	                    column: this.lastMarker.index - this.lastMarker.lineStart,
+	                    offset: this.lastMarker.index
+	                }
+	            };
+	            this.delegate(node, metadata);
+	        }
+	        return node;
+	    };
+	    // Expect the next token to match the specified punctuator.
+	    // If not, an exception will be thrown.
+	    Parser.prototype.expect = function (value) {
+	        var token = this.nextToken();
+	        if (token.type !== token_1.Token.Punctuator || token.value !== value) {
+	            this.throwUnexpectedToken(token);
+	        }
+	    };
+	    // Quietly expect a comma when in tolerant mode, otherwise delegates to expect().
+	    Parser.prototype.expectCommaSeparator = function () {
+	        if (this.config.tolerant) {
+	            var token = this.lookahead;
+	            if (token.type === token_1.Token.Punctuator && token.value === ',') {
+	                this.nextToken();
+	            }
+	            else if (token.type === token_1.Token.Punctuator && token.value === ';') {
+	                this.nextToken();
+	                this.tolerateUnexpectedToken(token);
+	            }
+	            else {
+	                this.tolerateUnexpectedToken(token, messages_1.Messages.UnexpectedToken);
+	            }
+	        }
+	        else {
+	            this.expect(',');
+	        }
+	    };
+	    // Expect the next token to match the specified keyword.
+	    // If not, an exception will be thrown.
+	    Parser.prototype.expectKeyword = function (keyword) {
+	        var token = this.nextToken();
+	        if (token.type !== token_1.Token.Keyword || token.value !== keyword) {
+	            this.throwUnexpectedToken(token);
+	        }
+	    };
+	    // Return true if the next token matches the specified punctuator.
+	    Parser.prototype.match = function (value) {
+	        return this.lookahead.type === token_1.Token.Punctuator && this.lookahead.value === value;
+	    };
+	    // Return true if the next token matches the specified keyword
+	    Parser.prototype.matchKeyword = function (keyword) {
+	        return this.lookahead.type === token_1.Token.Keyword && this.lookahead.value === keyword;
+	    };
+	    // Return true if the next token matches the specified contextual keyword
+	    // (where an identifier is sometimes a keyword depending on the context)
+	    Parser.prototype.matchContextualKeyword = function (keyword) {
+	        return this.lookahead.type === token_1.Token.Identifier && this.lookahead.value === keyword;
+	    };
+	    // Return true if the next token is an assignment operator
+	    Parser.prototype.matchAssign = function () {
+	        if (this.lookahead.type !== token_1.Token.Punctuator) {
+	            return false;
+	        }
+	        var op = this.lookahead.value;
+	        return op === '=' ||
+	            op === '*=' ||
+	            op === '**=' ||
+	            op === '/=' ||
+	            op === '%=' ||
+	            op === '+=' ||
+	            op === '-=' ||
+	            op === '<<=' ||
+	            op === '>>=' ||
+	            op === '>>>=' ||
+	            op === '&=' ||
+	            op === '^=' ||
+	            op === '|=';
+	    };
+	    // Cover grammar support.
+	    //
+	    // When an assignment expression position starts with an left parenthesis, the determination of the type
+	    // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)
+	    // or the first comma. This situation also defers the determination of all the expressions nested in the pair.
+	    //
+	    // There are three productions that can be parsed in a parentheses pair that needs to be determined
+	    // after the outermost pair is closed. They are:
+	    //
+	    //   1. AssignmentExpression
+	    //   2. BindingElements
+	    //   3. AssignmentTargets
+	    //
+	    // In order to avoid exponential backtracking, we use two flags to denote if the production can be
+	    // binding element or assignment target.
+	    //
+	    // The three productions have the relationship:
+	    //
+	    //   BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression
+	    //
+	    // with a single exception that CoverInitializedName when used directly in an Expression, generates
+	    // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the
+	    // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.
+	    //
+	    // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not
+	    // effect the current flags. This means the production the parser parses is only used as an expression. Therefore
+	    // the CoverInitializedName check is conducted.
+	    //
+	    // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates
+	    // the flags outside of the parser. This means the production the parser parses is used as a part of a potential
+	    // pattern. The CoverInitializedName check is deferred.
+	    Parser.prototype.isolateCoverGrammar = function (parseFunction) {
+	        var previousIsBindingElement = this.context.isBindingElement;
+	        var previousIsAssignmentTarget = this.context.isAssignmentTarget;
+	        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;
+	        this.context.isBindingElement = true;
+	        this.context.isAssignmentTarget = true;
+	        this.context.firstCoverInitializedNameError = null;
+	        var result = parseFunction.call(this);
+	        if (this.context.firstCoverInitializedNameError !== null) {
+	            this.throwUnexpectedToken(this.context.firstCoverInitializedNameError);
+	        }
+	        this.context.isBindingElement = previousIsBindingElement;
+	        this.context.isAssignmentTarget = previousIsAssignmentTarget;
+	        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError;
+	        return result;
+	    };
+	    Parser.prototype.inheritCoverGrammar = function (parseFunction) {
+	        var previousIsBindingElement = this.context.isBindingElement;
+	        var previousIsAssignmentTarget = this.context.isAssignmentTarget;
+	        var previousFirstCoverInitializedNameError = this.context.firstCoverInitializedNameError;
+	        this.context.isBindingElement = true;
+	        this.context.isAssignmentTarget = true;
+	        this.context.firstCoverInitializedNameError = null;
+	        var result = parseFunction.call(this);
+	        this.context.isBindingElement = this.context.isBindingElement && previousIsBindingElement;
+	        this.context.isAssignmentTarget = this.context.isAssignmentTarget && previousIsAssignmentTarget;
+	        this.context.firstCoverInitializedNameError = previousFirstCoverInitializedNameError || this.context.firstCoverInitializedNameError;
+	        return result;
+	    };
+	    Parser.prototype.consumeSemicolon = function () {
+	        if (this.match(';')) {
+	            this.nextToken();
+	        }
+	        else if (!this.hasLineTerminator) {
+	            if (this.lookahead.type !== token_1.Token.EOF && !this.match('}')) {
+	                this.throwUnexpectedToken(this.lookahead);
+	            }
+	            this.lastMarker.index = this.startMarker.index;
+	            this.lastMarker.lineNumber = this.startMarker.lineNumber;
+	            this.lastMarker.lineStart = this.startMarker.lineStart;
+	        }
+	    };
+	    // ECMA-262 12.2 Primary Expressions
+	    Parser.prototype.parsePrimaryExpression = function () {
+	        var node = this.createNode();
+	        var expr;
+	        var value, token, raw;
+	        switch (this.lookahead.type) {
+	            case token_1.Token.Identifier:
+	                if (this.sourceType === 'module' && this.lookahead.value === 'await') {
+	                    this.tolerateUnexpectedToken(this.lookahead);
+	                }
+	                expr = this.finalize(node, new Node.Identifier(this.nextToken().value));
+	                break;
+	            case token_1.Token.NumericLiteral:
+	            case token_1.Token.StringLiteral:
+	                if (this.context.strict && this.lookahead.octal) {
+	                    this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.StrictOctalLiteral);
+	                }
+	                this.context.isAssignmentTarget = false;
+	                this.context.isBindingElement = false;
+	                token = this.nextToken();
+	                raw = this.getTokenRaw(token);
+	                expr = this.finalize(node, new Node.Literal(token.value, raw));
+	                break;
+	            case token_1.Token.BooleanLiteral:
+	                this.context.isAssignmentTarget = false;
+	                this.context.isBindingElement = false;
+	                token = this.nextToken();
+	                token.value = (token.value === 'true');
+	                raw = this.getTokenRaw(token);
+	                expr = this.finalize(node, new Node.Literal(token.value, raw));
+	                break;
+	            case token_1.Token.NullLiteral:
+	                this.context.isAssignmentTarget = false;
+	                this.context.isBindingElement = false;
+	                token = this.nextToken();
+	                token.value = null;
+	                raw = this.getTokenRaw(token);
+	                expr = this.finalize(node, new Node.Literal(token.value, raw));
+	                break;
+	            case token_1.Token.Template:
+	                expr = this.parseTemplateLiteral();
+	                break;
+	            case token_1.Token.Punctuator:
+	                value = this.lookahead.value;
+	                switch (value) {
+	                    case '(':
+	                        this.context.isBindingElement = false;
+	                        expr = this.inheritCoverGrammar(this.parseGroupExpression);
+	                        break;
+	                    case '[':
+	                        expr = this.inheritCoverGrammar(this.parseArrayInitializer);
+	                        break;
+	                    case '{':
+	                        expr = this.inheritCoverGrammar(this.parseObjectInitializer);
+	                        break;
+	                    case '/':
+	                    case '/=':
+	                        this.context.isAssignmentTarget = false;
+	                        this.context.isBindingElement = false;
+	                        this.scanner.index = this.startMarker.index;
+	                        token = this.nextRegexToken();
+	                        raw = this.getTokenRaw(token);
+	                        expr = this.finalize(node, new Node.RegexLiteral(token.value, raw, token.regex));
+	                        break;
+	                    default:
+	                        this.throwUnexpectedToken(this.nextToken());
+	                }
+	                break;
+	            case token_1.Token.Keyword:
+	                if (!this.context.strict && this.context.allowYield && this.matchKeyword('yield')) {
+	                    expr = this.parseIdentifierName();
+	                }
+	                else if (!this.context.strict && this.matchKeyword('let')) {
+	                    expr = this.finalize(node, new Node.Identifier(this.nextToken().value));
+	                }
+	                else {
+	                    this.context.isAssignmentTarget = false;
+	                    this.context.isBindingElement = false;
+	                    if (this.matchKeyword('function')) {
+	                        expr = this.parseFunctionExpression();
+	                    }
+	                    else if (this.matchKeyword('this')) {
+	                        this.nextToken();
+	                        expr = this.finalize(node, new Node.ThisExpression());
+	                    }
+	                    else if (this.matchKeyword('class')) {
+	                        expr = this.parseClassExpression();
+	                    }
+	                    else {
+	                        this.throwUnexpectedToken(this.nextToken());
+	                    }
+	                }
+	                break;
+	            default:
+	                this.throwUnexpectedToken(this.nextToken());
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.2.5 Array Initializer
+	    Parser.prototype.parseSpreadElement = function () {
+	        var node = this.createNode();
+	        this.expect('...');
+	        var arg = this.inheritCoverGrammar(this.parseAssignmentExpression);
+	        return this.finalize(node, new Node.SpreadElement(arg));
+	    };
+	    Parser.prototype.parseArrayInitializer = function () {
+	        var node = this.createNode();
+	        var elements = [];
+	        this.expect('[');
+	        while (!this.match(']')) {
+	            if (this.match(',')) {
+	                this.nextToken();
+	                elements.push(null);
+	            }
+	            else if (this.match('...')) {
+	                var element = this.parseSpreadElement();
+	                if (!this.match(']')) {
+	                    this.context.isAssignmentTarget = false;
+	                    this.context.isBindingElement = false;
+	                    this.expect(',');
+	                }
+	                elements.push(element);
+	            }
+	            else {
+	                elements.push(this.inheritCoverGrammar(this.parseAssignmentExpression));
+	                if (!this.match(']')) {
+	                    this.expect(',');
+	                }
+	            }
+	        }
+	        this.expect(']');
+	        return this.finalize(node, new Node.ArrayExpression(elements));
+	    };
+	    // ECMA-262 12.2.6 Object Initializer
+	    Parser.prototype.parsePropertyMethod = function (params) {
+	        this.context.isAssignmentTarget = false;
+	        this.context.isBindingElement = false;
+	        var previousStrict = this.context.strict;
+	        var body = this.isolateCoverGrammar(this.parseFunctionSourceElements);
+	        if (this.context.strict && params.firstRestricted) {
+	            this.tolerateUnexpectedToken(params.firstRestricted, params.message);
+	        }
+	        if (this.context.strict && params.stricted) {
+	            this.tolerateUnexpectedToken(params.stricted, params.message);
+	        }
+	        this.context.strict = previousStrict;
+	        return body;
+	    };
+	    Parser.prototype.parsePropertyMethodFunction = function () {
+	        var isGenerator = false;
+	        var node = this.createNode();
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = false;
+	        var params = this.parseFormalParameters();
+	        var method = this.parsePropertyMethod(params);
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));
+	    };
+	    Parser.prototype.parseObjectPropertyKey = function () {
+	        var node = this.createNode();
+	        var token = this.nextToken();
+	        var key = null;
+	        switch (token.type) {
+	            case token_1.Token.StringLiteral:
+	            case token_1.Token.NumericLiteral:
+	                if (this.context.strict && token.octal) {
+	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictOctalLiteral);
+	                }
+	                var raw = this.getTokenRaw(token);
+	                key = this.finalize(node, new Node.Literal(token.value, raw));
+	                break;
+	            case token_1.Token.Identifier:
+	            case token_1.Token.BooleanLiteral:
+	            case token_1.Token.NullLiteral:
+	            case token_1.Token.Keyword:
+	                key = this.finalize(node, new Node.Identifier(token.value));
+	                break;
+	            case token_1.Token.Punctuator:
+	                if (token.value === '[') {
+	                    key = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	                    this.expect(']');
+	                }
+	                else {
+	                    this.throwUnexpectedToken(token);
+	                }
+	                break;
+	            default:
+	                this.throwUnexpectedToken(token);
+	        }
+	        return key;
+	    };
+	    Parser.prototype.isPropertyKey = function (key, value) {
+	        return (key.type === syntax_1.Syntax.Identifier && key.name === value) ||
+	            (key.type === syntax_1.Syntax.Literal && key.value === value);
+	    };
+	    Parser.prototype.parseObjectProperty = function (hasProto) {
+	        var node = this.createNode();
+	        var token = this.lookahead;
+	        var kind;
+	        var key;
+	        var value;
+	        var computed = false;
+	        var method = false;
+	        var shorthand = false;
+	        if (token.type === token_1.Token.Identifier) {
+	            this.nextToken();
+	            key = this.finalize(node, new Node.Identifier(token.value));
+	        }
+	        else if (this.match('*')) {
+	            this.nextToken();
+	        }
+	        else {
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	        }
+	        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);
+	        if (token.type === token_1.Token.Identifier && token.value === 'get' && lookaheadPropertyKey) {
+	            kind = 'get';
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            this.context.allowYield = false;
+	            value = this.parseGetterMethod();
+	        }
+	        else if (token.type === token_1.Token.Identifier && token.value === 'set' && lookaheadPropertyKey) {
+	            kind = 'set';
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            value = this.parseSetterMethod();
+	        }
+	        else if (token.type === token_1.Token.Punctuator && token.value === '*' && lookaheadPropertyKey) {
+	            kind = 'init';
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            value = this.parseGeneratorMethod();
+	            method = true;
+	        }
+	        else {
+	            if (!key) {
+	                this.throwUnexpectedToken(this.lookahead);
+	            }
+	            kind = 'init';
+	            if (this.match(':')) {
+	                if (!computed && this.isPropertyKey(key, '__proto__')) {
+	                    if (hasProto.value) {
+	                        this.tolerateError(messages_1.Messages.DuplicateProtoProperty);
+	                    }
+	                    hasProto.value = true;
+	                }
+	                this.nextToken();
+	                value = this.inheritCoverGrammar(this.parseAssignmentExpression);
+	            }
+	            else if (this.match('(')) {
+	                value = this.parsePropertyMethodFunction();
+	                method = true;
+	            }
+	            else if (token.type === token_1.Token.Identifier) {
+	                var id = this.finalize(node, new Node.Identifier(token.value));
+	                if (this.match('=')) {
+	                    this.context.firstCoverInitializedNameError = this.lookahead;
+	                    this.nextToken();
+	                    shorthand = true;
+	                    var init = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	                    value = this.finalize(node, new Node.AssignmentPattern(id, init));
+	                }
+	                else {
+	                    shorthand = true;
+	                    value = id;
+	                }
+	            }
+	            else {
+	                this.throwUnexpectedToken(this.nextToken());
+	            }
+	        }
+	        return this.finalize(node, new Node.Property(kind, key, computed, value, method, shorthand));
+	    };
+	    Parser.prototype.parseObjectInitializer = function () {
+	        var node = this.createNode();
+	        this.expect('{');
+	        var properties = [];
+	        var hasProto = { value: false };
+	        while (!this.match('}')) {
+	            properties.push(this.parseObjectProperty(hasProto));
+	            if (!this.match('}')) {
+	                this.expectCommaSeparator();
+	            }
+	        }
+	        this.expect('}');
+	        return this.finalize(node, new Node.ObjectExpression(properties));
+	    };
+	    // ECMA-262 12.2.9 Template Literals
+	    Parser.prototype.parseTemplateHead = function () {
+	        assert_1.assert(this.lookahead.head, 'Template literal must start with a template head');
+	        var node = this.createNode();
+	        var token = this.nextToken();
+	        var value = {
+	            raw: token.value.raw,
+	            cooked: token.value.cooked
+	        };
+	        return this.finalize(node, new Node.TemplateElement(value, token.tail));
+	    };
+	    Parser.prototype.parseTemplateElement = function () {
+	        if (this.lookahead.type !== token_1.Token.Template) {
+	            this.throwUnexpectedToken();
+	        }
+	        var node = this.createNode();
+	        var token = this.nextToken();
+	        var value = {
+	            raw: token.value.raw,
+	            cooked: token.value.cooked
+	        };
+	        return this.finalize(node, new Node.TemplateElement(value, token.tail));
+	    };
+	    Parser.prototype.parseTemplateLiteral = function () {
+	        var node = this.createNode();
+	        var expressions = [];
+	        var quasis = [];
+	        var quasi = this.parseTemplateHead();
+	        quasis.push(quasi);
+	        while (!quasi.tail) {
+	            expressions.push(this.parseExpression());
+	            quasi = this.parseTemplateElement();
+	            quasis.push(quasi);
+	        }
+	        return this.finalize(node, new Node.TemplateLiteral(quasis, expressions));
+	    };
+	    // ECMA-262 12.2.10 The Grouping Operator
+	    Parser.prototype.reinterpretExpressionAsPattern = function (expr) {
+	        switch (expr.type) {
+	            case syntax_1.Syntax.Identifier:
+	            case syntax_1.Syntax.MemberExpression:
+	            case syntax_1.Syntax.RestElement:
+	            case syntax_1.Syntax.AssignmentPattern:
+	                break;
+	            case syntax_1.Syntax.SpreadElement:
+	                expr.type = syntax_1.Syntax.RestElement;
+	                this.reinterpretExpressionAsPattern(expr.argument);
+	                break;
+	            case syntax_1.Syntax.ArrayExpression:
+	                expr.type = syntax_1.Syntax.ArrayPattern;
+	                for (var i = 0; i < expr.elements.length; i++) {
+	                    if (expr.elements[i] !== null) {
+	                        this.reinterpretExpressionAsPattern(expr.elements[i]);
+	                    }
+	                }
+	                break;
+	            case syntax_1.Syntax.ObjectExpression:
+	                expr.type = syntax_1.Syntax.ObjectPattern;
+	                for (var i = 0; i < expr.properties.length; i++) {
+	                    this.reinterpretExpressionAsPattern(expr.properties[i].value);
+	                }
+	                break;
+	            case syntax_1.Syntax.AssignmentExpression:
+	                expr.type = syntax_1.Syntax.AssignmentPattern;
+	                delete expr.operator;
+	                this.reinterpretExpressionAsPattern(expr.left);
+	                break;
+	            default:
+	                // Allow other node type for tolerant parsing.
+	                break;
+	        }
+	    };
+	    Parser.prototype.parseGroupExpression = function () {
+	        var expr;
+	        this.expect('(');
+	        if (this.match(')')) {
+	            this.nextToken();
+	            if (!this.match('=>')) {
+	                this.expect('=>');
+	            }
+	            expr = {
+	                type: ArrowParameterPlaceHolder,
+	                params: []
+	            };
+	        }
+	        else {
+	            var startToken = this.lookahead;
+	            var params = [];
+	            if (this.match('...')) {
+	                expr = this.parseRestElement(params);
+	                this.expect(')');
+	                if (!this.match('=>')) {
+	                    this.expect('=>');
+	                }
+	                expr = {
+	                    type: ArrowParameterPlaceHolder,
+	                    params: [expr]
+	                };
+	            }
+	            else {
+	                var arrow = false;
+	                this.context.isBindingElement = true;
+	                expr = this.inheritCoverGrammar(this.parseAssignmentExpression);
+	                if (this.match(',')) {
+	                    var expressions = [];
+	                    this.context.isAssignmentTarget = false;
+	                    expressions.push(expr);
+	                    while (this.startMarker.index < this.scanner.length) {
+	                        if (!this.match(',')) {
+	                            break;
+	                        }
+	                        this.nextToken();
+	                        if (this.match('...')) {
+	                            if (!this.context.isBindingElement) {
+	                                this.throwUnexpectedToken(this.lookahead);
+	                            }
+	                            expressions.push(this.parseRestElement(params));
+	                            this.expect(')');
+	                            if (!this.match('=>')) {
+	                                this.expect('=>');
+	                            }
+	                            this.context.isBindingElement = false;
+	                            for (var i = 0; i < expressions.length; i++) {
+	                                this.reinterpretExpressionAsPattern(expressions[i]);
+	                            }
+	                            arrow = true;
+	                            expr = {
+	                                type: ArrowParameterPlaceHolder,
+	                                params: expressions
+	                            };
+	                        }
+	                        else {
+	                            expressions.push(this.inheritCoverGrammar(this.parseAssignmentExpression));
+	                        }
+	                        if (arrow) {
+	                            break;
+	                        }
+	                    }
+	                    if (!arrow) {
+	                        expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));
+	                    }
+	                }
+	                if (!arrow) {
+	                    this.expect(')');
+	                    if (this.match('=>')) {
+	                        if (expr.type === syntax_1.Syntax.Identifier && expr.name === 'yield') {
+	                            arrow = true;
+	                            expr = {
+	                                type: ArrowParameterPlaceHolder,
+	                                params: [expr]
+	                            };
+	                        }
+	                        if (!arrow) {
+	                            if (!this.context.isBindingElement) {
+	                                this.throwUnexpectedToken(this.lookahead);
+	                            }
+	                            if (expr.type === syntax_1.Syntax.SequenceExpression) {
+	                                for (var i = 0; i < expr.expressions.length; i++) {
+	                                    this.reinterpretExpressionAsPattern(expr.expressions[i]);
+	                                }
+	                            }
+	                            else {
+	                                this.reinterpretExpressionAsPattern(expr);
+	                            }
+	                            var params_1 = (expr.type === syntax_1.Syntax.SequenceExpression ? expr.expressions : [expr]);
+	                            expr = {
+	                                type: ArrowParameterPlaceHolder,
+	                                params: params_1
+	                            };
+	                        }
+	                    }
+	                    this.context.isBindingElement = false;
+	                }
+	            }
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.3 Left-Hand-Side Expressions
+	    Parser.prototype.parseArguments = function () {
+	        this.expect('(');
+	        var args = [];
+	        if (!this.match(')')) {
+	            while (true) {
+	                var expr = this.match('...') ? this.parseSpreadElement() :
+	                    this.isolateCoverGrammar(this.parseAssignmentExpression);
+	                args.push(expr);
+	                if (this.match(')')) {
+	                    break;
+	                }
+	                this.expectCommaSeparator();
+	            }
+	        }
+	        this.expect(')');
+	        return args;
+	    };
+	    Parser.prototype.isIdentifierName = function (token) {
+	        return token.type === token_1.Token.Identifier ||
+	            token.type === token_1.Token.Keyword ||
+	            token.type === token_1.Token.BooleanLiteral ||
+	            token.type === token_1.Token.NullLiteral;
+	    };
+	    Parser.prototype.parseIdentifierName = function () {
+	        var node = this.createNode();
+	        var token = this.nextToken();
+	        if (!this.isIdentifierName(token)) {
+	            this.throwUnexpectedToken(token);
+	        }
+	        return this.finalize(node, new Node.Identifier(token.value));
+	    };
+	    Parser.prototype.parseNewExpression = function () {
+	        var node = this.createNode();
+	        var id = this.parseIdentifierName();
+	        assert_1.assert(id.name === 'new', 'New expression must start with `new`');
+	        var expr;
+	        if (this.match('.')) {
+	            this.nextToken();
+	            if (this.lookahead.type === token_1.Token.Identifier && this.context.inFunctionBody && this.lookahead.value === 'target') {
+	                var property = this.parseIdentifierName();
+	                expr = new Node.MetaProperty(id, property);
+	            }
+	            else {
+	                this.throwUnexpectedToken(this.lookahead);
+	            }
+	        }
+	        else {
+	            var callee = this.isolateCoverGrammar(this.parseLeftHandSideExpression);
+	            var args = this.match('(') ? this.parseArguments() : [];
+	            expr = new Node.NewExpression(callee, args);
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	        }
+	        return this.finalize(node, expr);
+	    };
+	    Parser.prototype.parseLeftHandSideExpressionAllowCall = function () {
+	        var startToken = this.lookahead;
+	        var previousAllowIn = this.context.allowIn;
+	        this.context.allowIn = true;
+	        var expr;
+	        if (this.matchKeyword('super') && this.context.inFunctionBody) {
+	            expr = this.createNode();
+	            this.nextToken();
+	            expr = this.finalize(expr, new Node.Super());
+	            if (!this.match('(') && !this.match('.') && !this.match('[')) {
+	                this.throwUnexpectedToken(this.lookahead);
+	            }
+	        }
+	        else {
+	            expr = this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);
+	        }
+	        while (true) {
+	            if (this.match('.')) {
+	                this.context.isBindingElement = false;
+	                this.context.isAssignmentTarget = true;
+	                this.expect('.');
+	                var property = this.parseIdentifierName();
+	                expr = this.finalize(this.startNode(startToken), new Node.StaticMemberExpression(expr, property));
+	            }
+	            else if (this.match('(')) {
+	                this.context.isBindingElement = false;
+	                this.context.isAssignmentTarget = false;
+	                var args = this.parseArguments();
+	                expr = this.finalize(this.startNode(startToken), new Node.CallExpression(expr, args));
+	            }
+	            else if (this.match('[')) {
+	                this.context.isBindingElement = false;
+	                this.context.isAssignmentTarget = true;
+	                this.expect('[');
+	                var property = this.isolateCoverGrammar(this.parseExpression);
+	                this.expect(']');
+	                expr = this.finalize(this.startNode(startToken), new Node.ComputedMemberExpression(expr, property));
+	            }
+	            else if (this.lookahead.type === token_1.Token.Template && this.lookahead.head) {
+	                var quasi = this.parseTemplateLiteral();
+	                expr = this.finalize(this.startNode(startToken), new Node.TaggedTemplateExpression(expr, quasi));
+	            }
+	            else {
+	                break;
+	            }
+	        }
+	        this.context.allowIn = previousAllowIn;
+	        return expr;
+	    };
+	    Parser.prototype.parseSuper = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('super');
+	        if (!this.match('[') && !this.match('.')) {
+	            this.throwUnexpectedToken(this.lookahead);
+	        }
+	        return this.finalize(node, new Node.Super());
+	    };
+	    Parser.prototype.parseLeftHandSideExpression = function () {
+	        assert_1.assert(this.context.allowIn, 'callee of new expression always allow in keyword.');
+	        var node = this.startNode(this.lookahead);
+	        var expr = (this.matchKeyword('super') && this.context.inFunctionBody) ? this.parseSuper() :
+	            this.inheritCoverGrammar(this.matchKeyword('new') ? this.parseNewExpression : this.parsePrimaryExpression);
+	        while (true) {
+	            if (this.match('[')) {
+	                this.context.isBindingElement = false;
+	                this.context.isAssignmentTarget = true;
+	                this.expect('[');
+	                var property = this.isolateCoverGrammar(this.parseExpression);
+	                this.expect(']');
+	                expr = this.finalize(node, new Node.ComputedMemberExpression(expr, property));
+	            }
+	            else if (this.match('.')) {
+	                this.context.isBindingElement = false;
+	                this.context.isAssignmentTarget = true;
+	                this.expect('.');
+	                var property = this.parseIdentifierName();
+	                expr = this.finalize(node, new Node.StaticMemberExpression(expr, property));
+	            }
+	            else if (this.lookahead.type === token_1.Token.Template && this.lookahead.head) {
+	                var quasi = this.parseTemplateLiteral();
+	                expr = this.finalize(node, new Node.TaggedTemplateExpression(expr, quasi));
+	            }
+	            else {
+	                break;
+	            }
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.4 Update Expressions
+	    Parser.prototype.parseUpdateExpression = function () {
+	        var expr;
+	        var startToken = this.lookahead;
+	        if (this.match('++') || this.match('--')) {
+	            var node = this.startNode(startToken);
+	            var token = this.nextToken();
+	            expr = this.inheritCoverGrammar(this.parseUnaryExpression);
+	            if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {
+	                this.tolerateError(messages_1.Messages.StrictLHSPrefix);
+	            }
+	            if (!this.context.isAssignmentTarget) {
+	                this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
+	            }
+	            var prefix = true;
+	            expr = this.finalize(node, new Node.UpdateExpression(token.value, expr, prefix));
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	        }
+	        else {
+	            expr = this.inheritCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
+	            if (!this.hasLineTerminator && this.lookahead.type === token_1.Token.Punctuator) {
+	                if (this.match('++') || this.match('--')) {
+	                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier && this.scanner.isRestrictedWord(expr.name)) {
+	                        this.tolerateError(messages_1.Messages.StrictLHSPostfix);
+	                    }
+	                    if (!this.context.isAssignmentTarget) {
+	                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
+	                    }
+	                    this.context.isAssignmentTarget = false;
+	                    this.context.isBindingElement = false;
+	                    var operator = this.nextToken().value;
+	                    var prefix = false;
+	                    expr = this.finalize(this.startNode(startToken), new Node.UpdateExpression(operator, expr, prefix));
+	                }
+	            }
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.5 Unary Operators
+	    Parser.prototype.parseUnaryExpression = function () {
+	        var expr;
+	        if (this.match('+') || this.match('-') || this.match('~') || this.match('!') ||
+	            this.matchKeyword('delete') || this.matchKeyword('void') || this.matchKeyword('typeof')) {
+	            var node = this.startNode(this.lookahead);
+	            var token = this.nextToken();
+	            expr = this.inheritCoverGrammar(this.parseUnaryExpression);
+	            expr = this.finalize(node, new Node.UnaryExpression(token.value, expr));
+	            if (this.context.strict && expr.operator === 'delete' && expr.argument.type === syntax_1.Syntax.Identifier) {
+	                this.tolerateError(messages_1.Messages.StrictDelete);
+	            }
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	        }
+	        else {
+	            expr = this.parseUpdateExpression();
+	        }
+	        return expr;
+	    };
+	    Parser.prototype.parseExponentiationExpression = function () {
+	        var startToken = this.lookahead;
+	        var expr = this.inheritCoverGrammar(this.parseUnaryExpression);
+	        if (expr.type !== syntax_1.Syntax.UnaryExpression && this.match('**')) {
+	            this.nextToken();
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	            var left = expr;
+	            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
+	            expr = this.finalize(this.startNode(startToken), new Node.BinaryExpression('**', left, right));
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.6 Exponentiation Operators
+	    // ECMA-262 12.7 Multiplicative Operators
+	    // ECMA-262 12.8 Additive Operators
+	    // ECMA-262 12.9 Bitwise Shift Operators
+	    // ECMA-262 12.10 Relational Operators
+	    // ECMA-262 12.11 Equality Operators
+	    // ECMA-262 12.12 Binary Bitwise Operators
+	    // ECMA-262 12.13 Binary Logical Operators
+	    Parser.prototype.binaryPrecedence = function (token) {
+	        var op = token.value;
+	        var precedence;
+	        if (token.type === token_1.Token.Punctuator) {
+	            precedence = this.operatorPrecedence[op] || 0;
+	        }
+	        else if (token.type === token_1.Token.Keyword) {
+	            precedence = (op === 'instanceof' || (this.context.allowIn && op === 'in')) ? 7 : 0;
+	        }
+	        else {
+	            precedence = 0;
+	        }
+	        return precedence;
+	    };
+	    Parser.prototype.parseBinaryExpression = function () {
+	        var startToken = this.lookahead;
+	        var expr = this.inheritCoverGrammar(this.parseExponentiationExpression);
+	        var token = this.lookahead;
+	        var prec = this.binaryPrecedence(token);
+	        if (prec > 0) {
+	            this.nextToken();
+	            token.prec = prec;
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	            var markers = [startToken, this.lookahead];
+	            var left = expr;
+	            var right = this.isolateCoverGrammar(this.parseExponentiationExpression);
+	            var stack = [left, token, right];
+	            while (true) {
+	                prec = this.binaryPrecedence(this.lookahead);
+	                if (prec <= 0) {
+	                    break;
+	                }
+	                // Reduce: make a binary expression from the three topmost entries.
+	                while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {
+	                    right = stack.pop();
+	                    var operator = stack.pop().value;
+	                    left = stack.pop();
+	                    markers.pop();
+	                    var node = this.startNode(markers[markers.length - 1]);
+	                    stack.push(this.finalize(node, new Node.BinaryExpression(operator, left, right)));
+	                }
+	                // Shift.
+	                token = this.nextToken();
+	                token.prec = prec;
+	                stack.push(token);
+	                markers.push(this.lookahead);
+	                stack.push(this.isolateCoverGrammar(this.parseExponentiationExpression));
+	            }
+	            // Final reduce to clean-up the stack.
+	            var i = stack.length - 1;
+	            expr = stack[i];
+	            markers.pop();
+	            while (i > 1) {
+	                var node = this.startNode(markers.pop());
+	                expr = this.finalize(node, new Node.BinaryExpression(stack[i - 1].value, stack[i - 2], expr));
+	                i -= 2;
+	            }
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.14 Conditional Operator
+	    Parser.prototype.parseConditionalExpression = function () {
+	        var startToken = this.lookahead;
+	        var expr = this.inheritCoverGrammar(this.parseBinaryExpression);
+	        if (this.match('?')) {
+	            this.nextToken();
+	            var previousAllowIn = this.context.allowIn;
+	            this.context.allowIn = true;
+	            var consequent = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	            this.context.allowIn = previousAllowIn;
+	            this.expect(':');
+	            var alternate = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	            expr = this.finalize(this.startNode(startToken), new Node.ConditionalExpression(expr, consequent, alternate));
+	            this.context.isAssignmentTarget = false;
+	            this.context.isBindingElement = false;
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.15 Assignment Operators
+	    Parser.prototype.checkPatternParam = function (options, param) {
+	        switch (param.type) {
+	            case syntax_1.Syntax.Identifier:
+	                this.validateParam(options, param, param.name);
+	                break;
+	            case syntax_1.Syntax.RestElement:
+	                this.checkPatternParam(options, param.argument);
+	                break;
+	            case syntax_1.Syntax.AssignmentPattern:
+	                this.checkPatternParam(options, param.left);
+	                break;
+	            case syntax_1.Syntax.ArrayPattern:
+	                for (var i = 0; i < param.elements.length; i++) {
+	                    if (param.elements[i] !== null) {
+	                        this.checkPatternParam(options, param.elements[i]);
+	                    }
+	                }
+	                break;
+	            case syntax_1.Syntax.YieldExpression:
+	                break;
+	            default:
+	                assert_1.assert(param.type === syntax_1.Syntax.ObjectPattern, 'Invalid type');
+	                for (var i = 0; i < param.properties.length; i++) {
+	                    this.checkPatternParam(options, param.properties[i].value);
+	                }
+	                break;
+	        }
+	    };
+	    Parser.prototype.reinterpretAsCoverFormalsList = function (expr) {
+	        var params = [expr];
+	        var options;
+	        switch (expr.type) {
+	            case syntax_1.Syntax.Identifier:
+	                break;
+	            case ArrowParameterPlaceHolder:
+	                params = expr.params;
+	                break;
+	            default:
+	                return null;
+	        }
+	        options = {
+	            paramSet: {}
+	        };
+	        for (var i = 0; i < params.length; ++i) {
+	            var param = params[i];
+	            if (param.type === syntax_1.Syntax.AssignmentPattern) {
+	                if (param.right.type === syntax_1.Syntax.YieldExpression) {
+	                    if (param.right.argument) {
+	                        this.throwUnexpectedToken(this.lookahead);
+	                    }
+	                    param.right.type = syntax_1.Syntax.Identifier;
+	                    param.right.name = 'yield';
+	                    delete param.right.argument;
+	                    delete param.right.delegate;
+	                }
+	            }
+	            this.checkPatternParam(options, param);
+	            params[i] = param;
+	        }
+	        if (this.context.strict || !this.context.allowYield) {
+	            for (var i = 0; i < params.length; ++i) {
+	                var param = params[i];
+	                if (param.type === syntax_1.Syntax.YieldExpression) {
+	                    this.throwUnexpectedToken(this.lookahead);
+	                }
+	            }
+	        }
+	        if (options.message === messages_1.Messages.StrictParamDupe) {
+	            var token = this.context.strict ? options.stricted : options.firstRestricted;
+	            this.throwUnexpectedToken(token, options.message);
+	        }
+	        return {
+	            params: params,
+	            stricted: options.stricted,
+	            firstRestricted: options.firstRestricted,
+	            message: options.message
+	        };
+	    };
+	    Parser.prototype.parseAssignmentExpression = function () {
+	        var expr;
+	        if (!this.context.allowYield && this.matchKeyword('yield')) {
+	            expr = this.parseYieldExpression();
+	        }
+	        else {
+	            var startToken = this.lookahead;
+	            var token = startToken;
+	            expr = this.parseConditionalExpression();
+	            if (expr.type === ArrowParameterPlaceHolder || this.match('=>')) {
+	                // ECMA-262 14.2 Arrow Function Definitions
+	                this.context.isAssignmentTarget = false;
+	                this.context.isBindingElement = false;
+	                var list = this.reinterpretAsCoverFormalsList(expr);
+	                if (list) {
+	                    if (this.hasLineTerminator) {
+	                        this.tolerateUnexpectedToken(this.lookahead);
+	                    }
+	                    this.context.firstCoverInitializedNameError = null;
+	                    var previousStrict = this.context.strict;
+	                    var previousAllowYield = this.context.allowYield;
+	                    this.context.allowYield = true;
+	                    var node = this.startNode(startToken);
+	                    this.expect('=>');
+	                    var body = this.match('{') ? this.parseFunctionSourceElements() :
+	                        this.isolateCoverGrammar(this.parseAssignmentExpression);
+	                    var expression = body.type !== syntax_1.Syntax.BlockStatement;
+	                    if (this.context.strict && list.firstRestricted) {
+	                        this.throwUnexpectedToken(list.firstRestricted, list.message);
+	                    }
+	                    if (this.context.strict && list.stricted) {
+	                        this.tolerateUnexpectedToken(list.stricted, list.message);
+	                    }
+	                    expr = this.finalize(node, new Node.ArrowFunctionExpression(list.params, body, expression));
+	                    this.context.strict = previousStrict;
+	                    this.context.allowYield = previousAllowYield;
+	                }
+	            }
+	            else {
+	                if (this.matchAssign()) {
+	                    if (!this.context.isAssignmentTarget) {
+	                        this.tolerateError(messages_1.Messages.InvalidLHSInAssignment);
+	                    }
+	                    if (this.context.strict && expr.type === syntax_1.Syntax.Identifier) {
+	                        var id = (expr);
+	                        if (this.scanner.isRestrictedWord(id.name)) {
+	                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictLHSAssignment);
+	                        }
+	                        if (this.scanner.isStrictModeReservedWord(id.name)) {
+	                            this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
+	                        }
+	                    }
+	                    if (!this.match('=')) {
+	                        this.context.isAssignmentTarget = false;
+	                        this.context.isBindingElement = false;
+	                    }
+	                    else {
+	                        this.reinterpretExpressionAsPattern(expr);
+	                    }
+	                    token = this.nextToken();
+	                    var right = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	                    expr = this.finalize(this.startNode(startToken), new Node.AssignmentExpression(token.value, expr, right));
+	                    this.context.firstCoverInitializedNameError = null;
+	                }
+	            }
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 12.16 Comma Operator
+	    Parser.prototype.parseExpression = function () {
+	        var startToken = this.lookahead;
+	        var expr = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	        if (this.match(',')) {
+	            var expressions = [];
+	            expressions.push(expr);
+	            while (this.startMarker.index < this.scanner.length) {
+	                if (!this.match(',')) {
+	                    break;
+	                }
+	                this.nextToken();
+	                expressions.push(this.isolateCoverGrammar(this.parseAssignmentExpression));
+	            }
+	            expr = this.finalize(this.startNode(startToken), new Node.SequenceExpression(expressions));
+	        }
+	        return expr;
+	    };
+	    // ECMA-262 13.2 Block
+	    Parser.prototype.parseStatementListItem = function () {
+	        var statement = null;
+	        this.context.isAssignmentTarget = true;
+	        this.context.isBindingElement = true;
+	        if (this.lookahead.type === token_1.Token.Keyword) {
+	            switch (this.lookahead.value) {
+	                case 'export':
+	                    if (this.sourceType !== 'module') {
+	                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalExportDeclaration);
+	                    }
+	                    statement = this.parseExportDeclaration();
+	                    break;
+	                case 'import':
+	                    if (this.sourceType !== 'module') {
+	                        this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.IllegalImportDeclaration);
+	                    }
+	                    statement = this.parseImportDeclaration();
+	                    break;
+	                case 'const':
+	                    statement = this.parseLexicalDeclaration({ inFor: false });
+	                    break;
+	                case 'function':
+	                    statement = this.parseFunctionDeclaration();
+	                    break;
+	                case 'class':
+	                    statement = this.parseClassDeclaration();
+	                    break;
+	                case 'let':
+	                    statement = this.isLexicalDeclaration() ? this.parseLexicalDeclaration({ inFor: false }) : this.parseStatement();
+	                    break;
+	                default:
+	                    statement = this.parseStatement();
+	                    break;
+	            }
+	        }
+	        else {
+	            statement = this.parseStatement();
+	        }
+	        return statement;
+	    };
+	    Parser.prototype.parseBlock = function () {
+	        var node = this.createNode();
+	        this.expect('{');
+	        var block = [];
+	        while (true) {
+	            if (this.match('}')) {
+	                break;
+	            }
+	            block.push(this.parseStatementListItem());
+	        }
+	        this.expect('}');
+	        return this.finalize(node, new Node.BlockStatement(block));
+	    };
+	    // ECMA-262 13.3.1 Let and Const Declarations
+	    Parser.prototype.parseLexicalBinding = function (kind, options) {
+	        var node = this.createNode();
+	        var params = [];
+	        var id = this.parsePattern(params, kind);
+	        // ECMA-262 12.2.1
+	        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {
+	            if (this.scanner.isRestrictedWord((id).name)) {
+	                this.tolerateError(messages_1.Messages.StrictVarName);
+	            }
+	        }
+	        var init = null;
+	        if (kind === 'const') {
+	            if (!this.matchKeyword('in') && !this.matchContextualKeyword('of')) {
+	                this.expect('=');
+	                init = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	            }
+	        }
+	        else if ((!options.inFor && id.type !== syntax_1.Syntax.Identifier) || this.match('=')) {
+	            this.expect('=');
+	            init = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	        }
+	        return this.finalize(node, new Node.VariableDeclarator(id, init));
+	    };
+	    Parser.prototype.parseBindingList = function (kind, options) {
+	        var list = [this.parseLexicalBinding(kind, options)];
+	        while (this.match(',')) {
+	            this.nextToken();
+	            list.push(this.parseLexicalBinding(kind, options));
+	        }
+	        return list;
+	    };
+	    Parser.prototype.isLexicalDeclaration = function () {
+	        var previousIndex = this.scanner.index;
+	        var previousLineNumber = this.scanner.lineNumber;
+	        var previousLineStart = this.scanner.lineStart;
+	        this.collectComments();
+	        var next = this.scanner.lex();
+	        this.scanner.index = previousIndex;
+	        this.scanner.lineNumber = previousLineNumber;
+	        this.scanner.lineStart = previousLineStart;
+	        return (next.type === token_1.Token.Identifier) ||
+	            (next.type === token_1.Token.Punctuator && next.value === '[') ||
+	            (next.type === token_1.Token.Punctuator && next.value === '{') ||
+	            (next.type === token_1.Token.Keyword && next.value === 'let') ||
+	            (next.type === token_1.Token.Keyword && next.value === 'yield');
+	    };
+	    Parser.prototype.parseLexicalDeclaration = function (options) {
+	        var node = this.createNode();
+	        var kind = this.nextToken().value;
+	        assert_1.assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');
+	        var declarations = this.parseBindingList(kind, options);
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.VariableDeclaration(declarations, kind));
+	    };
+	    // ECMA-262 13.3.3 Destructuring Binding Patterns
+	    Parser.prototype.parseBindingRestElement = function (params, kind) {
+	        var node = this.createNode();
+	        this.expect('...');
+	        var arg = this.parsePattern(params, kind);
+	        return this.finalize(node, new Node.RestElement(arg));
+	    };
+	    Parser.prototype.parseArrayPattern = function (params, kind) {
+	        var node = this.createNode();
+	        this.expect('[');
+	        var elements = [];
+	        while (!this.match(']')) {
+	            if (this.match(',')) {
+	                this.nextToken();
+	                elements.push(null);
+	            }
+	            else {
+	                if (this.match('...')) {
+	                    elements.push(this.parseBindingRestElement(params, kind));
+	                    break;
+	                }
+	                else {
+	                    elements.push(this.parsePatternWithDefault(params, kind));
+	                }
+	                if (!this.match(']')) {
+	                    this.expect(',');
+	                }
+	            }
+	        }
+	        this.expect(']');
+	        return this.finalize(node, new Node.ArrayPattern(elements));
+	    };
+	    Parser.prototype.parsePropertyPattern = function (params, kind) {
+	        var node = this.createNode();
+	        var computed = false;
+	        var shorthand = false;
+	        var method = false;
+	        var key;
+	        var value;
+	        if (this.lookahead.type === token_1.Token.Identifier) {
+	            var keyToken = this.lookahead;
+	            key = this.parseVariableIdentifier();
+	            var init = this.finalize(node, new Node.Identifier(keyToken.value));
+	            if (this.match('=')) {
+	                params.push(keyToken);
+	                shorthand = true;
+	                this.nextToken();
+	                var expr = this.parseAssignmentExpression();
+	                value = this.finalize(this.startNode(keyToken), new Node.AssignmentPattern(init, expr));
+	            }
+	            else if (!this.match(':')) {
+	                params.push(keyToken);
+	                shorthand = true;
+	                value = init;
+	            }
+	            else {
+	                this.expect(':');
+	                value = this.parsePatternWithDefault(params, kind);
+	            }
+	        }
+	        else {
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            this.expect(':');
+	            value = this.parsePatternWithDefault(params, kind);
+	        }
+	        return this.finalize(node, new Node.Property('init', key, computed, value, method, shorthand));
+	    };
+	    Parser.prototype.parseObjectPattern = function (params, kind) {
+	        var node = this.createNode();
+	        var properties = [];
+	        this.expect('{');
+	        while (!this.match('}')) {
+	            properties.push(this.parsePropertyPattern(params, kind));
+	            if (!this.match('}')) {
+	                this.expect(',');
+	            }
+	        }
+	        this.expect('}');
+	        return this.finalize(node, new Node.ObjectPattern(properties));
+	    };
+	    Parser.prototype.parsePattern = function (params, kind) {
+	        var pattern;
+	        if (this.match('[')) {
+	            pattern = this.parseArrayPattern(params, kind);
+	        }
+	        else if (this.match('{')) {
+	            pattern = this.parseObjectPattern(params, kind);
+	        }
+	        else {
+	            if (this.matchKeyword('let') && (kind === 'const' || kind === 'let')) {
+	                this.tolerateUnexpectedToken(this.lookahead, messages_1.Messages.UnexpectedToken);
+	            }
+	            params.push(this.lookahead);
+	            pattern = this.parseVariableIdentifier(kind);
+	        }
+	        return pattern;
+	    };
+	    Parser.prototype.parsePatternWithDefault = function (params, kind) {
+	        var startToken = this.lookahead;
+	        var pattern = this.parsePattern(params, kind);
+	        if (this.match('=')) {
+	            this.nextToken();
+	            var previousAllowYield = this.context.allowYield;
+	            this.context.allowYield = true;
+	            var right = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	            this.context.allowYield = previousAllowYield;
+	            pattern = this.finalize(this.startNode(startToken), new Node.AssignmentPattern(pattern, right));
+	        }
+	        return pattern;
+	    };
+	    // ECMA-262 13.3.2 Variable Statement
+	    Parser.prototype.parseVariableIdentifier = function (kind) {
+	        var node = this.createNode();
+	        var token = this.nextToken();
+	        if (token.type === token_1.Token.Keyword && token.value === 'yield') {
+	            if (this.context.strict) {
+	                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
+	            }
+	            if (!this.context.allowYield) {
+	                this.throwUnexpectedToken(token);
+	            }
+	        }
+	        else if (token.type !== token_1.Token.Identifier) {
+	            if (this.context.strict && token.type === token_1.Token.Keyword && this.scanner.isStrictModeReservedWord(token.value)) {
+	                this.tolerateUnexpectedToken(token, messages_1.Messages.StrictReservedWord);
+	            }
+	            else {
+	                if (this.context.strict || token.value !== 'let' || kind !== 'var') {
+	                    this.throwUnexpectedToken(token);
+	                }
+	            }
+	        }
+	        else if (this.sourceType === 'module' && token.type === token_1.Token.Identifier && token.value === 'await') {
+	            this.tolerateUnexpectedToken(token);
+	        }
+	        return this.finalize(node, new Node.Identifier(token.value));
+	    };
+	    Parser.prototype.parseVariableDeclaration = function (options) {
+	        var node = this.createNode();
+	        var params = [];
+	        var id = this.parsePattern(params, 'var');
+	        // ECMA-262 12.2.1
+	        if (this.context.strict && id.type === syntax_1.Syntax.Identifier) {
+	            if (this.scanner.isRestrictedWord((id).name)) {
+	                this.tolerateError(messages_1.Messages.StrictVarName);
+	            }
+	        }
+	        var init = null;
+	        if (this.match('=')) {
+	            this.nextToken();
+	            init = this.isolateCoverGrammar(this.parseAssignmentExpression);
+	        }
+	        else if (id.type !== syntax_1.Syntax.Identifier && !options.inFor) {
+	            this.expect('=');
+	        }
+	        return this.finalize(node, new Node.VariableDeclarator(id, init));
+	    };
+	    Parser.prototype.parseVariableDeclarationList = function (options) {
+	        var opt = { inFor: options.inFor };
+	        var list = [];
+	        list.push(this.parseVariableDeclaration(opt));
+	        while (this.match(',')) {
+	            this.nextToken();
+	            list.push(this.parseVariableDeclaration(opt));
+	        }
+	        return list;
+	    };
+	    Parser.prototype.parseVariableStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('var');
+	        var declarations = this.parseVariableDeclarationList({ inFor: false });
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.VariableDeclaration(declarations, 'var'));
+	    };
+	    // ECMA-262 13.4 Empty Statement
+	    Parser.prototype.parseEmptyStatement = function () {
+	        var node = this.createNode();
+	        this.expect(';');
+	        return this.finalize(node, new Node.EmptyStatement());
+	    };
+	    // ECMA-262 13.5 Expression Statement
+	    Parser.prototype.parseExpressionStatement = function () {
+	        var node = this.createNode();
+	        var expr = this.parseExpression();
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.ExpressionStatement(expr));
+	    };
+	    // ECMA-262 13.6 If statement
+	    Parser.prototype.parseIfStatement = function () {
+	        var node = this.createNode();
+	        var consequent;
+	        var alternate = null;
+	        this.expectKeyword('if');
+	        this.expect('(');
+	        var test = this.parseExpression();
+	        if (!this.match(')') && this.config.tolerant) {
+	            this.tolerateUnexpectedToken(this.nextToken());
+	            consequent = this.finalize(this.createNode(), new Node.EmptyStatement());
+	        }
+	        else {
+	            this.expect(')');
+	            consequent = this.parseStatement();
+	            if (this.matchKeyword('else')) {
+	                this.nextToken();
+	                alternate = this.parseStatement();
+	            }
+	        }
+	        return this.finalize(node, new Node.IfStatement(test, consequent, alternate));
+	    };
+	    // ECMA-262 13.7.2 The do-while Statement
+	    Parser.prototype.parseDoWhileStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('do');
+	        var previousInIteration = this.context.inIteration;
+	        this.context.inIteration = true;
+	        var body = this.parseStatement();
+	        this.context.inIteration = previousInIteration;
+	        this.expectKeyword('while');
+	        this.expect('(');
+	        var test = this.parseExpression();
+	        this.expect(')');
+	        if (this.match(';')) {
+	            this.nextToken();
+	        }
+	        return this.finalize(node, new Node.DoWhileStatement(body, test));
+	    };
+	    // ECMA-262 13.7.3 The while Statement
+	    Parser.prototype.parseWhileStatement = function () {
+	        var node = this.createNode();
+	        var body;
+	        this.expectKeyword('while');
+	        this.expect('(');
+	        var test = this.parseExpression();
+	        if (!this.match(')') && this.config.tolerant) {
+	            this.tolerateUnexpectedToken(this.nextToken());
+	            body = this.finalize(this.createNode(), new Node.EmptyStatement());
+	        }
+	        else {
+	            this.expect(')');
+	            var previousInIteration = this.context.inIteration;
+	            this.context.inIteration = true;
+	            body = this.parseStatement();
+	            this.context.inIteration = previousInIteration;
+	        }
+	        return this.finalize(node, new Node.WhileStatement(test, body));
+	    };
+	    // ECMA-262 13.7.4 The for Statement
+	    // ECMA-262 13.7.5 The for-in and for-of Statements
+	    Parser.prototype.parseForStatement = function () {
+	        var init = null;
+	        var test = null;
+	        var update = null;
+	        var forIn = true;
+	        var left, right;
+	        var node = this.createNode();
+	        this.expectKeyword('for');
+	        this.expect('(');
+	        if (this.match(';')) {
+	            this.nextToken();
+	        }
+	        else {
+	            if (this.matchKeyword('var')) {
+	                init = this.createNode();
+	                this.nextToken();
+	                var previousAllowIn = this.context.allowIn;
+	                this.context.allowIn = false;
+	                var declarations = this.parseVariableDeclarationList({ inFor: true });
+	                this.context.allowIn = previousAllowIn;
+	                if (declarations.length === 1 && this.matchKeyword('in')) {
+	                    var decl = declarations[0];
+	                    if (decl.init && (decl.id.type === syntax_1.Syntax.ArrayPattern || decl.id.type === syntax_1.Syntax.ObjectPattern || this.context.strict)) {
+	                        this.tolerateError(messages_1.Messages.ForInOfLoopInitializer, 'for-in');
+	                    }
+	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
+	                    this.nextToken();
+	                    left = init;
+	                    right = this.parseExpression();
+	                    init = null;
+	                }
+	                else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {
+	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
+	                    this.nextToken();
+	                    left = init;
+	                    right = this.parseAssignmentExpression();
+	                    init = null;
+	                    forIn = false;
+	                }
+	                else {
+	                    init = this.finalize(init, new Node.VariableDeclaration(declarations, 'var'));
+	                    this.expect(';');
+	                }
+	            }
+	            else if (this.matchKeyword('const') || this.matchKeyword('let')) {
+	                init = this.createNode();
+	                var kind = this.nextToken().value;
+	                if (!this.context.strict && this.lookahead.value === 'in') {
+	                    init = this.finalize(init, new Node.Identifier(kind));
+	                    this.nextToken();
+	                    left = init;
+	                    right = this.parseExpression();
+	                    init = null;
+	                }
+	                else {
+	                    var previousAllowIn = this.context.allowIn;
+	                    this.context.allowIn = false;
+	                    var declarations = this.parseBindingList(kind, { inFor: true });
+	                    this.context.allowIn = previousAllowIn;
+	                    if (declarations.length === 1 && declarations[0].init === null && this.matchKeyword('in')) {
+	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
+	                        this.nextToken();
+	                        left = init;
+	                        right = this.parseExpression();
+	                        init = null;
+	                    }
+	                    else if (declarations.length === 1 && declarations[0].init === null && this.matchContextualKeyword('of')) {
+	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
+	                        this.nextToken();
+	                        left = init;
+	                        right = this.parseAssignmentExpression();
+	                        init = null;
+	                        forIn = false;
+	                    }
+	                    else {
+	                        this.consumeSemicolon();
+	                        init = this.finalize(init, new Node.VariableDeclaration(declarations, kind));
+	                    }
+	                }
+	            }
+	            else {
+	                var initStartToken = this.lookahead;
+	                var previousAllowIn = this.context.allowIn;
+	                this.context.allowIn = false;
+	                init = this.inheritCoverGrammar(this.parseAssignmentExpression);
+	                this.context.allowIn = previousAllowIn;
+	                if (this.matchKeyword('in')) {
+	                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {
+	                        this.tolerateError(messages_1.Messages.InvalidLHSInForIn);
+	                    }
+	                    this.nextToken();
+	                    this.reinterpretExpressionAsPattern(init);
+	                    left = init;
+	                    right = this.parseExpression();
+	                    init = null;
+	                }
+	                else if (this.matchContextualKeyword('of')) {
+	                    if (!this.context.isAssignmentTarget || init.type === syntax_1.Syntax.AssignmentExpression) {
+	                        this.tolerateError(messages_1.Messages.InvalidLHSInForLoop);
+	                    }
+	                    this.nextToken();
+	                    this.reinterpretExpressionAsPattern(init);
+	                    left = init;
+	                    right = this.parseAssignmentExpression();
+	                    init = null;
+	                    forIn = false;
+	                }
+	                else {
+	                    if (this.match(',')) {
+	                        var initSeq = [init];
+	                        while (this.match(',')) {
+	                            this.nextToken();
+	                            initSeq.push(this.isolateCoverGrammar(this.parseAssignmentExpression));
+	                        }
+	                        init = this.finalize(this.startNode(initStartToken), new Node.SequenceExpression(initSeq));
+	                    }
+	                    this.expect(';');
+	                }
+	            }
+	        }
+	        if (typeof left === 'undefined') {
+	            if (!this.match(';')) {
+	                test = this.parseExpression();
+	            }
+	            this.expect(';');
+	            if (!this.match(')')) {
+	                update = this.parseExpression();
+	            }
+	        }
+	        var body;
+	        if (!this.match(')') && this.config.tolerant) {
+	            this.tolerateUnexpectedToken(this.nextToken());
+	            body = this.finalize(this.createNode(), new Node.EmptyStatement());
+	        }
+	        else {
+	            this.expect(')');
+	            var previousInIteration = this.context.inIteration;
+	            this.context.inIteration = true;
+	            body = this.isolateCoverGrammar(this.parseStatement);
+	            this.context.inIteration = previousInIteration;
+	        }
+	        return (typeof left === 'undefined') ?
+	            this.finalize(node, new Node.ForStatement(init, test, update, body)) :
+	            forIn ? this.finalize(node, new Node.ForInStatement(left, right, body)) :
+	                this.finalize(node, new Node.ForOfStatement(left, right, body));
+	    };
+	    // ECMA-262 13.8 The continue statement
+	    Parser.prototype.parseContinueStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('continue');
+	        var label = null;
+	        if (this.lookahead.type === token_1.Token.Identifier && !this.hasLineTerminator) {
+	            label = this.parseVariableIdentifier();
+	            var key = '$' + label.name;
+	            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
+	                this.throwError(messages_1.Messages.UnknownLabel, label.name);
+	            }
+	        }
+	        this.consumeSemicolon();
+	        if (label === null && !this.context.inIteration) {
+	            this.throwError(messages_1.Messages.IllegalContinue);
+	        }
+	        return this.finalize(node, new Node.ContinueStatement(label));
+	    };
+	    // ECMA-262 13.9 The break statement
+	    Parser.prototype.parseBreakStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('break');
+	        var label = null;
+	        if (this.lookahead.type === token_1.Token.Identifier && !this.hasLineTerminator) {
+	            label = this.parseVariableIdentifier();
+	            var key = '$' + label.name;
+	            if (!Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
+	                this.throwError(messages_1.Messages.UnknownLabel, label.name);
+	            }
+	        }
+	        this.consumeSemicolon();
+	        if (label === null && !this.context.inIteration && !this.context.inSwitch) {
+	            this.throwError(messages_1.Messages.IllegalBreak);
+	        }
+	        return this.finalize(node, new Node.BreakStatement(label));
+	    };
+	    // ECMA-262 13.10 The return statement
+	    Parser.prototype.parseReturnStatement = function () {
+	        if (!this.context.inFunctionBody) {
+	            this.tolerateError(messages_1.Messages.IllegalReturn);
+	        }
+	        var node = this.createNode();
+	        this.expectKeyword('return');
+	        var hasArgument = !this.match(';') && !this.match('}') &&
+	            !this.hasLineTerminator && this.lookahead.type !== token_1.Token.EOF;
+	        var argument = hasArgument ? this.parseExpression() : null;
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.ReturnStatement(argument));
+	    };
+	    // ECMA-262 13.11 The with statement
+	    Parser.prototype.parseWithStatement = function () {
+	        if (this.context.strict) {
+	            this.tolerateError(messages_1.Messages.StrictModeWith);
+	        }
+	        var node = this.createNode();
+	        this.expectKeyword('with');
+	        this.expect('(');
+	        var object = this.parseExpression();
+	        this.expect(')');
+	        var body = this.parseStatement();
+	        return this.finalize(node, new Node.WithStatement(object, body));
+	    };
+	    // ECMA-262 13.12 The switch statement
+	    Parser.prototype.parseSwitchCase = function () {
+	        var node = this.createNode();
+	        var test;
+	        if (this.matchKeyword('default')) {
+	            this.nextToken();
+	            test = null;
+	        }
+	        else {
+	            this.expectKeyword('case');
+	            test = this.parseExpression();
+	        }
+	        this.expect(':');
+	        var consequent = [];
+	        while (true) {
+	            if (this.match('}') || this.matchKeyword('default') || this.matchKeyword('case')) {
+	                break;
+	            }
+	            consequent.push(this.parseStatementListItem());
+	        }
+	        return this.finalize(node, new Node.SwitchCase(test, consequent));
+	    };
+	    Parser.prototype.parseSwitchStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('switch');
+	        this.expect('(');
+	        var discriminant = this.parseExpression();
+	        this.expect(')');
+	        var previousInSwitch = this.context.inSwitch;
+	        this.context.inSwitch = true;
+	        var cases = [];
+	        var defaultFound = false;
+	        this.expect('{');
+	        while (true) {
+	            if (this.match('}')) {
+	                break;
+	            }
+	            var clause = this.parseSwitchCase();
+	            if (clause.test === null) {
+	                if (defaultFound) {
+	                    this.throwError(messages_1.Messages.MultipleDefaultsInSwitch);
+	                }
+	                defaultFound = true;
+	            }
+	            cases.push(clause);
+	        }
+	        this.expect('}');
+	        this.context.inSwitch = previousInSwitch;
+	        return this.finalize(node, new Node.SwitchStatement(discriminant, cases));
+	    };
+	    // ECMA-262 13.13 Labelled Statements
+	    Parser.prototype.parseLabelledStatement = function () {
+	        var node = this.createNode();
+	        var expr = this.parseExpression();
+	        var statement;
+	        if ((expr.type === syntax_1.Syntax.Identifier) && this.match(':')) {
+	            this.nextToken();
+	            var id = (expr);
+	            var key = '$' + id.name;
+	            if (Object.prototype.hasOwnProperty.call(this.context.labelSet, key)) {
+	                this.throwError(messages_1.Messages.Redeclaration, 'Label', id.name);
+	            }
+	            this.context.labelSet[key] = true;
+	            var labeledBody = this.parseStatement();
+	            delete this.context.labelSet[key];
+	            statement = new Node.LabeledStatement(id, labeledBody);
+	        }
+	        else {
+	            this.consumeSemicolon();
+	            statement = new Node.ExpressionStatement(expr);
+	        }
+	        return this.finalize(node, statement);
+	    };
+	    // ECMA-262 13.14 The throw statement
+	    Parser.prototype.parseThrowStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('throw');
+	        if (this.hasLineTerminator) {
+	            this.throwError(messages_1.Messages.NewlineAfterThrow);
+	        }
+	        var argument = this.parseExpression();
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.ThrowStatement(argument));
+	    };
+	    // ECMA-262 13.15 The try statement
+	    Parser.prototype.parseCatchClause = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('catch');
+	        this.expect('(');
+	        if (this.match(')')) {
+	            this.throwUnexpectedToken(this.lookahead);
+	        }
+	        var params = [];
+	        var param = this.parsePattern(params);
+	        var paramMap = {};
+	        for (var i = 0; i < params.length; i++) {
+	            var key = '$' + params[i].value;
+	            if (Object.prototype.hasOwnProperty.call(paramMap, key)) {
+	                this.tolerateError(messages_1.Messages.DuplicateBinding, params[i].value);
+	            }
+	            paramMap[key] = true;
+	        }
+	        if (this.context.strict && param.type === syntax_1.Syntax.Identifier) {
+	            if (this.scanner.isRestrictedWord((param).name)) {
+	                this.tolerateError(messages_1.Messages.StrictCatchVariable);
+	            }
+	        }
+	        this.expect(')');
+	        var body = this.parseBlock();
+	        return this.finalize(node, new Node.CatchClause(param, body));
+	    };
+	    Parser.prototype.parseFinallyClause = function () {
+	        this.expectKeyword('finally');
+	        return this.parseBlock();
+	    };
+	    Parser.prototype.parseTryStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('try');
+	        var block = this.parseBlock();
+	        var handler = this.matchKeyword('catch') ? this.parseCatchClause() : null;
+	        var finalizer = this.matchKeyword('finally') ? this.parseFinallyClause() : null;
+	        if (!handler && !finalizer) {
+	            this.throwError(messages_1.Messages.NoCatchOrFinally);
+	        }
+	        return this.finalize(node, new Node.TryStatement(block, handler, finalizer));
+	    };
+	    // ECMA-262 13.16 The debugger statement
+	    Parser.prototype.parseDebuggerStatement = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('debugger');
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.DebuggerStatement());
+	    };
+	    // ECMA-262 13 Statements
+	    Parser.prototype.parseStatement = function () {
+	        var statement = null;
+	        switch (this.lookahead.type) {
+	            case token_1.Token.BooleanLiteral:
+	            case token_1.Token.NullLiteral:
+	            case token_1.Token.NumericLiteral:
+	            case token_1.Token.StringLiteral:
+	            case token_1.Token.Template:
+	            case token_1.Token.RegularExpression:
+	                statement = this.parseExpressionStatement();
+	                break;
+	            case token_1.Token.Punctuator:
+	                var value = this.lookahead.value;
+	                if (value === '{') {
+	                    statement = this.parseBlock();
+	                }
+	                else if (value === '(') {
+	                    statement = this.parseExpressionStatement();
+	                }
+	                else if (value === ';') {
+	                    statement = this.parseEmptyStatement();
+	                }
+	                else {
+	                    statement = this.parseExpressionStatement();
+	                }
+	                break;
+	            case token_1.Token.Identifier:
+	                statement = this.parseLabelledStatement();
+	                break;
+	            case token_1.Token.Keyword:
+	                switch (this.lookahead.value) {
+	                    case 'break':
+	                        statement = this.parseBreakStatement();
+	                        break;
+	                    case 'continue':
+	                        statement = this.parseContinueStatement();
+	                        break;
+	                    case 'debugger':
+	                        statement = this.parseDebuggerStatement();
+	                        break;
+	                    case 'do':
+	                        statement = this.parseDoWhileStatement();
+	                        break;
+	                    case 'for':
+	                        statement = this.parseForStatement();
+	                        break;
+	                    case 'function':
+	                        statement = this.parseFunctionDeclaration();
+	                        break;
+	                    case 'if':
+	                        statement = this.parseIfStatement();
+	                        break;
+	                    case 'return':
+	                        statement = this.parseReturnStatement();
+	                        break;
+	                    case 'switch':
+	                        statement = this.parseSwitchStatement();
+	                        break;
+	                    case 'throw':
+	                        statement = this.parseThrowStatement();
+	                        break;
+	                    case 'try':
+	                        statement = this.parseTryStatement();
+	                        break;
+	                    case 'var':
+	                        statement = this.parseVariableStatement();
+	                        break;
+	                    case 'while':
+	                        statement = this.parseWhileStatement();
+	                        break;
+	                    case 'with':
+	                        statement = this.parseWithStatement();
+	                        break;
+	                    default:
+	                        statement = this.parseExpressionStatement();
+	                        break;
+	                }
+	                break;
+	            default:
+	                this.throwUnexpectedToken(this.lookahead);
+	        }
+	        return statement;
+	    };
+	    // ECMA-262 14.1 Function Definition
+	    Parser.prototype.parseFunctionSourceElements = function () {
+	        var node = this.createNode();
+	        this.expect('{');
+	        var body = this.parseDirectivePrologues();
+	        var previousLabelSet = this.context.labelSet;
+	        var previousInIteration = this.context.inIteration;
+	        var previousInSwitch = this.context.inSwitch;
+	        var previousInFunctionBody = this.context.inFunctionBody;
+	        this.context.labelSet = {};
+	        this.context.inIteration = false;
+	        this.context.inSwitch = false;
+	        this.context.inFunctionBody = true;
+	        while (this.startMarker.index < this.scanner.length) {
+	            if (this.match('}')) {
+	                break;
+	            }
+	            body.push(this.parseStatementListItem());
+	        }
+	        this.expect('}');
+	        this.context.labelSet = previousLabelSet;
+	        this.context.inIteration = previousInIteration;
+	        this.context.inSwitch = previousInSwitch;
+	        this.context.inFunctionBody = previousInFunctionBody;
+	        return this.finalize(node, new Node.BlockStatement(body));
+	    };
+	    Parser.prototype.validateParam = function (options, param, name) {
+	        var key = '$' + name;
+	        if (this.context.strict) {
+	            if (this.scanner.isRestrictedWord(name)) {
+	                options.stricted = param;
+	                options.message = messages_1.Messages.StrictParamName;
+	            }
+	            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
+	                options.stricted = param;
+	                options.message = messages_1.Messages.StrictParamDupe;
+	            }
+	        }
+	        else if (!options.firstRestricted) {
+	            if (this.scanner.isRestrictedWord(name)) {
+	                options.firstRestricted = param;
+	                options.message = messages_1.Messages.StrictParamName;
+	            }
+	            else if (this.scanner.isStrictModeReservedWord(name)) {
+	                options.firstRestricted = param;
+	                options.message = messages_1.Messages.StrictReservedWord;
+	            }
+	            else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
+	                options.stricted = param;
+	                options.message = messages_1.Messages.StrictParamDupe;
+	            }
+	        }
+	        /* istanbul ignore next */
+	        if (typeof Object.defineProperty === 'function') {
+	            Object.defineProperty(options.paramSet, key, { value: true, enumerable: true, writable: true, configurable: true });
+	        }
+	        else {
+	            options.paramSet[key] = true;
+	        }
+	    };
+	    Parser.prototype.parseRestElement = function (params) {
+	        var node = this.createNode();
+	        this.expect('...');
+	        var arg = this.parsePattern(params);
+	        if (this.match('=')) {
+	            this.throwError(messages_1.Messages.DefaultRestParameter);
+	        }
+	        if (!this.match(')')) {
+	            this.throwError(messages_1.Messages.ParameterAfterRestParameter);
+	        }
+	        return this.finalize(node, new Node.RestElement(arg));
+	    };
+	    Parser.prototype.parseFormalParameter = function (options) {
+	        var params = [];
+	        var param = this.match('...') ? this.parseRestElement(params) : this.parsePatternWithDefault(params);
+	        for (var i = 0; i < params.length; i++) {
+	            this.validateParam(options, params[i], params[i].value);
+	        }
+	        options.params.push(param);
+	        return !this.match(')');
+	    };
+	    Parser.prototype.parseFormalParameters = function (firstRestricted) {
+	        var options;
+	        options = {
+	            params: [],
+	            firstRestricted: firstRestricted
+	        };
+	        this.expect('(');
+	        if (!this.match(')')) {
+	            options.paramSet = {};
+	            while (this.startMarker.index < this.scanner.length) {
+	                if (!this.parseFormalParameter(options)) {
+	                    break;
+	                }
+	                this.expect(',');
+	            }
+	        }
+	        this.expect(')');
+	        return {
+	            params: options.params,
+	            stricted: options.stricted,
+	            firstRestricted: options.firstRestricted,
+	            message: options.message
+	        };
+	    };
+	    Parser.prototype.parseFunctionDeclaration = function (identifierIsOptional) {
+	        var node = this.createNode();
+	        this.expectKeyword('function');
+	        var isGenerator = this.match('*');
+	        if (isGenerator) {
+	            this.nextToken();
+	        }
+	        var message;
+	        var id = null;
+	        var firstRestricted = null;
+	        if (!identifierIsOptional || !this.match('(')) {
+	            var token = this.lookahead;
+	            id = this.parseVariableIdentifier();
+	            if (this.context.strict) {
+	                if (this.scanner.isRestrictedWord(token.value)) {
+	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);
+	                }
+	            }
+	            else {
+	                if (this.scanner.isRestrictedWord(token.value)) {
+	                    firstRestricted = token;
+	                    message = messages_1.Messages.StrictFunctionName;
+	                }
+	                else if (this.scanner.isStrictModeReservedWord(token.value)) {
+	                    firstRestricted = token;
+	                    message = messages_1.Messages.StrictReservedWord;
+	                }
+	            }
+	        }
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = !isGenerator;
+	        var formalParameters = this.parseFormalParameters(firstRestricted);
+	        var params = formalParameters.params;
+	        var stricted = formalParameters.stricted;
+	        firstRestricted = formalParameters.firstRestricted;
+	        if (formalParameters.message) {
+	            message = formalParameters.message;
+	        }
+	        var previousStrict = this.context.strict;
+	        var body = this.parseFunctionSourceElements();
+	        if (this.context.strict && firstRestricted) {
+	            this.throwUnexpectedToken(firstRestricted, message);
+	        }
+	        if (this.context.strict && stricted) {
+	            this.tolerateUnexpectedToken(stricted, message);
+	        }
+	        this.context.strict = previousStrict;
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionDeclaration(id, params, body, isGenerator));
+	    };
+	    Parser.prototype.parseFunctionExpression = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('function');
+	        var isGenerator = this.match('*');
+	        if (isGenerator) {
+	            this.nextToken();
+	        }
+	        var message;
+	        var id = null;
+	        var firstRestricted;
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = !isGenerator;
+	        if (!this.match('(')) {
+	            var token = this.lookahead;
+	            id = (!this.context.strict && !isGenerator && this.matchKeyword('yield')) ? this.parseIdentifierName() : this.parseVariableIdentifier();
+	            if (this.context.strict) {
+	                if (this.scanner.isRestrictedWord(token.value)) {
+	                    this.tolerateUnexpectedToken(token, messages_1.Messages.StrictFunctionName);
+	                }
+	            }
+	            else {
+	                if (this.scanner.isRestrictedWord(token.value)) {
+	                    firstRestricted = token;
+	                    message = messages_1.Messages.StrictFunctionName;
+	                }
+	                else if (this.scanner.isStrictModeReservedWord(token.value)) {
+	                    firstRestricted = token;
+	                    message = messages_1.Messages.StrictReservedWord;
+	                }
+	            }
+	        }
+	        var formalParameters = this.parseFormalParameters(firstRestricted);
+	        var params = formalParameters.params;
+	        var stricted = formalParameters.stricted;
+	        firstRestricted = formalParameters.firstRestricted;
+	        if (formalParameters.message) {
+	            message = formalParameters.message;
+	        }
+	        var previousStrict = this.context.strict;
+	        var body = this.parseFunctionSourceElements();
+	        if (this.context.strict && firstRestricted) {
+	            this.throwUnexpectedToken(firstRestricted, message);
+	        }
+	        if (this.context.strict && stricted) {
+	            this.tolerateUnexpectedToken(stricted, message);
+	        }
+	        this.context.strict = previousStrict;
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionExpression(id, params, body, isGenerator));
+	    };
+	    // ECMA-262 14.1.1 Directive Prologues
+	    Parser.prototype.parseDirective = function () {
+	        var token = this.lookahead;
+	        var directive = null;
+	        var node = this.createNode();
+	        var expr = this.parseExpression();
+	        if (expr.type === syntax_1.Syntax.Literal) {
+	            directive = this.getTokenRaw(token).slice(1, -1);
+	        }
+	        this.consumeSemicolon();
+	        return this.finalize(node, directive ? new Node.Directive(expr, directive) :
+	            new Node.ExpressionStatement(expr));
+	    };
+	    Parser.prototype.parseDirectivePrologues = function () {
+	        var firstRestricted = null;
+	        var body = [];
+	        while (true) {
+	            var token = this.lookahead;
+	            if (token.type !== token_1.Token.StringLiteral) {
+	                break;
+	            }
+	            var statement = this.parseDirective();
+	            body.push(statement);
+	            var directive = statement.directive;
+	            if (typeof directive !== 'string') {
+	                break;
+	            }
+	            if (directive === 'use strict') {
+	                this.context.strict = true;
+	                if (firstRestricted) {
+	                    this.tolerateUnexpectedToken(firstRestricted, messages_1.Messages.StrictOctalLiteral);
+	                }
+	            }
+	            else {
+	                if (!firstRestricted && token.octal) {
+	                    firstRestricted = token;
+	                }
+	            }
+	        }
+	        return body;
+	    };
+	    // ECMA-262 14.3 Method Definitions
+	    Parser.prototype.qualifiedPropertyName = function (token) {
+	        switch (token.type) {
+	            case token_1.Token.Identifier:
+	            case token_1.Token.StringLiteral:
+	            case token_1.Token.BooleanLiteral:
+	            case token_1.Token.NullLiteral:
+	            case token_1.Token.NumericLiteral:
+	            case token_1.Token.Keyword:
+	                return true;
+	            case token_1.Token.Punctuator:
+	                return token.value === '[';
+	        }
+	        return false;
+	    };
+	    Parser.prototype.parseGetterMethod = function () {
+	        var node = this.createNode();
+	        this.expect('(');
+	        this.expect(')');
+	        var isGenerator = false;
+	        var params = {
+	            params: [],
+	            stricted: null,
+	            firstRestricted: null,
+	            message: null
+	        };
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = false;
+	        var method = this.parsePropertyMethod(params);
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));
+	    };
+	    Parser.prototype.parseSetterMethod = function () {
+	        var node = this.createNode();
+	        var options = {
+	            params: [],
+	            firstRestricted: null,
+	            paramSet: {}
+	        };
+	        var isGenerator = false;
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = false;
+	        this.expect('(');
+	        if (this.match(')')) {
+	            this.tolerateUnexpectedToken(this.lookahead);
+	        }
+	        else {
+	            this.parseFormalParameter(options);
+	        }
+	        this.expect(')');
+	        var method = this.parsePropertyMethod(options);
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionExpression(null, options.params, method, isGenerator));
+	    };
+	    Parser.prototype.parseGeneratorMethod = function () {
+	        var node = this.createNode();
+	        var isGenerator = true;
+	        var previousAllowYield = this.context.allowYield;
+	        this.context.allowYield = true;
+	        var params = this.parseFormalParameters();
+	        this.context.allowYield = false;
+	        var method = this.parsePropertyMethod(params);
+	        this.context.allowYield = previousAllowYield;
+	        return this.finalize(node, new Node.FunctionExpression(null, params.params, method, isGenerator));
+	    };
+	    // ECMA-262 14.4 Generator Function Definitions
+	    Parser.prototype.isStartOfExpression = function () {
+	        var start = true;
+	        var value = this.lookahead.value;
+	        switch (this.lookahead.type) {
+	            case token_1.Token.Punctuator:
+	                start = (value === '[') || (value === '(') || (value === '{') ||
+	                    (value === '+') || (value === '-') ||
+	                    (value === '!') || (value === '~') ||
+	                    (value === '++') || (value === '--') ||
+	                    (value === '/') || (value === '/='); // regular expression literal
+	                break;
+	            case token_1.Token.Keyword:
+	                start = (value === 'class') || (value === 'delete') ||
+	                    (value === 'function') || (value === 'let') || (value === 'new') ||
+	                    (value === 'super') || (value === 'this') || (value === 'typeof') ||
+	                    (value === 'void') || (value === 'yield');
+	                break;
+	            default:
+	                break;
+	        }
+	        return start;
+	    };
+	    Parser.prototype.parseYieldExpression = function () {
+	        var node = this.createNode();
+	        this.expectKeyword('yield');
+	        var argument = null;
+	        var delegate = false;
+	        if (!this.hasLineTerminator) {
+	            var previousAllowYield = this.context.allowYield;
+	            this.context.allowYield = false;
+	            delegate = this.match('*');
+	            if (delegate) {
+	                this.nextToken();
+	                argument = this.parseAssignmentExpression();
+	            }
+	            else if (this.isStartOfExpression()) {
+	                argument = this.parseAssignmentExpression();
+	            }
+	            this.context.allowYield = previousAllowYield;
+	        }
+	        return this.finalize(node, new Node.YieldExpression(argument, delegate));
+	    };
+	    // ECMA-262 14.5 Class Definitions
+	    Parser.prototype.parseClassElement = function (hasConstructor) {
+	        var token = this.lookahead;
+	        var node = this.createNode();
+	        var kind;
+	        var key;
+	        var value;
+	        var computed = false;
+	        var method = false;
+	        var isStatic = false;
+	        if (this.match('*')) {
+	            this.nextToken();
+	        }
+	        else {
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            var id = key;
+	            if (id.name === 'static' && (this.qualifiedPropertyName(this.lookahead) || this.match('*'))) {
+	                token = this.lookahead;
+	                isStatic = true;
+	                computed = this.match('[');
+	                if (this.match('*')) {
+	                    this.nextToken();
+	                }
+	                else {
+	                    key = this.parseObjectPropertyKey();
+	                }
+	            }
+	        }
+	        var lookaheadPropertyKey = this.qualifiedPropertyName(this.lookahead);
+	        if (token.type === token_1.Token.Identifier) {
+	            if (token.value === 'get' && lookaheadPropertyKey) {
+	                kind = 'get';
+	                computed = this.match('[');
+	                key = this.parseObjectPropertyKey();
+	                this.context.allowYield = false;
+	                value = this.parseGetterMethod();
+	            }
+	            else if (token.value === 'set' && lookaheadPropertyKey) {
+	                kind = 'set';
+	                computed = this.match('[');
+	                key = this.parseObjectPropertyKey();
+	                value = this.parseSetterMethod();
+	            }
+	        }
+	        else if (token.type === token_1.Token.Punctuator && token.value === '*' && lookaheadPropertyKey) {
+	            kind = 'init';
+	            computed = this.match('[');
+	            key = this.parseObjectPropertyKey();
+	            value = this.parseGeneratorMethod();
+	            method = true;
+	        }
+	        if (!kind && key && this.match('(')) {
+	            kind = 'init';
+	            value = this.parsePropertyMethodFunction();
+	            method = true;
+	        }
+	        if (!kind) {
+	            this.throwUnexpectedToken(this.lookahead);
+	        }
+	        if (kind === 'init') {
+	            kind = 'method';
+	        }
+	        if (!computed) {
+	            if (isStatic && this.isPropertyKey(key, 'prototype')) {
+	                this.throwUnexpectedToken(token, messages_1.Messages.StaticPrototype);
+	            }
+	            if (!isStatic && this.isPropertyKey(key, 'constructor')) {
+	                if (kind !== 'method' || !method || value.generator) {
+	                    this.throwUnexpectedToken(token, messages_1.Messages.ConstructorSpecialMethod);
+	                }
+	                if (hasConstructor.value) {
+	                    this.throwUnexpectedToken(token, messages_1.Messages.DuplicateConstructor);
+	                }
+	                else {
+	                    hasConstructor.value = true;
+	                }
+	                kind = 'constructor';
+	            }
+	        }
+	        return this.finalize(node, new Node.MethodDefinition(key, computed, value, kind, isStatic));
+	    };
+	    Parser.prototype.parseClassElementList = function () {
+	        var body = [];
+	        var hasConstructor = { value: false };
+	        this.expect('{');
+	        while (!this.match('}')) {
+	            if (this.match(';')) {
+	                this.nextToken();
+	            }
+	            else {
+	                body.push(this.parseClassElement(hasConstructor));
+	            }
+	        }
+	        this.expect('}');
+	        return body;
+	    };
+	    Parser.prototype.parseClassBody = function () {
+	        var node = this.createNode();
+	        var elementList = this.parseClassElementList();
+	        return this.finalize(node, new Node.ClassBody(elementList));
+	    };
+	    Parser.prototype.parseClassDeclaration = function (identifierIsOptional) {
+	        var node = this.createNode();
+	        var previousStrict = this.context.strict;
+	        this.context.strict = true;
+	        this.expectKeyword('class');
+	        var id = (identifierIsOptional && (this.lookahead.type !== token_1.Token.Identifier)) ? null : this.parseVariableIdentifier();
+	        var superClass = null;
+	        if (this.matchKeyword('extends')) {
+	            this.nextToken();
+	            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
+	        }
+	        var classBody = this.parseClassBody();
+	        this.context.strict = previousStrict;
+	        return this.finalize(node, new Node.ClassDeclaration(id, superClass, classBody));
+	    };
+	    Parser.prototype.parseClassExpression = function () {
+	        var node = this.createNode();
+	        var previousStrict = this.context.strict;
+	        this.context.strict = true;
+	        this.expectKeyword('class');
+	        var id = (this.lookahead.type === token_1.Token.Identifier) ? this.parseVariableIdentifier() : null;
+	        var superClass = null;
+	        if (this.matchKeyword('extends')) {
+	            this.nextToken();
+	            superClass = this.isolateCoverGrammar(this.parseLeftHandSideExpressionAllowCall);
+	        }
+	        var classBody = this.parseClassBody();
+	        this.context.strict = previousStrict;
+	        return this.finalize(node, new Node.ClassExpression(id, superClass, classBody));
+	    };
+	    // ECMA-262 15.1 Scripts
+	    // ECMA-262 15.2 Modules
+	    Parser.prototype.parseProgram = function () {
+	        var node = this.createNode();
+	        var body = this.parseDirectivePrologues();
+	        while (this.startMarker.index < this.scanner.length) {
+	            body.push(this.parseStatementListItem());
+	        }
+	        return this.finalize(node, new Node.Program(body, this.sourceType));
+	    };
+	    // ECMA-262 15.2.2 Imports
+	    Parser.prototype.parseModuleSpecifier = function () {
+	        var node = this.createNode();
+	        if (this.lookahead.type !== token_1.Token.StringLiteral) {
+	            this.throwError(messages_1.Messages.InvalidModuleSpecifier);
+	        }
+	        var token = this.nextToken();
+	        var raw = this.getTokenRaw(token);
+	        return this.finalize(node, new Node.Literal(token.value, raw));
+	    };
+	    // import {} ...;
+	    Parser.prototype.parseImportSpecifier = function () {
+	        var node = this.createNode();
+	        var imported;
+	        var local;
+	        if (this.lookahead.type === token_1.Token.Identifier) {
+	            imported = this.parseVariableIdentifier();
+	            local = imported;
+	            if (this.matchContextualKeyword('as')) {
+	                this.nextToken();
+	                local = this.parseVariableIdentifier();
+	            }
+	        }
+	        else {
+	            imported = this.parseIdentifierName();
+	            local = imported;
+	            if (this.matchContextualKeyword('as')) {
+	                this.nextToken();
+	                local = this.parseVariableIdentifier();
+	            }
+	            else {
+	                this.throwUnexpectedToken(this.nextToken());
+	            }
+	        }
+	        return this.finalize(node, new Node.ImportSpecifier(local, imported));
+	    };
+	    // {foo, bar as bas}
+	    Parser.prototype.parseNamedImports = function () {
+	        this.expect('{');
+	        var specifiers = [];
+	        while (!this.match('}')) {
+	            specifiers.push(this.parseImportSpecifier());
+	            if (!this.match('}')) {
+	                this.expect(',');
+	            }
+	        }
+	        this.expect('}');
+	        return specifiers;
+	    };
+	    // import  ...;
+	    Parser.prototype.parseImportDefaultSpecifier = function () {
+	        var node = this.createNode();
+	        var local = this.parseIdentifierName();
+	        return this.finalize(node, new Node.ImportDefaultSpecifier(local));
+	    };
+	    // import <* as foo> ...;
+	    Parser.prototype.parseImportNamespaceSpecifier = function () {
+	        var node = this.createNode();
+	        this.expect('*');
+	        if (!this.matchContextualKeyword('as')) {
+	            this.throwError(messages_1.Messages.NoAsAfterImportNamespace);
+	        }
+	        this.nextToken();
+	        var local = this.parseIdentifierName();
+	        return this.finalize(node, new Node.ImportNamespaceSpecifier(local));
+	    };
+	    Parser.prototype.parseImportDeclaration = function () {
+	        if (this.context.inFunctionBody) {
+	            this.throwError(messages_1.Messages.IllegalImportDeclaration);
+	        }
+	        var node = this.createNode();
+	        this.expectKeyword('import');
+	        var src;
+	        var specifiers = [];
+	        if (this.lookahead.type === token_1.Token.StringLiteral) {
+	            // import 'foo';
+	            src = this.parseModuleSpecifier();
+	        }
+	        else {
+	            if (this.match('{')) {
+	                // import {bar}
+	                specifiers = specifiers.concat(this.parseNamedImports());
+	            }
+	            else if (this.match('*')) {
+	                // import * as foo
+	                specifiers.push(this.parseImportNamespaceSpecifier());
+	            }
+	            else if (this.isIdentifierName(this.lookahead) && !this.matchKeyword('default')) {
+	                // import foo
+	                specifiers.push(this.parseImportDefaultSpecifier());
+	                if (this.match(',')) {
+	                    this.nextToken();
+	                    if (this.match('*')) {
+	                        // import foo, * as foo
+	                        specifiers.push(this.parseImportNamespaceSpecifier());
+	                    }
+	                    else if (this.match('{')) {
+	                        // import foo, {bar}
+	                        specifiers = specifiers.concat(this.parseNamedImports());
+	                    }
+	                    else {
+	                        this.throwUnexpectedToken(this.lookahead);
+	                    }
+	                }
+	            }
+	            else {
+	                this.throwUnexpectedToken(this.nextToken());
+	            }
+	            if (!this.matchContextualKeyword('from')) {
+	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
+	                this.throwError(message, this.lookahead.value);
+	            }
+	            this.nextToken();
+	            src = this.parseModuleSpecifier();
+	        }
+	        this.consumeSemicolon();
+	        return this.finalize(node, new Node.ImportDeclaration(specifiers, src));
+	    };
+	    // ECMA-262 15.2.3 Exports
+	    Parser.prototype.parseExportSpecifier = function () {
+	        var node = this.createNode();
+	        var local = this.parseIdentifierName();
+	        var exported = local;
+	        if (this.matchContextualKeyword('as')) {
+	            this.nextToken();
+	            exported = this.parseIdentifierName();
+	        }
+	        return this.finalize(node, new Node.ExportSpecifier(local, exported));
+	    };
+	    Parser.prototype.parseExportDeclaration = function () {
+	        if (this.context.inFunctionBody) {
+	            this.throwError(messages_1.Messages.IllegalExportDeclaration);
+	        }
+	        var node = this.createNode();
+	        this.expectKeyword('export');
+	        var exportDeclaration;
+	        if (this.matchKeyword('default')) {
+	            // export default ...
+	            this.nextToken();
+	            if (this.matchKeyword('function')) {
+	                // export default function foo () {}
+	                // export default function () {}
+	                var declaration = this.parseFunctionDeclaration(true);
+	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
+	            }
+	            else if (this.matchKeyword('class')) {
+	                // export default class foo {}
+	                var declaration = this.parseClassDeclaration(true);
+	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
+	            }
+	            else {
+	                if (this.matchContextualKeyword('from')) {
+	                    this.throwError(messages_1.Messages.UnexpectedToken, this.lookahead.value);
+	                }
+	                // export default {};
+	                // export default [];
+	                // export default (1 + 2);
+	                var declaration = this.match('{') ? this.parseObjectInitializer() :
+	                    this.match('[') ? this.parseArrayInitializer() : this.parseAssignmentExpression();
+	                this.consumeSemicolon();
+	                exportDeclaration = this.finalize(node, new Node.ExportDefaultDeclaration(declaration));
+	            }
+	        }
+	        else if (this.match('*')) {
+	            // export * from 'foo';
+	            this.nextToken();
+	            if (!this.matchContextualKeyword('from')) {
+	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
+	                this.throwError(message, this.lookahead.value);
+	            }
+	            this.nextToken();
+	            var src = this.parseModuleSpecifier();
+	            this.consumeSemicolon();
+	            exportDeclaration = this.finalize(node, new Node.ExportAllDeclaration(src));
+	        }
+	        else if (this.lookahead.type === token_1.Token.Keyword) {
+	            // export var f = 1;
+	            var declaration = void 0;
+	            switch (this.lookahead.value) {
+	                case 'let':
+	                case 'const':
+	                    declaration = this.parseLexicalDeclaration({ inFor: false });
+	                    break;
+	                case 'var':
+	                case 'class':
+	                case 'function':
+	                    declaration = this.parseStatementListItem();
+	                    break;
+	                default:
+	                    this.throwUnexpectedToken(this.lookahead);
+	            }
+	            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(declaration, [], null));
+	        }
+	        else {
+	            var specifiers = [];
+	            var source = null;
+	            var isExportFromIdentifier = false;
+	            this.expect('{');
+	            while (!this.match('}')) {
+	                isExportFromIdentifier = isExportFromIdentifier || this.matchKeyword('default');
+	                specifiers.push(this.parseExportSpecifier());
+	                if (!this.match('}')) {
+	                    this.expect(',');
+	                }
+	            }
+	            this.expect('}');
+	            if (this.matchContextualKeyword('from')) {
+	                // export {default} from 'foo';
+	                // export {foo} from 'foo';
+	                this.nextToken();
+	                source = this.parseModuleSpecifier();
+	                this.consumeSemicolon();
+	            }
+	            else if (isExportFromIdentifier) {
+	                // export {default}; // missing fromClause
+	                var message = this.lookahead.value ? messages_1.Messages.UnexpectedToken : messages_1.Messages.MissingFromClause;
+	                this.throwError(message, this.lookahead.value);
+	            }
+	            else {
+	                // export {foo};
+	                this.consumeSemicolon();
+	            }
+	            exportDeclaration = this.finalize(node, new Node.ExportNamedDeclaration(null, specifiers, source));
+	        }
+	        return exportDeclaration;
+	    };
+	    return Parser;
+	}());
+	exports.Parser = Parser;
+
+
+/***/ },
+/* 4 */
+/***/ function(module, exports) {
+
+	// Ensure the condition is true, otherwise throw an error.
+	// This is only to have a better contract semantic, i.e. another safety net
+	// to catch a logic error. The condition shall be fulfilled in normal case.
+	// Do NOT use this to enforce a certain condition on any user input.
+	"use strict";
+	function assert(condition, message) {
+	    /* istanbul ignore if */
+	    if (!condition) {
+	        throw new Error('ASSERT: ' + message);
+	    }
+	}
+	exports.assert = assert;
+
+
+/***/ },
+/* 5 */
+/***/ function(module, exports) {
+
+	"use strict";
+	// Error messages should be identical to V8.
+	exports.Messages = {
+	    UnexpectedToken: 'Unexpected token %0',
+	    UnexpectedTokenIllegal: 'Unexpected token ILLEGAL',
+	    UnexpectedNumber: 'Unexpected number',
+	    UnexpectedString: 'Unexpected string',
+	    UnexpectedIdentifier: 'Unexpected identifier',
+	    UnexpectedReserved: 'Unexpected reserved word',
+	    UnexpectedTemplate: 'Unexpected quasi %0',
+	    UnexpectedEOS: 'Unexpected end of input',
+	    NewlineAfterThrow: 'Illegal newline after throw',
+	    InvalidRegExp: 'Invalid regular expression',
+	    UnterminatedRegExp: 'Invalid regular expression: missing /',
+	    InvalidLHSInAssignment: 'Invalid left-hand side in assignment',
+	    InvalidLHSInForIn: 'Invalid left-hand side in for-in',
+	    InvalidLHSInForLoop: 'Invalid left-hand side in for-loop',
+	    MultipleDefaultsInSwitch: 'More than one default clause in switch statement',
+	    NoCatchOrFinally: 'Missing catch or finally after try',
+	    UnknownLabel: 'Undefined label \'%0\'',
+	    Redeclaration: '%0 \'%1\' has already been declared',
+	    IllegalContinue: 'Illegal continue statement',
+	    IllegalBreak: 'Illegal break statement',
+	    IllegalReturn: 'Illegal return statement',
+	    StrictModeWith: 'Strict mode code may not include a with statement',
+	    StrictCatchVariable: 'Catch variable may not be eval or arguments in strict mode',
+	    StrictVarName: 'Variable name may not be eval or arguments in strict mode',
+	    StrictParamName: 'Parameter name eval or arguments is not allowed in strict mode',
+	    StrictParamDupe: 'Strict mode function may not have duplicate parameter names',
+	    StrictFunctionName: 'Function name may not be eval or arguments in strict mode',
+	    StrictOctalLiteral: 'Octal literals are not allowed in strict mode.',
+	    StrictDelete: 'Delete of an unqualified identifier in strict mode.',
+	    StrictLHSAssignment: 'Assignment to eval or arguments is not allowed in strict mode',
+	    StrictLHSPostfix: 'Postfix increment/decrement may not have eval or arguments operand in strict mode',
+	    StrictLHSPrefix: 'Prefix increment/decrement may not have eval or arguments operand in strict mode',
+	    StrictReservedWord: 'Use of future reserved word in strict mode',
+	    TemplateOctalLiteral: 'Octal literals are not allowed in template strings.',
+	    ParameterAfterRestParameter: 'Rest parameter must be last formal parameter',
+	    DefaultRestParameter: 'Unexpected token =',
+	    DuplicateProtoProperty: 'Duplicate __proto__ fields are not allowed in object literals',
+	    ConstructorSpecialMethod: 'Class constructor may not be an accessor',
+	    DuplicateConstructor: 'A class may only have one constructor',
+	    StaticPrototype: 'Classes may not have static property named prototype',
+	    MissingFromClause: 'Unexpected token',
+	    NoAsAfterImportNamespace: 'Unexpected token',
+	    InvalidModuleSpecifier: 'Unexpected token',
+	    IllegalImportDeclaration: 'Unexpected token',
+	    IllegalExportDeclaration: 'Unexpected token',
+	    DuplicateBinding: 'Duplicate binding %0',
+	    ForInOfLoopInitializer: '%0 loop variable declaration may not have an initializer'
+	};
+
+
+/***/ },
+/* 6 */
+/***/ function(module, exports) {
+
+	"use strict";
+	var ErrorHandler = (function () {
+	    function ErrorHandler() {
+	        this.errors = [];
+	        this.tolerant = false;
+	    }
+	    ;
+	    ErrorHandler.prototype.recordError = function (error) {
+	        this.errors.push(error);
+	    };
+	    ;
+	    ErrorHandler.prototype.tolerate = function (error) {
+	        if (this.tolerant) {
+	            this.recordError(error);
+	        }
+	        else {
+	            throw error;
+	        }
+	    };
+	    ;
+	    ErrorHandler.prototype.constructError = function (msg, column) {
+	        var error = new Error(msg);
+	        try {
+	            throw error;
+	        }
+	        catch (base) {
+	            /* istanbul ignore else */
+	            if (Object.create && Object.defineProperty) {
+	                error = Object.create(base);
+	                Object.defineProperty(error, 'column', { value: column });
+	            }
+	        }
+	        finally {
+	            return error;
+	        }
+	    };
+	    ;
+	    ErrorHandler.prototype.createError = function (index, line, col, description) {
+	        var msg = 'Line ' + line + ': ' + description;
+	        var error = this.constructError(msg, col);
+	        error.index = index;
+	        error.lineNumber = line;
+	        error.description = description;
+	        return error;
+	    };
+	    ;
+	    ErrorHandler.prototype.throwError = function (index, line, col, description) {
+	        throw this.createError(index, line, col, description);
+	    };
+	    ;
+	    ErrorHandler.prototype.tolerateError = function (index, line, col, description) {
+	        var error = this.createError(index, line, col, description);
+	        if (this.tolerant) {
+	            this.recordError(error);
+	        }
+	        else {
+	            throw error;
+	        }
+	    };
+	    ;
+	    return ErrorHandler;
+	}());
+	exports.ErrorHandler = ErrorHandler;
+
+
+/***/ },
+/* 7 */
+/***/ function(module, exports) {
+
+	"use strict";
+	(function (Token) {
+	    Token[Token["BooleanLiteral"] = 1] = "BooleanLiteral";
+	    Token[Token["EOF"] = 2] = "EOF";
+	    Token[Token["Identifier"] = 3] = "Identifier";
+	    Token[Token["Keyword"] = 4] = "Keyword";
+	    Token[Token["NullLiteral"] = 5] = "NullLiteral";
+	    Token[Token["NumericLiteral"] = 6] = "NumericLiteral";
+	    Token[Token["Punctuator"] = 7] = "Punctuator";
+	    Token[Token["StringLiteral"] = 8] = "StringLiteral";
+	    Token[Token["RegularExpression"] = 9] = "RegularExpression";
+	    Token[Token["Template"] = 10] = "Template";
+	})(exports.Token || (exports.Token = {}));
+	var Token = exports.Token;
+	;
+	exports.TokenName = {};
+	exports.TokenName[Token.BooleanLiteral] = 'Boolean';
+	exports.TokenName[Token.EOF] = '';
+	exports.TokenName[Token.Identifier] = 'Identifier';
+	exports.TokenName[Token.Keyword] = 'Keyword';
+	exports.TokenName[Token.NullLiteral] = 'Null';
+	exports.TokenName[Token.NumericLiteral] = 'Numeric';
+	exports.TokenName[Token.Punctuator] = 'Punctuator';
+	exports.TokenName[Token.StringLiteral] = 'String';
+	exports.TokenName[Token.RegularExpression] = 'RegularExpression';
+	exports.TokenName[Token.Template] = 'Template';
+
+
+/***/ },
+/* 8 */
+/***/ function(module, exports, __webpack_require__) {
+
+	"use strict";
+	var assert_1 = __webpack_require__(4);
+	var messages_1 = __webpack_require__(5);
+	var character_1 = __webpack_require__(9);
+	var token_1 = __webpack_require__(7);
+	function hexValue(ch) {
+	    return '0123456789abcdef'.indexOf(ch.toLowerCase());
+	}
+	function octalValue(ch) {
+	    return '01234567'.indexOf(ch);
+	}
+	var Scanner = (function () {
+	    function Scanner(code, handler) {
+	        this.source = code;
+	        this.errorHandler = handler;
+	        this.trackComment = false;
+	        this.length = code.length;
+	        this.index = 0;
+	        this.lineNumber = (code.length > 0) ? 1 : 0;
+	        this.lineStart = 0;
+	        this.curlyStack = [];
+	    }
+	    ;
+	    Scanner.prototype.eof = function () {
+	        return this.index >= this.length;
+	    };
+	    ;
+	    Scanner.prototype.throwUnexpectedToken = function (message) {
+	        if (message === void 0) { message = messages_1.Messages.UnexpectedTokenIllegal; }
+	        this.errorHandler.throwError(this.index, this.lineNumber, this.index - this.lineStart + 1, message);
+	    };
+	    ;
+	    Scanner.prototype.tolerateUnexpectedToken = function () {
+	        this.errorHandler.tolerateError(this.index, this.lineNumber, this.index - this.lineStart + 1, messages_1.Messages.UnexpectedTokenIllegal);
+	    };
+	    ;
+	    // ECMA-262 11.4 Comments
+	    Scanner.prototype.skipSingleLineComment = function (offset) {
+	        var comments;
+	        var start, loc;
+	        if (this.trackComment) {
+	            comments = [];
+	            start = this.index - offset;
+	            loc = {
+	                start: {
+	                    line: this.lineNumber,
+	                    column: this.index - this.lineStart - offset
+	                },
+	                end: {}
+	            };
+	        }
+	        while (!this.eof()) {
+	            var ch = this.source.charCodeAt(this.index);
+	            ++this.index;
+	            if (character_1.Character.isLineTerminator(ch)) {
+	                if (this.trackComment) {
+	                    loc.end = {
+	                        line: this.lineNumber,
+	                        column: this.index - this.lineStart - 1
+	                    };
+	                    var entry = {
+	                        multiLine: false,
+	                        slice: [start + offset, this.index - 1],
+	                        range: [start, this.index - 1],
+	                        loc: loc
+	                    };
+	                    comments.push(entry);
+	                }
+	                if (ch === 13 && this.source.charCodeAt(this.index) === 10) {
+	                    ++this.index;
+	                }
+	                ++this.lineNumber;
+	                this.lineStart = this.index;
+	                return comments;
+	            }
+	        }
+	        if (this.trackComment) {
+	            loc.end = {
+	                line: this.lineNumber,
+	                column: this.index - this.lineStart
+	            };
+	            var entry = {
+	                multiLine: false,
+	                slice: [start + offset, this.index],
+	                range: [start, this.index],
+	                loc: loc
+	            };
+	            comments.push(entry);
+	        }
+	        return comments;
+	    };
+	    ;
+	    Scanner.prototype.skipMultiLineComment = function () {
+	        var comments;
+	        var start, loc;
+	        if (this.trackComment) {
+	            comments = [];
+	            start = this.index - 2;
+	            loc = {
+	                start: {
+	                    line: this.lineNumber,
+	                    column: this.index - this.lineStart - 2
+	                },
+	                end: {}
+	            };
+	        }
+	        while (!this.eof()) {
+	            var ch = this.source.charCodeAt(this.index);
+	            if (character_1.Character.isLineTerminator(ch)) {
+	                if (ch === 0x0D && this.source.charCodeAt(this.index + 1) === 0x0A) {
+	                    ++this.index;
+	                }
+	                ++this.lineNumber;
+	                ++this.index;
+	                this.lineStart = this.index;
+	            }
+	            else if (ch === 0x2A) {
+	                // Block comment ends with '*/'.
+	                if (this.source.charCodeAt(this.index + 1) === 0x2F) {
+	                    this.index += 2;
+	                    if (this.trackComment) {
+	                        loc.end = {
+	                            line: this.lineNumber,
+	                            column: this.index - this.lineStart
+	                        };
+	                        var entry = {
+	                            multiLine: true,
+	                            slice: [start + 2, this.index - 2],
+	                            range: [start, this.index],
+	                            loc: loc
+	                        };
+	                        comments.push(entry);
+	                    }
+	                    return comments;
+	                }
+	                ++this.index;
+	            }
+	            else {
+	                ++this.index;
+	            }
+	        }
+	        // Ran off the end of the file - the whole thing is a comment
+	        if (this.trackComment) {
+	            loc.end = {
+	                line: this.lineNumber,
+	                column: this.index - this.lineStart
+	            };
+	            var entry = {
+	                multiLine: true,
+	                slice: [start + 2, this.index],
+	                range: [start, this.index],
+	                loc: loc
+	            };
+	            comments.push(entry);
+	        }
+	        this.tolerateUnexpectedToken();
+	        return comments;
+	    };
+	    ;
+	    Scanner.prototype.scanComments = function () {
+	        var comments;
+	        if (this.trackComment) {
+	            comments = [];
+	        }
+	        var start = (this.index === 0);
+	        while (!this.eof()) {
+	            var ch = this.source.charCodeAt(this.index);
+	            if (character_1.Character.isWhiteSpace(ch)) {
+	                ++this.index;
+	            }
+	            else if (character_1.Character.isLineTerminator(ch)) {
+	                ++this.index;
+	                if (ch === 0x0D && this.source.charCodeAt(this.index) === 0x0A) {
+	                    ++this.index;
+	                }
+	                ++this.lineNumber;
+	                this.lineStart = this.index;
+	                start = true;
+	            }
+	            else if (ch === 0x2F) {
+	                ch = this.source.charCodeAt(this.index + 1);
+	                if (ch === 0x2F) {
+	                    this.index += 2;
+	                    var comment = this.skipSingleLineComment(2);
+	                    if (this.trackComment) {
+	                        comments = comments.concat(comment);
+	                    }
+	                    start = true;
+	                }
+	                else if (ch === 0x2A) {
+	                    this.index += 2;
+	                    var comment = this.skipMultiLineComment();
+	                    if (this.trackComment) {
+	                        comments = comments.concat(comment);
+	                    }
+	                }
+	                else {
+	                    break;
+	                }
+	            }
+	            else if (start && ch === 0x2D) {
+	                // U+003E is '>'
+	                if ((this.source.charCodeAt(this.index + 1) === 0x2D) && (this.source.charCodeAt(this.index + 2) === 0x3E)) {
+	                    // '-->' is a single-line comment
+	                    this.index += 3;
+	                    var comment = this.skipSingleLineComment(3);
+	                    if (this.trackComment) {
+	                        comments = comments.concat(comment);
+	                    }
+	                }
+	                else {
+	                    break;
+	                }
+	            }
+	            else if (ch === 0x3C) {
+	                if (this.source.slice(this.index + 1, this.index + 4) === '!--') {
+	                    this.index += 4; // `' is a single-line comment
-                    index += 3;
-                    skipSingleLineComment(3);
-                } else {
-                    break;
-                }
-            } else if (ch === 0x3C) { // U+003C is '<'
-                if (source.slice(index + 1, index + 4) === '!--') {
-                    ++index; // `<`
-                    ++index; // `!`
-                    ++index; // `-`
-                    ++index; // `-`
-                    skipSingleLineComment(4);
-                } else {
-                    break;
-                }
-            } else {
-                break;
-            }
-        }
-    }
-
-    function scanHexEscape(prefix) {
-        var i, len, ch, code = 0;
-
-        len = (prefix === 'u') ? 4 : 2;
-        for (i = 0; i < len; ++i) {
-            if (index < length && isHexDigit(source[index])) {
-                ch = source[index++];
-                code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
-            } else {
-                return '';
-            }
-        }
-        return String.fromCharCode(code);
-    }
-
-    function scanUnicodeCodePointEscape() {
-        var ch, code;
-
-        ch = source[index];
-        code = 0;
-
-        // At least, one hex digit is required.
-        if (ch === '}') {
-            throwUnexpectedToken();
-        }
-
-        while (index < length) {
-            ch = source[index++];
-            if (!isHexDigit(ch)) {
-                break;
-            }
-            code = code * 16 + '0123456789abcdef'.indexOf(ch.toLowerCase());
-        }
-
-        if (code > 0x10FFFF || ch !== '}') {
-            throwUnexpectedToken();
-        }
-
-        return fromCodePoint(code);
-    }
-
-    function codePointAt(i) {
-        var cp, first, second;
-
-        cp = source.charCodeAt(i);
-        if (cp >= 0xD800 && cp <= 0xDBFF) {
-            second = source.charCodeAt(i + 1);
-            if (second >= 0xDC00 && second <= 0xDFFF) {
-                first = cp;
-                cp = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
-            }
-        }
-
-        return cp;
-    }
-
-    function getComplexIdentifier() {
-        var cp, ch, id;
-
-        cp = codePointAt(index);
-        id = fromCodePoint(cp);
-        index += id.length;
-
-        // '\u' (U+005C, U+0075) denotes an escaped character.
-        if (cp === 0x5C) {
-            if (source.charCodeAt(index) !== 0x75) {
-                throwUnexpectedToken();
-            }
-            ++index;
-            if (source[index] === '{') {
-                ++index;
-                ch = scanUnicodeCodePointEscape();
-            } else {
-                ch = scanHexEscape('u');
-                cp = ch.charCodeAt(0);
-                if (!ch || ch === '\\' || !isIdentifierStart(cp)) {
-                    throwUnexpectedToken();
-                }
-            }
-            id = ch;
-        }
-
-        while (index < length) {
-            cp = codePointAt(index);
-            if (!isIdentifierPart(cp)) {
-                break;
-            }
-            ch = fromCodePoint(cp);
-            id += ch;
-            index += ch.length;
-
-            // '\u' (U+005C, U+0075) denotes an escaped character.
-            if (cp === 0x5C) {
-                id = id.substr(0, id.length - 1);
-                if (source.charCodeAt(index) !== 0x75) {
-                    throwUnexpectedToken();
-                }
-                ++index;
-                if (source[index] === '{') {
-                    ++index;
-                    ch = scanUnicodeCodePointEscape();
-                } else {
-                    ch = scanHexEscape('u');
-                    cp = ch.charCodeAt(0);
-                    if (!ch || ch === '\\' || !isIdentifierPart(cp)) {
-                        throwUnexpectedToken();
-                    }
-                }
-                id += ch;
-            }
-        }
-
-        return id;
-    }
-
-    function getIdentifier() {
-        var start, ch;
-
-        start = index++;
-        while (index < length) {
-            ch = source.charCodeAt(index);
-            if (ch === 0x5C) {
-                // Blackslash (U+005C) marks Unicode escape sequence.
-                index = start;
-                return getComplexIdentifier();
-            } else if (ch >= 0xD800 && ch < 0xDFFF) {
-                // Need to handle surrogate pairs.
-                index = start;
-                return getComplexIdentifier();
-            }
-            if (isIdentifierPart(ch)) {
-                ++index;
-            } else {
-                break;
-            }
-        }
-
-        return source.slice(start, index);
-    }
-
-    function scanIdentifier() {
-        var start, id, type;
-
-        start = index;
-
-        // Backslash (U+005C) starts an escaped character.
-        id = (source.charCodeAt(index) === 0x5C) ? getComplexIdentifier() : getIdentifier();
-
-        // There is no keyword or literal with only one character.
-        // Thus, it must be an identifier.
-        if (id.length === 1) {
-            type = Token.Identifier;
-        } else if (isKeyword(id)) {
-            type = Token.Keyword;
-        } else if (id === 'null') {
-            type = Token.NullLiteral;
-        } else if (id === 'true' || id === 'false') {
-            type = Token.BooleanLiteral;
-        } else {
-            type = Token.Identifier;
-        }
-
-        return {
-            type: type,
-            value: id,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-
-    // ECMA-262 11.7 Punctuators
-
-    function scanPunctuator() {
-        var token, str;
-
-        token = {
-            type: Token.Punctuator,
-            value: '',
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: index,
-            end: index
-        };
-
-        // Check for most common single-character punctuators.
-        str = source[index];
-        switch (str) {
-
-        case '(':
-            if (extra.tokenize) {
-                extra.openParenToken = extra.tokenValues.length;
-            }
-            ++index;
-            break;
-
-        case '{':
-            if (extra.tokenize) {
-                extra.openCurlyToken = extra.tokenValues.length;
-            }
-            state.curlyStack.push('{');
-            ++index;
-            break;
-
-        case '.':
-            ++index;
-            if (source[index] === '.' && source[index + 1] === '.') {
-                // Spread operator: ...
-                index += 2;
-                str = '...';
-            }
-            break;
-
-        case '}':
-            ++index;
-            state.curlyStack.pop();
-            break;
-        case ')':
-        case ';':
-        case ',':
-        case '[':
-        case ']':
-        case ':':
-        case '?':
-        case '~':
-            ++index;
-            break;
-
-        default:
-            // 4-character punctuator.
-            str = source.substr(index, 4);
-            if (str === '>>>=') {
-                index += 4;
-            } else {
-
-                // 3-character punctuators.
-                str = str.substr(0, 3);
-                if (str === '===' || str === '!==' || str === '>>>' ||
-                    str === '<<=' || str === '>>=') {
-                    index += 3;
-                } else {
-
-                    // 2-character punctuators.
-                    str = str.substr(0, 2);
-                    if (str === '&&' || str === '||' || str === '==' || str === '!=' ||
-                        str === '+=' || str === '-=' || str === '*=' || str === '/=' ||
-                        str === '++' || str === '--' || str === '<<' || str === '>>' ||
-                        str === '&=' || str === '|=' || str === '^=' || str === '%=' ||
-                        str === '<=' || str === '>=' || str === '=>') {
-                        index += 2;
-                    } else {
-
-                        // 1-character punctuators.
-                        str = source[index];
-                        if ('<>=!+-*%&|^/'.indexOf(str) >= 0) {
-                            ++index;
-                        }
-                    }
-                }
-            }
-        }
-
-        if (index === token.start) {
-            throwUnexpectedToken();
-        }
-
-        token.end = index;
-        token.value = str;
-        return token;
-    }
-
-    // ECMA-262 11.8.3 Numeric Literals
-
-    function scanHexLiteral(start) {
-        var number = '';
-
-        while (index < length) {
-            if (!isHexDigit(source[index])) {
-                break;
-            }
-            number += source[index++];
-        }
-
-        if (number.length === 0) {
-            throwUnexpectedToken();
-        }
-
-        if (isIdentifierStart(source.charCodeAt(index))) {
-            throwUnexpectedToken();
-        }
-
-        return {
-            type: Token.NumericLiteral,
-            value: parseInt('0x' + number, 16),
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    function scanBinaryLiteral(start) {
-        var ch, number;
-
-        number = '';
-
-        while (index < length) {
-            ch = source[index];
-            if (ch !== '0' && ch !== '1') {
-                break;
-            }
-            number += source[index++];
-        }
-
-        if (number.length === 0) {
-            // only 0b or 0B
-            throwUnexpectedToken();
-        }
-
-        if (index < length) {
-            ch = source.charCodeAt(index);
-            /* istanbul ignore else */
-            if (isIdentifierStart(ch) || isDecimalDigit(ch)) {
-                throwUnexpectedToken();
-            }
-        }
-
-        return {
-            type: Token.NumericLiteral,
-            value: parseInt(number, 2),
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    function scanOctalLiteral(prefix, start) {
-        var number, octal;
-
-        if (isOctalDigit(prefix)) {
-            octal = true;
-            number = '0' + source[index++];
-        } else {
-            octal = false;
-            ++index;
-            number = '';
-        }
-
-        while (index < length) {
-            if (!isOctalDigit(source[index])) {
-                break;
-            }
-            number += source[index++];
-        }
-
-        if (!octal && number.length === 0) {
-            // only 0o or 0O
-            throwUnexpectedToken();
-        }
-
-        if (isIdentifierStart(source.charCodeAt(index)) || isDecimalDigit(source.charCodeAt(index))) {
-            throwUnexpectedToken();
-        }
-
-        return {
-            type: Token.NumericLiteral,
-            value: parseInt(number, 8),
-            octal: octal,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    function isImplicitOctalLiteral() {
-        var i, ch;
-
-        // Implicit octal, unless there is a non-octal digit.
-        // (Annex B.1.1 on Numeric Literals)
-        for (i = index + 1; i < length; ++i) {
-            ch = source[i];
-            if (ch === '8' || ch === '9') {
-                return false;
-            }
-            if (!isOctalDigit(ch)) {
-                return true;
-            }
-        }
-
-        return true;
-    }
-
-    function scanNumericLiteral() {
-        var number, start, ch;
-
-        ch = source[index];
-        assert(isDecimalDigit(ch.charCodeAt(0)) || (ch === '.'),
-            'Numeric literal must start with a decimal digit or a decimal point');
-
-        start = index;
-        number = '';
-        if (ch !== '.') {
-            number = source[index++];
-            ch = source[index];
-
-            // Hex number starts with '0x'.
-            // Octal number starts with '0'.
-            // Octal number in ES6 starts with '0o'.
-            // Binary number in ES6 starts with '0b'.
-            if (number === '0') {
-                if (ch === 'x' || ch === 'X') {
-                    ++index;
-                    return scanHexLiteral(start);
-                }
-                if (ch === 'b' || ch === 'B') {
-                    ++index;
-                    return scanBinaryLiteral(start);
-                }
-                if (ch === 'o' || ch === 'O') {
-                    return scanOctalLiteral(ch, start);
-                }
-
-                if (isOctalDigit(ch)) {
-                    if (isImplicitOctalLiteral()) {
-                        return scanOctalLiteral(ch, start);
-                    }
-                }
-            }
-
-            while (isDecimalDigit(source.charCodeAt(index))) {
-                number += source[index++];
-            }
-            ch = source[index];
-        }
-
-        if (ch === '.') {
-            number += source[index++];
-            while (isDecimalDigit(source.charCodeAt(index))) {
-                number += source[index++];
-            }
-            ch = source[index];
-        }
-
-        if (ch === 'e' || ch === 'E') {
-            number += source[index++];
-
-            ch = source[index];
-            if (ch === '+' || ch === '-') {
-                number += source[index++];
-            }
-            if (isDecimalDigit(source.charCodeAt(index))) {
-                while (isDecimalDigit(source.charCodeAt(index))) {
-                    number += source[index++];
-                }
-            } else {
-                throwUnexpectedToken();
-            }
-        }
-
-        if (isIdentifierStart(source.charCodeAt(index))) {
-            throwUnexpectedToken();
-        }
-
-        return {
-            type: Token.NumericLiteral,
-            value: parseFloat(number),
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    // ECMA-262 11.8.4 String Literals
-
-    function scanStringLiteral() {
-        var str = '', quote, start, ch, unescaped, octToDec, octal = false;
-
-        quote = source[index];
-        assert((quote === '\'' || quote === '"'),
-            'String literal must starts with a quote');
-
-        start = index;
-        ++index;
-
-        while (index < length) {
-            ch = source[index++];
-
-            if (ch === quote) {
-                quote = '';
-                break;
-            } else if (ch === '\\') {
-                ch = source[index++];
-                if (!ch || !isLineTerminator(ch.charCodeAt(0))) {
-                    switch (ch) {
-                    case 'u':
-                    case 'x':
-                        if (source[index] === '{') {
-                            ++index;
-                            str += scanUnicodeCodePointEscape();
-                        } else {
-                            unescaped = scanHexEscape(ch);
-                            if (!unescaped) {
-                                throw throwUnexpectedToken();
-                            }
-                            str += unescaped;
-                        }
-                        break;
-                    case 'n':
-                        str += '\n';
-                        break;
-                    case 'r':
-                        str += '\r';
-                        break;
-                    case 't':
-                        str += '\t';
-                        break;
-                    case 'b':
-                        str += '\b';
-                        break;
-                    case 'f':
-                        str += '\f';
-                        break;
-                    case 'v':
-                        str += '\x0B';
-                        break;
-                    case '8':
-                    case '9':
-                        str += ch;
-                        tolerateUnexpectedToken();
-                        break;
-
-                    default:
-                        if (isOctalDigit(ch)) {
-                            octToDec = octalToDecimal(ch);
-
-                            octal = octToDec.octal || octal;
-                            str += String.fromCharCode(octToDec.code);
-                        } else {
-                            str += ch;
-                        }
-                        break;
-                    }
-                } else {
-                    ++lineNumber;
-                    if (ch === '\r' && source[index] === '\n') {
-                        ++index;
-                    }
-                    lineStart = index;
-                }
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                break;
-            } else {
-                str += ch;
-            }
-        }
-
-        if (quote !== '') {
-            index = start;
-            throwUnexpectedToken();
-        }
-
-        return {
-            type: Token.StringLiteral,
-            value: str,
-            octal: octal,
-            lineNumber: startLineNumber,
-            lineStart: startLineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    // ECMA-262 11.8.6 Template Literal Lexical Components
-
-    function scanTemplate() {
-        var cooked = '', ch, start, rawOffset, terminated, head, tail, restore, unescaped;
-
-        terminated = false;
-        tail = false;
-        start = index;
-        head = (source[index] === '`');
-        rawOffset = 2;
-
-        ++index;
-
-        while (index < length) {
-            ch = source[index++];
-            if (ch === '`') {
-                rawOffset = 1;
-                tail = true;
-                terminated = true;
-                break;
-            } else if (ch === '$') {
-                if (source[index] === '{') {
-                    state.curlyStack.push('${');
-                    ++index;
-                    terminated = true;
-                    break;
-                }
-                cooked += ch;
-            } else if (ch === '\\') {
-                ch = source[index++];
-                if (!isLineTerminator(ch.charCodeAt(0))) {
-                    switch (ch) {
-                    case 'n':
-                        cooked += '\n';
-                        break;
-                    case 'r':
-                        cooked += '\r';
-                        break;
-                    case 't':
-                        cooked += '\t';
-                        break;
-                    case 'u':
-                    case 'x':
-                        if (source[index] === '{') {
-                            ++index;
-                            cooked += scanUnicodeCodePointEscape();
-                        } else {
-                            restore = index;
-                            unescaped = scanHexEscape(ch);
-                            if (unescaped) {
-                                cooked += unescaped;
-                            } else {
-                                index = restore;
-                                cooked += ch;
-                            }
-                        }
-                        break;
-                    case 'b':
-                        cooked += '\b';
-                        break;
-                    case 'f':
-                        cooked += '\f';
-                        break;
-                    case 'v':
-                        cooked += '\v';
-                        break;
-
-                    default:
-                        if (ch === '0') {
-                            if (isDecimalDigit(source.charCodeAt(index))) {
-                                // Illegal: \01 \02 and so on
-                                throwError(Messages.TemplateOctalLiteral);
-                            }
-                            cooked += '\0';
-                        } else if (isOctalDigit(ch)) {
-                            // Illegal: \1 \2
-                            throwError(Messages.TemplateOctalLiteral);
-                        } else {
-                            cooked += ch;
-                        }
-                        break;
-                    }
-                } else {
-                    ++lineNumber;
-                    if (ch === '\r' && source[index] === '\n') {
-                        ++index;
-                    }
-                    lineStart = index;
-                }
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                ++lineNumber;
-                if (ch === '\r' && source[index] === '\n') {
-                    ++index;
-                }
-                lineStart = index;
-                cooked += '\n';
-            } else {
-                cooked += ch;
-            }
-        }
-
-        if (!terminated) {
-            throwUnexpectedToken();
-        }
-
-        if (!head) {
-            state.curlyStack.pop();
-        }
-
-        return {
-            type: Token.Template,
-            value: {
-                cooked: cooked,
-                raw: source.slice(start + 1, index - rawOffset)
-            },
-            head: head,
-            tail: tail,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            start: start,
-            end: index
-        };
-    }
-
-    // ECMA-262 11.8.5 Regular Expression Literals
-
-    function testRegExp(pattern, flags) {
-        // The BMP character to use as a replacement for astral symbols when
-        // translating an ES6 "u"-flagged pattern to an ES5-compatible
-        // approximation.
-        // Note: replacing with '\uFFFF' enables false positives in unlikely
-        // scenarios. For example, `[\u{1044f}-\u{10440}]` is an invalid
-        // pattern that would not be detected by this substitution.
-        var astralSubstitute = '\uFFFF',
-            tmp = pattern;
-
-        if (flags.indexOf('u') >= 0) {
-            tmp = tmp
-                // Replace every Unicode escape sequence with the equivalent
-                // BMP character or a constant ASCII code point in the case of
-                // astral symbols. (See the above note on `astralSubstitute`
-                // for more information.)
-                .replace(/\\u\{([0-9a-fA-F]+)\}|\\u([a-fA-F0-9]{4})/g, function ($0, $1, $2) {
-                    var codePoint = parseInt($1 || $2, 16);
-                    if (codePoint > 0x10FFFF) {
-                        throwUnexpectedToken(null, Messages.InvalidRegExp);
-                    }
-                    if (codePoint <= 0xFFFF) {
-                        return String.fromCharCode(codePoint);
-                    }
-                    return astralSubstitute;
-                })
-                // Replace each paired surrogate with a single ASCII symbol to
-                // avoid throwing on regular expressions that are only valid in
-                // combination with the "u" flag.
-                .replace(
-                    /[\uD800-\uDBFF][\uDC00-\uDFFF]/g,
-                    astralSubstitute
-                );
-        }
-
-        // First, detect invalid regular expressions.
-        try {
-            RegExp(tmp);
-        } catch (e) {
-            throwUnexpectedToken(null, Messages.InvalidRegExp);
-        }
-
-        // Return a regular expression object for this pattern-flag pair, or
-        // `null` in case the current environment doesn't support the flags it
-        // uses.
-        try {
-            return new RegExp(pattern, flags);
-        } catch (exception) {
-            /* istanbul ignore next */
-            return null;
-        }
-    }
-
-    function scanRegExpBody() {
-        var ch, str, classMarker, terminated, body;
-
-        ch = source[index];
-        assert(ch === '/', 'Regular expression literal must start with a slash');
-        str = source[index++];
-
-        classMarker = false;
-        terminated = false;
-        while (index < length) {
-            ch = source[index++];
-            str += ch;
-            if (ch === '\\') {
-                ch = source[index++];
-                // ECMA-262 7.8.5
-                if (isLineTerminator(ch.charCodeAt(0))) {
-                    throwUnexpectedToken(null, Messages.UnterminatedRegExp);
-                }
-                str += ch;
-            } else if (isLineTerminator(ch.charCodeAt(0))) {
-                throwUnexpectedToken(null, Messages.UnterminatedRegExp);
-            } else if (classMarker) {
-                if (ch === ']') {
-                    classMarker = false;
-                }
-            } else {
-                if (ch === '/') {
-                    terminated = true;
-                    break;
-                } else if (ch === '[') {
-                    classMarker = true;
-                }
-            }
-        }
-
-        if (!terminated) {
-            throwUnexpectedToken(null, Messages.UnterminatedRegExp);
-        }
-
-        // Exclude leading and trailing slash.
-        body = str.substr(1, str.length - 2);
-        return {
-            value: body,
-            literal: str
-        };
-    }
-
-    function scanRegExpFlags() {
-        var ch, str, flags, restore;
-
-        str = '';
-        flags = '';
-        while (index < length) {
-            ch = source[index];
-            if (!isIdentifierPart(ch.charCodeAt(0))) {
-                break;
-            }
-
-            ++index;
-            if (ch === '\\' && index < length) {
-                ch = source[index];
-                if (ch === 'u') {
-                    ++index;
-                    restore = index;
-                    ch = scanHexEscape('u');
-                    if (ch) {
-                        flags += ch;
-                        for (str += '\\u'; restore < index; ++restore) {
-                            str += source[restore];
-                        }
-                    } else {
-                        index = restore;
-                        flags += 'u';
-                        str += '\\u';
-                    }
-                    tolerateUnexpectedToken();
-                } else {
-                    str += '\\';
-                    tolerateUnexpectedToken();
-                }
-            } else {
-                flags += ch;
-                str += ch;
-            }
-        }
-
-        return {
-            value: flags,
-            literal: str
-        };
-    }
-
-    function scanRegExp() {
-        var start, body, flags, value;
-        scanning = true;
-
-        lookahead = null;
-        skipComment();
-        start = index;
-
-        body = scanRegExpBody();
-        flags = scanRegExpFlags();
-        value = testRegExp(body.value, flags.value);
-        scanning = false;
-        if (extra.tokenize) {
-            return {
-                type: Token.RegularExpression,
-                value: value,
-                regex: {
-                    pattern: body.value,
-                    flags: flags.value
-                },
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                start: start,
-                end: index
-            };
-        }
-
-        return {
-            literal: body.literal + flags.literal,
-            value: value,
-            regex: {
-                pattern: body.value,
-                flags: flags.value
-            },
-            start: start,
-            end: index
-        };
-    }
-
-    function collectRegex() {
-        var pos, loc, regex, token;
-
-        skipComment();
-
-        pos = index;
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
-
-        regex = scanRegExp();
-
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
-
-        /* istanbul ignore next */
-        if (!extra.tokenize) {
-            // Pop the previous token, which is likely '/' or '/='
-            if (extra.tokens.length > 0) {
-                token = extra.tokens[extra.tokens.length - 1];
-                if (token.range[0] === pos && token.type === 'Punctuator') {
-                    if (token.value === '/' || token.value === '/=') {
-                        extra.tokens.pop();
-                    }
-                }
-            }
-
-            extra.tokens.push({
-                type: 'RegularExpression',
-                value: regex.literal,
-                regex: regex.regex,
-                range: [pos, index],
-                loc: loc
-            });
-        }
-
-        return regex;
-    }
-
-    function isIdentifierName(token) {
-        return token.type === Token.Identifier ||
-            token.type === Token.Keyword ||
-            token.type === Token.BooleanLiteral ||
-            token.type === Token.NullLiteral;
-    }
-
-    // Using the following algorithm:
-    // https://github.com/mozilla/sweet.js/wiki/design
-
-    function advanceSlash() {
-        var regex, previous, check;
-
-        function testKeyword(value) {
-            return value && (value.length > 1) && (value[0] >= 'a') && (value[0] <= 'z');
-        }
-
-        previous = extra.tokenValues[extra.tokenValues.length - 1];
-        regex = (previous !== null);
-
-        switch (previous) {
-        case 'this':
-        case ']':
-            regex = false;
-            break;
-
-        case ')':
-            check = extra.tokenValues[extra.openParenToken - 1];
-            regex = (check === 'if' || check === 'while' || check === 'for' || check === 'with');
-            break;
-
-        case '}':
-            // Dividing a function by anything makes little sense,
-            // but we have to check for that.
-            regex = false;
-            if (testKeyword(extra.tokenValues[extra.openCurlyToken - 3])) {
-                // Anonymous function, e.g. function(){} /42
-                check = extra.tokenValues[extra.openCurlyToken - 4];
-                regex = check ? (FnExprTokens.indexOf(check) < 0) : false;
-            } else if (testKeyword(extra.tokenValues[extra.openCurlyToken - 4])) {
-                // Named function, e.g. function f(){} /42/
-                check = extra.tokenValues[extra.openCurlyToken - 5];
-                regex = check ? (FnExprTokens.indexOf(check) < 0) : true;
-            }
-        }
-
-        return regex ? collectRegex() : scanPunctuator();
-    }
-
-    function advance() {
-        var cp, token;
-
-        if (index >= length) {
-            return {
-                type: Token.EOF,
-                lineNumber: lineNumber,
-                lineStart: lineStart,
-                start: index,
-                end: index
-            };
-        }
-
-        cp = source.charCodeAt(index);
-
-        if (isIdentifierStart(cp)) {
-            token = scanIdentifier();
-            if (strict && isStrictModeReservedWord(token.value)) {
-                token.type = Token.Keyword;
-            }
-            return token;
-        }
-
-        // Very common: ( and ) and ;
-        if (cp === 0x28 || cp === 0x29 || cp === 0x3B) {
-            return scanPunctuator();
-        }
-
-        // String literal starts with single quote (U+0027) or double quote (U+0022).
-        if (cp === 0x27 || cp === 0x22) {
-            return scanStringLiteral();
-        }
-
-        // Dot (.) U+002E can also start a floating-point number, hence the need
-        // to check the next character.
-        if (cp === 0x2E) {
-            if (isDecimalDigit(source.charCodeAt(index + 1))) {
-                return scanNumericLiteral();
-            }
-            return scanPunctuator();
-        }
-
-        if (isDecimalDigit(cp)) {
-            return scanNumericLiteral();
-        }
-
-        // Slash (/) U+002F can also start a regex.
-        if (extra.tokenize && cp === 0x2F) {
-            return advanceSlash();
-        }
-
-        // Template literals start with ` (U+0060) for template head
-        // or } (U+007D) for template middle or template tail.
-        if (cp === 0x60 || (cp === 0x7D && state.curlyStack[state.curlyStack.length - 1] === '${')) {
-            return scanTemplate();
-        }
-
-        // Possible identifier start in a surrogate pair.
-        if (cp >= 0xD800 && cp < 0xDFFF) {
-            cp = codePointAt(index);
-            if (isIdentifierStart(cp)) {
-                return scanIdentifier();
-            }
-        }
-
-        return scanPunctuator();
-    }
-
-    function collectToken() {
-        var loc, token, value, entry;
-
-        loc = {
-            start: {
-                line: lineNumber,
-                column: index - lineStart
-            }
-        };
-
-        token = advance();
-        loc.end = {
-            line: lineNumber,
-            column: index - lineStart
-        };
-
-        if (token.type !== Token.EOF) {
-            value = source.slice(token.start, token.end);
-            entry = {
-                type: TokenName[token.type],
-                value: value,
-                range: [token.start, token.end],
-                loc: loc
-            };
-            if (token.regex) {
-                entry.regex = {
-                    pattern: token.regex.pattern,
-                    flags: token.regex.flags
-                };
-            }
-            if (extra.tokenValues) {
-                extra.tokenValues.push((entry.type === 'Punctuator' || entry.type === 'Keyword') ? entry.value : null);
-            }
-            if (extra.tokenize) {
-                if (!extra.range) {
-                    delete entry.range;
-                }
-                if (!extra.loc) {
-                    delete entry.loc;
-                }
-                if (extra.delegate) {
-                    entry = extra.delegate(entry);
-                }
-            }
-            extra.tokens.push(entry);
-        }
-
-        return token;
-    }
-
-    function lex() {
-        var token;
-        scanning = true;
-
-        lastIndex = index;
-        lastLineNumber = lineNumber;
-        lastLineStart = lineStart;
-
-        skipComment();
-
-        token = lookahead;
-
-        startIndex = index;
-        startLineNumber = lineNumber;
-        startLineStart = lineStart;
-
-        lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();
-        scanning = false;
-        return token;
-    }
-
-    function peek() {
-        scanning = true;
-
-        skipComment();
-
-        lastIndex = index;
-        lastLineNumber = lineNumber;
-        lastLineStart = lineStart;
-
-        startIndex = index;
-        startLineNumber = lineNumber;
-        startLineStart = lineStart;
-
-        lookahead = (typeof extra.tokens !== 'undefined') ? collectToken() : advance();
-        scanning = false;
-    }
-
-    function Position() {
-        this.line = startLineNumber;
-        this.column = startIndex - startLineStart;
-    }
-
-    function SourceLocation() {
-        this.start = new Position();
-        this.end = null;
-    }
-
-    function WrappingSourceLocation(startToken) {
-        this.start = {
-            line: startToken.lineNumber,
-            column: startToken.start - startToken.lineStart
-        };
-        this.end = null;
-    }
-
-    function Node() {
-        if (extra.range) {
-            this.range = [startIndex, 0];
-        }
-        if (extra.loc) {
-            this.loc = new SourceLocation();
-        }
-    }
-
-    function WrappingNode(startToken) {
-        if (extra.range) {
-            this.range = [startToken.start, 0];
-        }
-        if (extra.loc) {
-            this.loc = new WrappingSourceLocation(startToken);
-        }
-    }
-
-    WrappingNode.prototype = Node.prototype = {
-
-        processComment: function () {
-            var lastChild,
-                innerComments,
-                leadingComments,
-                trailingComments,
-                bottomRight = extra.bottomRightStack,
-                i,
-                comment,
-                last = bottomRight[bottomRight.length - 1];
-
-            if (this.type === Syntax.Program) {
-                if (this.body.length > 0) {
-                    return;
-                }
-            }
-            /**
-             * patch innnerComments for properties empty block
-             * `function a() {/** comments **\/}`
-             */
-
-            if (this.type === Syntax.BlockStatement && this.body.length === 0) {
-                innerComments = [];
-                for (i = extra.leadingComments.length - 1; i >= 0; --i) {
-                    comment = extra.leadingComments[i];
-                    if (this.range[1] >= comment.range[1]) {
-                        innerComments.unshift(comment);
-                        extra.leadingComments.splice(i, 1);
-                        extra.trailingComments.splice(i, 1);
-                    }
-                }
-                if (innerComments.length) {
-                    this.innerComments = innerComments;
-                    //bottomRight.push(this);
-                    return;
-                }
-            }
-
-            if (extra.trailingComments.length > 0) {
-                trailingComments = [];
-                for (i = extra.trailingComments.length - 1; i >= 0; --i) {
-                    comment = extra.trailingComments[i];
-                    if (comment.range[0] >= this.range[1]) {
-                        trailingComments.unshift(comment);
-                        extra.trailingComments.splice(i, 1);
-                    }
-                }
-                extra.trailingComments = [];
-            } else {
-                if (last && last.trailingComments && last.trailingComments[0].range[0] >= this.range[1]) {
-                    trailingComments = last.trailingComments;
-                    delete last.trailingComments;
-                }
-            }
-
-            // Eating the stack.
-            while (last && last.range[0] >= this.range[0]) {
-                lastChild = bottomRight.pop();
-                last = bottomRight[bottomRight.length - 1];
-            }
-
-            if (lastChild) {
-                if (lastChild.leadingComments) {
-                    leadingComments = [];
-                    for (i = lastChild.leadingComments.length - 1; i >= 0; --i) {
-                        comment = lastChild.leadingComments[i];
-                        if (comment.range[1] <= this.range[0]) {
-                            leadingComments.unshift(comment);
-                            lastChild.leadingComments.splice(i, 1);
-                        }
-                    }
-
-                    if (!lastChild.leadingComments.length) {
-                        lastChild.leadingComments = undefined;
-                    }
-                }
-            } else if (extra.leadingComments.length > 0) {
-                leadingComments = [];
-                for (i = extra.leadingComments.length - 1; i >= 0; --i) {
-                    comment = extra.leadingComments[i];
-                    if (comment.range[1] <= this.range[0]) {
-                        leadingComments.unshift(comment);
-                        extra.leadingComments.splice(i, 1);
-                    }
-                }
-            }
-
-
-            if (leadingComments && leadingComments.length > 0) {
-                this.leadingComments = leadingComments;
-            }
-            if (trailingComments && trailingComments.length > 0) {
-                this.trailingComments = trailingComments;
-            }
-
-            bottomRight.push(this);
-        },
-
-        finish: function () {
-            if (extra.range) {
-                this.range[1] = lastIndex;
-            }
-            if (extra.loc) {
-                this.loc.end = {
-                    line: lastLineNumber,
-                    column: lastIndex - lastLineStart
-                };
-                if (extra.source) {
-                    this.loc.source = extra.source;
-                }
-            }
-
-            if (extra.attachComment) {
-                this.processComment();
-            }
-        },
-
-        finishArrayExpression: function (elements) {
-            this.type = Syntax.ArrayExpression;
-            this.elements = elements;
-            this.finish();
-            return this;
-        },
-
-        finishArrayPattern: function (elements) {
-            this.type = Syntax.ArrayPattern;
-            this.elements = elements;
-            this.finish();
-            return this;
-        },
-
-        finishArrowFunctionExpression: function (params, defaults, body, expression) {
-            this.type = Syntax.ArrowFunctionExpression;
-            this.id = null;
-            this.params = params;
-            this.defaults = defaults;
-            this.body = body;
-            this.generator = false;
-            this.expression = expression;
-            this.finish();
-            return this;
-        },
-
-        finishAssignmentExpression: function (operator, left, right) {
-            this.type = Syntax.AssignmentExpression;
-            this.operator = operator;
-            this.left = left;
-            this.right = right;
-            this.finish();
-            return this;
-        },
-
-        finishAssignmentPattern: function (left, right) {
-            this.type = Syntax.AssignmentPattern;
-            this.left = left;
-            this.right = right;
-            this.finish();
-            return this;
-        },
-
-        finishBinaryExpression: function (operator, left, right) {
-            this.type = (operator === '||' || operator === '&&') ? Syntax.LogicalExpression : Syntax.BinaryExpression;
-            this.operator = operator;
-            this.left = left;
-            this.right = right;
-            this.finish();
-            return this;
-        },
-
-        finishBlockStatement: function (body) {
-            this.type = Syntax.BlockStatement;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishBreakStatement: function (label) {
-            this.type = Syntax.BreakStatement;
-            this.label = label;
-            this.finish();
-            return this;
-        },
-
-        finishCallExpression: function (callee, args) {
-            this.type = Syntax.CallExpression;
-            this.callee = callee;
-            this.arguments = args;
-            this.finish();
-            return this;
-        },
-
-        finishCatchClause: function (param, body) {
-            this.type = Syntax.CatchClause;
-            this.param = param;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishClassBody: function (body) {
-            this.type = Syntax.ClassBody;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishClassDeclaration: function (id, superClass, body) {
-            this.type = Syntax.ClassDeclaration;
-            this.id = id;
-            this.superClass = superClass;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishClassExpression: function (id, superClass, body) {
-            this.type = Syntax.ClassExpression;
-            this.id = id;
-            this.superClass = superClass;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishConditionalExpression: function (test, consequent, alternate) {
-            this.type = Syntax.ConditionalExpression;
-            this.test = test;
-            this.consequent = consequent;
-            this.alternate = alternate;
-            this.finish();
-            return this;
-        },
-
-        finishContinueStatement: function (label) {
-            this.type = Syntax.ContinueStatement;
-            this.label = label;
-            this.finish();
-            return this;
-        },
-
-        finishDebuggerStatement: function () {
-            this.type = Syntax.DebuggerStatement;
-            this.finish();
-            return this;
-        },
-
-        finishDoWhileStatement: function (body, test) {
-            this.type = Syntax.DoWhileStatement;
-            this.body = body;
-            this.test = test;
-            this.finish();
-            return this;
-        },
-
-        finishEmptyStatement: function () {
-            this.type = Syntax.EmptyStatement;
-            this.finish();
-            return this;
-        },
-
-        finishExpressionStatement: function (expression) {
-            this.type = Syntax.ExpressionStatement;
-            this.expression = expression;
-            this.finish();
-            return this;
-        },
-
-        finishForStatement: function (init, test, update, body) {
-            this.type = Syntax.ForStatement;
-            this.init = init;
-            this.test = test;
-            this.update = update;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishForOfStatement: function (left, right, body) {
-            this.type = Syntax.ForOfStatement;
-            this.left = left;
-            this.right = right;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishForInStatement: function (left, right, body) {
-            this.type = Syntax.ForInStatement;
-            this.left = left;
-            this.right = right;
-            this.body = body;
-            this.each = false;
-            this.finish();
-            return this;
-        },
-
-        finishFunctionDeclaration: function (id, params, defaults, body, generator) {
-            this.type = Syntax.FunctionDeclaration;
-            this.id = id;
-            this.params = params;
-            this.defaults = defaults;
-            this.body = body;
-            this.generator = generator;
-            this.expression = false;
-            this.finish();
-            return this;
-        },
-
-        finishFunctionExpression: function (id, params, defaults, body, generator) {
-            this.type = Syntax.FunctionExpression;
-            this.id = id;
-            this.params = params;
-            this.defaults = defaults;
-            this.body = body;
-            this.generator = generator;
-            this.expression = false;
-            this.finish();
-            return this;
-        },
-
-        finishIdentifier: function (name) {
-            this.type = Syntax.Identifier;
-            this.name = name;
-            this.finish();
-            return this;
-        },
-
-        finishIfStatement: function (test, consequent, alternate) {
-            this.type = Syntax.IfStatement;
-            this.test = test;
-            this.consequent = consequent;
-            this.alternate = alternate;
-            this.finish();
-            return this;
-        },
-
-        finishLabeledStatement: function (label, body) {
-            this.type = Syntax.LabeledStatement;
-            this.label = label;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishLiteral: function (token) {
-            this.type = Syntax.Literal;
-            this.value = token.value;
-            this.raw = source.slice(token.start, token.end);
-            if (token.regex) {
-                this.regex = token.regex;
-            }
-            this.finish();
-            return this;
-        },
-
-        finishMemberExpression: function (accessor, object, property) {
-            this.type = Syntax.MemberExpression;
-            this.computed = accessor === '[';
-            this.object = object;
-            this.property = property;
-            this.finish();
-            return this;
-        },
-
-        finishMetaProperty: function (meta, property) {
-            this.type = Syntax.MetaProperty;
-            this.meta = meta;
-            this.property = property;
-            this.finish();
-            return this;
-        },
-
-        finishNewExpression: function (callee, args) {
-            this.type = Syntax.NewExpression;
-            this.callee = callee;
-            this.arguments = args;
-            this.finish();
-            return this;
-        },
-
-        finishObjectExpression: function (properties) {
-            this.type = Syntax.ObjectExpression;
-            this.properties = properties;
-            this.finish();
-            return this;
-        },
-
-        finishObjectPattern: function (properties) {
-            this.type = Syntax.ObjectPattern;
-            this.properties = properties;
-            this.finish();
-            return this;
-        },
-
-        finishPostfixExpression: function (operator, argument) {
-            this.type = Syntax.UpdateExpression;
-            this.operator = operator;
-            this.argument = argument;
-            this.prefix = false;
-            this.finish();
-            return this;
-        },
-
-        finishProgram: function (body, sourceType) {
-            this.type = Syntax.Program;
-            this.body = body;
-            this.sourceType = sourceType;
-            this.finish();
-            return this;
-        },
-
-        finishProperty: function (kind, key, computed, value, method, shorthand) {
-            this.type = Syntax.Property;
-            this.key = key;
-            this.computed = computed;
-            this.value = value;
-            this.kind = kind;
-            this.method = method;
-            this.shorthand = shorthand;
-            this.finish();
-            return this;
-        },
-
-        finishRestElement: function (argument) {
-            this.type = Syntax.RestElement;
-            this.argument = argument;
-            this.finish();
-            return this;
-        },
-
-        finishReturnStatement: function (argument) {
-            this.type = Syntax.ReturnStatement;
-            this.argument = argument;
-            this.finish();
-            return this;
-        },
-
-        finishSequenceExpression: function (expressions) {
-            this.type = Syntax.SequenceExpression;
-            this.expressions = expressions;
-            this.finish();
-            return this;
-        },
-
-        finishSpreadElement: function (argument) {
-            this.type = Syntax.SpreadElement;
-            this.argument = argument;
-            this.finish();
-            return this;
-        },
-
-        finishSwitchCase: function (test, consequent) {
-            this.type = Syntax.SwitchCase;
-            this.test = test;
-            this.consequent = consequent;
-            this.finish();
-            return this;
-        },
-
-        finishSuper: function () {
-            this.type = Syntax.Super;
-            this.finish();
-            return this;
-        },
-
-        finishSwitchStatement: function (discriminant, cases) {
-            this.type = Syntax.SwitchStatement;
-            this.discriminant = discriminant;
-            this.cases = cases;
-            this.finish();
-            return this;
-        },
-
-        finishTaggedTemplateExpression: function (tag, quasi) {
-            this.type = Syntax.TaggedTemplateExpression;
-            this.tag = tag;
-            this.quasi = quasi;
-            this.finish();
-            return this;
-        },
-
-        finishTemplateElement: function (value, tail) {
-            this.type = Syntax.TemplateElement;
-            this.value = value;
-            this.tail = tail;
-            this.finish();
-            return this;
-        },
-
-        finishTemplateLiteral: function (quasis, expressions) {
-            this.type = Syntax.TemplateLiteral;
-            this.quasis = quasis;
-            this.expressions = expressions;
-            this.finish();
-            return this;
-        },
-
-        finishThisExpression: function () {
-            this.type = Syntax.ThisExpression;
-            this.finish();
-            return this;
-        },
-
-        finishThrowStatement: function (argument) {
-            this.type = Syntax.ThrowStatement;
-            this.argument = argument;
-            this.finish();
-            return this;
-        },
-
-        finishTryStatement: function (block, handler, finalizer) {
-            this.type = Syntax.TryStatement;
-            this.block = block;
-            this.guardedHandlers = [];
-            this.handlers = handler ? [handler] : [];
-            this.handler = handler;
-            this.finalizer = finalizer;
-            this.finish();
-            return this;
-        },
-
-        finishUnaryExpression: function (operator, argument) {
-            this.type = (operator === '++' || operator === '--') ? Syntax.UpdateExpression : Syntax.UnaryExpression;
-            this.operator = operator;
-            this.argument = argument;
-            this.prefix = true;
-            this.finish();
-            return this;
-        },
-
-        finishVariableDeclaration: function (declarations) {
-            this.type = Syntax.VariableDeclaration;
-            this.declarations = declarations;
-            this.kind = 'var';
-            this.finish();
-            return this;
-        },
-
-        finishLexicalDeclaration: function (declarations, kind) {
-            this.type = Syntax.VariableDeclaration;
-            this.declarations = declarations;
-            this.kind = kind;
-            this.finish();
-            return this;
-        },
-
-        finishVariableDeclarator: function (id, init) {
-            this.type = Syntax.VariableDeclarator;
-            this.id = id;
-            this.init = init;
-            this.finish();
-            return this;
-        },
-
-        finishWhileStatement: function (test, body) {
-            this.type = Syntax.WhileStatement;
-            this.test = test;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishWithStatement: function (object, body) {
-            this.type = Syntax.WithStatement;
-            this.object = object;
-            this.body = body;
-            this.finish();
-            return this;
-        },
-
-        finishExportSpecifier: function (local, exported) {
-            this.type = Syntax.ExportSpecifier;
-            this.exported = exported || local;
-            this.local = local;
-            this.finish();
-            return this;
-        },
-
-        finishImportDefaultSpecifier: function (local) {
-            this.type = Syntax.ImportDefaultSpecifier;
-            this.local = local;
-            this.finish();
-            return this;
-        },
-
-        finishImportNamespaceSpecifier: function (local) {
-            this.type = Syntax.ImportNamespaceSpecifier;
-            this.local = local;
-            this.finish();
-            return this;
-        },
-
-        finishExportNamedDeclaration: function (declaration, specifiers, src) {
-            this.type = Syntax.ExportNamedDeclaration;
-            this.declaration = declaration;
-            this.specifiers = specifiers;
-            this.source = src;
-            this.finish();
-            return this;
-        },
-
-        finishExportDefaultDeclaration: function (declaration) {
-            this.type = Syntax.ExportDefaultDeclaration;
-            this.declaration = declaration;
-            this.finish();
-            return this;
-        },
-
-        finishExportAllDeclaration: function (src) {
-            this.type = Syntax.ExportAllDeclaration;
-            this.source = src;
-            this.finish();
-            return this;
-        },
-
-        finishImportSpecifier: function (local, imported) {
-            this.type = Syntax.ImportSpecifier;
-            this.local = local || imported;
-            this.imported = imported;
-            this.finish();
-            return this;
-        },
-
-        finishImportDeclaration: function (specifiers, src) {
-            this.type = Syntax.ImportDeclaration;
-            this.specifiers = specifiers;
-            this.source = src;
-            this.finish();
-            return this;
-        },
-
-        finishYieldExpression: function (argument, delegate) {
-            this.type = Syntax.YieldExpression;
-            this.argument = argument;
-            this.delegate = delegate;
-            this.finish();
-            return this;
-        }
-    };
-
-
-    function recordError(error) {
-        var e, existing;
-
-        for (e = 0; e < extra.errors.length; e++) {
-            existing = extra.errors[e];
-            // Prevent duplicated error.
-            /* istanbul ignore next */
-            if (existing.index === error.index && existing.message === error.message) {
-                return;
-            }
-        }
-
-        extra.errors.push(error);
-    }
-
-    function constructError(msg, column) {
-        var error = new Error(msg);
-        try {
-            throw error;
-        } catch (base) {
-            /* istanbul ignore else */
-            if (Object.create && Object.defineProperty) {
-                error = Object.create(base);
-                Object.defineProperty(error, 'column', { value: column });
-            }
-        } finally {
-            return error;
-        }
-    }
-
-    function createError(line, pos, description) {
-        var msg, column, error;
-
-        msg = 'Line ' + line + ': ' + description;
-        column = pos - (scanning ? lineStart : lastLineStart) + 1;
-        error = constructError(msg, column);
-        error.lineNumber = line;
-        error.description = description;
-        error.index = pos;
-        return error;
-    }
-
-    // Throw an exception
-
-    function throwError(messageFormat) {
-        var args, msg;
-
-        args = Array.prototype.slice.call(arguments, 1);
-        msg = messageFormat.replace(/%(\d)/g,
-            function (whole, idx) {
-                assert(idx < args.length, 'Message reference must be in range');
-                return args[idx];
-            }
-        );
-
-        throw createError(lastLineNumber, lastIndex, msg);
-    }
-
-    function tolerateError(messageFormat) {
-        var args, msg, error;
-
-        args = Array.prototype.slice.call(arguments, 1);
-        /* istanbul ignore next */
-        msg = messageFormat.replace(/%(\d)/g,
-            function (whole, idx) {
-                assert(idx < args.length, 'Message reference must be in range');
-                return args[idx];
-            }
-        );
-
-        error = createError(lineNumber, lastIndex, msg);
-        if (extra.errors) {
-            recordError(error);
-        } else {
-            throw error;
-        }
-    }
-
-    // Throw an exception because of the token.
-
-    function unexpectedTokenError(token, message) {
-        var value, msg = message || Messages.UnexpectedToken;
-
-        if (token) {
-            if (!message) {
-                msg = (token.type === Token.EOF) ? Messages.UnexpectedEOS :
-                    (token.type === Token.Identifier) ? Messages.UnexpectedIdentifier :
-                    (token.type === Token.NumericLiteral) ? Messages.UnexpectedNumber :
-                    (token.type === Token.StringLiteral) ? Messages.UnexpectedString :
-                    (token.type === Token.Template) ? Messages.UnexpectedTemplate :
-                    Messages.UnexpectedToken;
-
-                if (token.type === Token.Keyword) {
-                    if (isFutureReservedWord(token.value)) {
-                        msg = Messages.UnexpectedReserved;
-                    } else if (strict && isStrictModeReservedWord(token.value)) {
-                        msg = Messages.StrictReservedWord;
-                    }
-                }
-            }
-
-            value = (token.type === Token.Template) ? token.value.raw : token.value;
-        } else {
-            value = 'ILLEGAL';
-        }
-
-        msg = msg.replace('%0', value);
-
-        return (token && typeof token.lineNumber === 'number') ?
-            createError(token.lineNumber, token.start, msg) :
-            createError(scanning ? lineNumber : lastLineNumber, scanning ? index : lastIndex, msg);
-    }
-
-    function throwUnexpectedToken(token, message) {
-        throw unexpectedTokenError(token, message);
-    }
-
-    function tolerateUnexpectedToken(token, message) {
-        var error = unexpectedTokenError(token, message);
-        if (extra.errors) {
-            recordError(error);
-        } else {
-            throw error;
-        }
-    }
-
-    // Expect the next token to match the specified punctuator.
-    // If not, an exception will be thrown.
-
-    function expect(value) {
-        var token = lex();
-        if (token.type !== Token.Punctuator || token.value !== value) {
-            throwUnexpectedToken(token);
-        }
-    }
-
-    /**
-     * @name expectCommaSeparator
-     * @description Quietly expect a comma when in tolerant mode, otherwise delegates
-     * to expect(value)
-     * @since 2.0
-     */
-    function expectCommaSeparator() {
-        var token;
-
-        if (extra.errors) {
-            token = lookahead;
-            if (token.type === Token.Punctuator && token.value === ',') {
-                lex();
-            } else if (token.type === Token.Punctuator && token.value === ';') {
-                lex();
-                tolerateUnexpectedToken(token);
-            } else {
-                tolerateUnexpectedToken(token, Messages.UnexpectedToken);
-            }
-        } else {
-            expect(',');
-        }
-    }
-
-    // Expect the next token to match the specified keyword.
-    // If not, an exception will be thrown.
-
-    function expectKeyword(keyword) {
-        var token = lex();
-        if (token.type !== Token.Keyword || token.value !== keyword) {
-            throwUnexpectedToken(token);
-        }
-    }
-
-    // Return true if the next token matches the specified punctuator.
-
-    function match(value) {
-        return lookahead.type === Token.Punctuator && lookahead.value === value;
-    }
-
-    // Return true if the next token matches the specified keyword
-
-    function matchKeyword(keyword) {
-        return lookahead.type === Token.Keyword && lookahead.value === keyword;
-    }
-
-    // Return true if the next token matches the specified contextual keyword
-    // (where an identifier is sometimes a keyword depending on the context)
-
-    function matchContextualKeyword(keyword) {
-        return lookahead.type === Token.Identifier && lookahead.value === keyword;
-    }
-
-    // Return true if the next token is an assignment operator
-
-    function matchAssign() {
-        var op;
-
-        if (lookahead.type !== Token.Punctuator) {
-            return false;
-        }
-        op = lookahead.value;
-        return op === '=' ||
-            op === '*=' ||
-            op === '/=' ||
-            op === '%=' ||
-            op === '+=' ||
-            op === '-=' ||
-            op === '<<=' ||
-            op === '>>=' ||
-            op === '>>>=' ||
-            op === '&=' ||
-            op === '^=' ||
-            op === '|=';
-    }
-
-    function consumeSemicolon() {
-        // Catch the very common case first: immediately a semicolon (U+003B).
-        if (source.charCodeAt(startIndex) === 0x3B || match(';')) {
-            lex();
-            return;
-        }
-
-        if (hasLineTerminator) {
-            return;
-        }
-
-        // FIXME(ikarienator): this is seemingly an issue in the previous location info convention.
-        lastIndex = startIndex;
-        lastLineNumber = startLineNumber;
-        lastLineStart = startLineStart;
-
-        if (lookahead.type !== Token.EOF && !match('}')) {
-            throwUnexpectedToken(lookahead);
-        }
-    }
-
-    // Cover grammar support.
-    //
-    // When an assignment expression position starts with an left parenthesis, the determination of the type
-    // of the syntax is to be deferred arbitrarily long until the end of the parentheses pair (plus a lookahead)
-    // or the first comma. This situation also defers the determination of all the expressions nested in the pair.
-    //
-    // There are three productions that can be parsed in a parentheses pair that needs to be determined
-    // after the outermost pair is closed. They are:
-    //
-    //   1. AssignmentExpression
-    //   2. BindingElements
-    //   3. AssignmentTargets
-    //
-    // In order to avoid exponential backtracking, we use two flags to denote if the production can be
-    // binding element or assignment target.
-    //
-    // The three productions have the relationship:
-    //
-    //   BindingElements ⊆ AssignmentTargets ⊆ AssignmentExpression
-    //
-    // with a single exception that CoverInitializedName when used directly in an Expression, generates
-    // an early error. Therefore, we need the third state, firstCoverInitializedNameError, to track the
-    // first usage of CoverInitializedName and report it when we reached the end of the parentheses pair.
-    //
-    // isolateCoverGrammar function runs the given parser function with a new cover grammar context, and it does not
-    // effect the current flags. This means the production the parser parses is only used as an expression. Therefore
-    // the CoverInitializedName check is conducted.
-    //
-    // inheritCoverGrammar function runs the given parse function with a new cover grammar context, and it propagates
-    // the flags outside of the parser. This means the production the parser parses is used as a part of a potential
-    // pattern. The CoverInitializedName check is deferred.
-    function isolateCoverGrammar(parser) {
-        var oldIsBindingElement = isBindingElement,
-            oldIsAssignmentTarget = isAssignmentTarget,
-            oldFirstCoverInitializedNameError = firstCoverInitializedNameError,
-            result;
-        isBindingElement = true;
-        isAssignmentTarget = true;
-        firstCoverInitializedNameError = null;
-        result = parser();
-        if (firstCoverInitializedNameError !== null) {
-            throwUnexpectedToken(firstCoverInitializedNameError);
-        }
-        isBindingElement = oldIsBindingElement;
-        isAssignmentTarget = oldIsAssignmentTarget;
-        firstCoverInitializedNameError = oldFirstCoverInitializedNameError;
-        return result;
-    }
-
-    function inheritCoverGrammar(parser) {
-        var oldIsBindingElement = isBindingElement,
-            oldIsAssignmentTarget = isAssignmentTarget,
-            oldFirstCoverInitializedNameError = firstCoverInitializedNameError,
-            result;
-        isBindingElement = true;
-        isAssignmentTarget = true;
-        firstCoverInitializedNameError = null;
-        result = parser();
-        isBindingElement = isBindingElement && oldIsBindingElement;
-        isAssignmentTarget = isAssignmentTarget && oldIsAssignmentTarget;
-        firstCoverInitializedNameError = oldFirstCoverInitializedNameError || firstCoverInitializedNameError;
-        return result;
-    }
-
-    // ECMA-262 13.3.3 Destructuring Binding Patterns
-
-    function parseArrayPattern(params, kind) {
-        var node = new Node(), elements = [], rest, restNode;
-        expect('[');
-
-        while (!match(']')) {
-            if (match(',')) {
-                lex();
-                elements.push(null);
-            } else {
-                if (match('...')) {
-                    restNode = new Node();
-                    lex();
-                    params.push(lookahead);
-                    rest = parseVariableIdentifier(kind);
-                    elements.push(restNode.finishRestElement(rest));
-                    break;
-                } else {
-                    elements.push(parsePatternWithDefault(params, kind));
-                }
-                if (!match(']')) {
-                    expect(',');
-                }
-            }
-
-        }
-
-        expect(']');
-
-        return node.finishArrayPattern(elements);
-    }
-
-    function parsePropertyPattern(params, kind) {
-        var node = new Node(), key, keyToken, computed = match('['), init;
-        if (lookahead.type === Token.Identifier) {
-            keyToken = lookahead;
-            key = parseVariableIdentifier();
-            if (match('=')) {
-                params.push(keyToken);
-                lex();
-                init = parseAssignmentExpression();
-
-                return node.finishProperty(
-                    'init', key, false,
-                    new WrappingNode(keyToken).finishAssignmentPattern(key, init), false, true);
-            } else if (!match(':')) {
-                params.push(keyToken);
-                return node.finishProperty('init', key, false, key, false, true);
-            }
-        } else {
-            key = parseObjectPropertyKey();
-        }
-        expect(':');
-        init = parsePatternWithDefault(params, kind);
-        return node.finishProperty('init', key, computed, init, false, false);
-    }
-
-    function parseObjectPattern(params, kind) {
-        var node = new Node(), properties = [];
-
-        expect('{');
-
-        while (!match('}')) {
-            properties.push(parsePropertyPattern(params, kind));
-            if (!match('}')) {
-                expect(',');
-            }
-        }
-
-        lex();
-
-        return node.finishObjectPattern(properties);
-    }
-
-    function parsePattern(params, kind) {
-        if (match('[')) {
-            return parseArrayPattern(params, kind);
-        } else if (match('{')) {
-            return parseObjectPattern(params, kind);
-        } else if (matchKeyword('let')) {
-            if (kind === 'const' || kind === 'let') {
-                tolerateUnexpectedToken(lookahead, Messages.UnexpectedToken);
-            }
-        }
-
-        params.push(lookahead);
-        return parseVariableIdentifier(kind);
-    }
-
-    function parsePatternWithDefault(params, kind) {
-        var startToken = lookahead, pattern, previousAllowYield, right;
-        pattern = parsePattern(params, kind);
-        if (match('=')) {
-            lex();
-            previousAllowYield = state.allowYield;
-            state.allowYield = true;
-            right = isolateCoverGrammar(parseAssignmentExpression);
-            state.allowYield = previousAllowYield;
-            pattern = new WrappingNode(startToken).finishAssignmentPattern(pattern, right);
-        }
-        return pattern;
-    }
-
-    // ECMA-262 12.2.5 Array Initializer
-
-    function parseArrayInitializer() {
-        var elements = [], node = new Node(), restSpread;
-
-        expect('[');
-
-        while (!match(']')) {
-            if (match(',')) {
-                lex();
-                elements.push(null);
-            } else if (match('...')) {
-                restSpread = new Node();
-                lex();
-                restSpread.finishSpreadElement(inheritCoverGrammar(parseAssignmentExpression));
-
-                if (!match(']')) {
-                    isAssignmentTarget = isBindingElement = false;
-                    expect(',');
-                }
-                elements.push(restSpread);
-            } else {
-                elements.push(inheritCoverGrammar(parseAssignmentExpression));
-
-                if (!match(']')) {
-                    expect(',');
-                }
-            }
-        }
-
-        lex();
-
-        return node.finishArrayExpression(elements);
-    }
-
-    // ECMA-262 12.2.6 Object Initializer
-
-    function parsePropertyFunction(node, paramInfo, isGenerator) {
-        var previousStrict, body;
-
-        isAssignmentTarget = isBindingElement = false;
-
-        previousStrict = strict;
-        body = isolateCoverGrammar(parseFunctionSourceElements);
-
-        if (strict && paramInfo.firstRestricted) {
-            tolerateUnexpectedToken(paramInfo.firstRestricted, paramInfo.message);
-        }
-        if (strict && paramInfo.stricted) {
-            tolerateUnexpectedToken(paramInfo.stricted, paramInfo.message);
-        }
-
-        strict = previousStrict;
-        return node.finishFunctionExpression(null, paramInfo.params, paramInfo.defaults, body, isGenerator);
-    }
-
-    function parsePropertyMethodFunction() {
-        var params, method, node = new Node(),
-            previousAllowYield = state.allowYield;
-
-        state.allowYield = false;
-        params = parseParams();
-        state.allowYield = previousAllowYield;
-
-        state.allowYield = false;
-        method = parsePropertyFunction(node, params, false);
-        state.allowYield = previousAllowYield;
-
-        return method;
-    }
-
-    function parseObjectPropertyKey() {
-        var token, node = new Node(), expr;
-
-        token = lex();
-
-        // Note: This function is called only from parseObjectProperty(), where
-        // EOF and Punctuator tokens are already filtered out.
-
-        switch (token.type) {
-        case Token.StringLiteral:
-        case Token.NumericLiteral:
-            if (strict && token.octal) {
-                tolerateUnexpectedToken(token, Messages.StrictOctalLiteral);
-            }
-            return node.finishLiteral(token);
-        case Token.Identifier:
-        case Token.BooleanLiteral:
-        case Token.NullLiteral:
-        case Token.Keyword:
-            return node.finishIdentifier(token.value);
-        case Token.Punctuator:
-            if (token.value === '[') {
-                expr = isolateCoverGrammar(parseAssignmentExpression);
-                expect(']');
-                return expr;
-            }
-            break;
-        }
-        throwUnexpectedToken(token);
-    }
-
-    function lookaheadPropertyName() {
-        switch (lookahead.type) {
-        case Token.Identifier:
-        case Token.StringLiteral:
-        case Token.BooleanLiteral:
-        case Token.NullLiteral:
-        case Token.NumericLiteral:
-        case Token.Keyword:
-            return true;
-        case Token.Punctuator:
-            return lookahead.value === '[';
-        }
-        return false;
-    }
-
-    // This function is to try to parse a MethodDefinition as defined in 14.3. But in the case of object literals,
-    // it might be called at a position where there is in fact a short hand identifier pattern or a data property.
-    // This can only be determined after we consumed up to the left parentheses.
-    //
-    // In order to avoid back tracking, it returns `null` if the position is not a MethodDefinition and the caller
-    // is responsible to visit other options.
-    function tryParseMethodDefinition(token, key, computed, node) {
-        var value, options, methodNode, params,
-            previousAllowYield = state.allowYield;
-
-        if (token.type === Token.Identifier) {
-            // check for `get` and `set`;
-
-            if (token.value === 'get' && lookaheadPropertyName()) {
-                computed = match('[');
-                key = parseObjectPropertyKey();
-                methodNode = new Node();
-                expect('(');
-                expect(')');
-
-                state.allowYield = false;
-                value = parsePropertyFunction(methodNode, {
-                    params: [],
-                    defaults: [],
-                    stricted: null,
-                    firstRestricted: null,
-                    message: null
-                }, false);
-                state.allowYield = previousAllowYield;
-
-                return node.finishProperty('get', key, computed, value, false, false);
-            } else if (token.value === 'set' && lookaheadPropertyName()) {
-                computed = match('[');
-                key = parseObjectPropertyKey();
-                methodNode = new Node();
-                expect('(');
-
-                options = {
-                    params: [],
-                    defaultCount: 0,
-                    defaults: [],
-                    firstRestricted: null,
-                    paramSet: {}
-                };
-                if (match(')')) {
-                    tolerateUnexpectedToken(lookahead);
-                } else {
-                    state.allowYield = false;
-                    parseParam(options);
-                    state.allowYield = previousAllowYield;
-                    if (options.defaultCount === 0) {
-                        options.defaults = [];
-                    }
-                }
-                expect(')');
-
-                state.allowYield = false;
-                value = parsePropertyFunction(methodNode, options, false);
-                state.allowYield = previousAllowYield;
-
-                return node.finishProperty('set', key, computed, value, false, false);
-            }
-        } else if (token.type === Token.Punctuator && token.value === '*' && lookaheadPropertyName()) {
-            computed = match('[');
-            key = parseObjectPropertyKey();
-            methodNode = new Node();
-
-            state.allowYield = true;
-            params = parseParams();
-            state.allowYield = previousAllowYield;
-
-            state.allowYield = false;
-            value = parsePropertyFunction(methodNode, params, true);
-            state.allowYield = previousAllowYield;
-
-            return node.finishProperty('init', key, computed, value, true, false);
-        }
-
-        if (key && match('(')) {
-            value = parsePropertyMethodFunction();
-            return node.finishProperty('init', key, computed, value, true, false);
-        }
-
-        // Not a MethodDefinition.
-        return null;
-    }
-
-    function parseObjectProperty(hasProto) {
-        var token = lookahead, node = new Node(), computed, key, maybeMethod, proto, value;
-
-        computed = match('[');
-        if (match('*')) {
-            lex();
-        } else {
-            key = parseObjectPropertyKey();
-        }
-        maybeMethod = tryParseMethodDefinition(token, key, computed, node);
-        if (maybeMethod) {
-            return maybeMethod;
-        }
-
-        if (!key) {
-            throwUnexpectedToken(lookahead);
-        }
-
-        // Check for duplicated __proto__
-        if (!computed) {
-            proto = (key.type === Syntax.Identifier && key.name === '__proto__') ||
-                (key.type === Syntax.Literal && key.value === '__proto__');
-            if (hasProto.value && proto) {
-                tolerateError(Messages.DuplicateProtoProperty);
-            }
-            hasProto.value |= proto;
-        }
-
-        if (match(':')) {
-            lex();
-            value = inheritCoverGrammar(parseAssignmentExpression);
-            return node.finishProperty('init', key, computed, value, false, false);
-        }
-
-        if (token.type === Token.Identifier) {
-            if (match('=')) {
-                firstCoverInitializedNameError = lookahead;
-                lex();
-                value = isolateCoverGrammar(parseAssignmentExpression);
-                return node.finishProperty('init', key, computed,
-                    new WrappingNode(token).finishAssignmentPattern(key, value), false, true);
-            }
-            return node.finishProperty('init', key, computed, key, false, true);
-        }
-
-        throwUnexpectedToken(lookahead);
-    }
-
-    function parseObjectInitializer() {
-        var properties = [], hasProto = {value: false}, node = new Node();
-
-        expect('{');
-
-        while (!match('}')) {
-            properties.push(parseObjectProperty(hasProto));
-
-            if (!match('}')) {
-                expectCommaSeparator();
-            }
-        }
-
-        expect('}');
-
-        return node.finishObjectExpression(properties);
-    }
-
-    function reinterpretExpressionAsPattern(expr) {
-        var i;
-        switch (expr.type) {
-        case Syntax.Identifier:
-        case Syntax.MemberExpression:
-        case Syntax.RestElement:
-        case Syntax.AssignmentPattern:
-            break;
-        case Syntax.SpreadElement:
-            expr.type = Syntax.RestElement;
-            reinterpretExpressionAsPattern(expr.argument);
-            break;
-        case Syntax.ArrayExpression:
-            expr.type = Syntax.ArrayPattern;
-            for (i = 0; i < expr.elements.length; i++) {
-                if (expr.elements[i] !== null) {
-                    reinterpretExpressionAsPattern(expr.elements[i]);
-                }
-            }
-            break;
-        case Syntax.ObjectExpression:
-            expr.type = Syntax.ObjectPattern;
-            for (i = 0; i < expr.properties.length; i++) {
-                reinterpretExpressionAsPattern(expr.properties[i].value);
-            }
-            break;
-        case Syntax.AssignmentExpression:
-            expr.type = Syntax.AssignmentPattern;
-            reinterpretExpressionAsPattern(expr.left);
-            break;
-        default:
-            // Allow other node type for tolerant parsing.
-            break;
-        }
-    }
-
-    // ECMA-262 12.2.9 Template Literals
-
-    function parseTemplateElement(option) {
-        var node, token;
-
-        if (lookahead.type !== Token.Template || (option.head && !lookahead.head)) {
-            throwUnexpectedToken();
-        }
-
-        node = new Node();
-        token = lex();
-
-        return node.finishTemplateElement({ raw: token.value.raw, cooked: token.value.cooked }, token.tail);
-    }
-
-    function parseTemplateLiteral() {
-        var quasi, quasis, expressions, node = new Node();
-
-        quasi = parseTemplateElement({ head: true });
-        quasis = [quasi];
-        expressions = [];
-
-        while (!quasi.tail) {
-            expressions.push(parseExpression());
-            quasi = parseTemplateElement({ head: false });
-            quasis.push(quasi);
-        }
-
-        return node.finishTemplateLiteral(quasis, expressions);
-    }
-
-    // ECMA-262 12.2.10 The Grouping Operator
-
-    function parseGroupExpression() {
-        var expr, expressions, startToken, i, params = [];
-
-        expect('(');
-
-        if (match(')')) {
-            lex();
-            if (!match('=>')) {
-                expect('=>');
-            }
-            return {
-                type: PlaceHolders.ArrowParameterPlaceHolder,
-                params: [],
-                rawParams: []
-            };
-        }
-
-        startToken = lookahead;
-        if (match('...')) {
-            expr = parseRestElement(params);
-            expect(')');
-            if (!match('=>')) {
-                expect('=>');
-            }
-            return {
-                type: PlaceHolders.ArrowParameterPlaceHolder,
-                params: [expr]
-            };
-        }
-
-        isBindingElement = true;
-        expr = inheritCoverGrammar(parseAssignmentExpression);
-
-        if (match(',')) {
-            isAssignmentTarget = false;
-            expressions = [expr];
-
-            while (startIndex < length) {
-                if (!match(',')) {
-                    break;
-                }
-                lex();
-
-                if (match('...')) {
-                    if (!isBindingElement) {
-                        throwUnexpectedToken(lookahead);
-                    }
-                    expressions.push(parseRestElement(params));
-                    expect(')');
-                    if (!match('=>')) {
-                        expect('=>');
-                    }
-                    isBindingElement = false;
-                    for (i = 0; i < expressions.length; i++) {
-                        reinterpretExpressionAsPattern(expressions[i]);
-                    }
-                    return {
-                        type: PlaceHolders.ArrowParameterPlaceHolder,
-                        params: expressions
-                    };
-                }
-
-                expressions.push(inheritCoverGrammar(parseAssignmentExpression));
-            }
-
-            expr = new WrappingNode(startToken).finishSequenceExpression(expressions);
-        }
-
-
-        expect(')');
-
-        if (match('=>')) {
-            if (expr.type === Syntax.Identifier && expr.name === 'yield') {
-                return {
-                    type: PlaceHolders.ArrowParameterPlaceHolder,
-                    params: [expr]
-                };
-            }
-
-            if (!isBindingElement) {
-                throwUnexpectedToken(lookahead);
-            }
-
-            if (expr.type === Syntax.SequenceExpression) {
-                for (i = 0; i < expr.expressions.length; i++) {
-                    reinterpretExpressionAsPattern(expr.expressions[i]);
-                }
-            } else {
-                reinterpretExpressionAsPattern(expr);
-            }
-
-            expr = {
-                type: PlaceHolders.ArrowParameterPlaceHolder,
-                params: expr.type === Syntax.SequenceExpression ? expr.expressions : [expr]
-            };
-        }
-        isBindingElement = false;
-        return expr;
-    }
-
-
-    // ECMA-262 12.2 Primary Expressions
-
-    function parsePrimaryExpression() {
-        var type, token, expr, node;
-
-        if (match('(')) {
-            isBindingElement = false;
-            return inheritCoverGrammar(parseGroupExpression);
-        }
-
-        if (match('[')) {
-            return inheritCoverGrammar(parseArrayInitializer);
-        }
-
-        if (match('{')) {
-            return inheritCoverGrammar(parseObjectInitializer);
-        }
-
-        type = lookahead.type;
-        node = new Node();
-
-        if (type === Token.Identifier) {
-            if (state.sourceType === 'module' && lookahead.value === 'await') {
-                tolerateUnexpectedToken(lookahead);
-            }
-            expr = node.finishIdentifier(lex().value);
-        } else if (type === Token.StringLiteral || type === Token.NumericLiteral) {
-            isAssignmentTarget = isBindingElement = false;
-            if (strict && lookahead.octal) {
-                tolerateUnexpectedToken(lookahead, Messages.StrictOctalLiteral);
-            }
-            expr = node.finishLiteral(lex());
-        } else if (type === Token.Keyword) {
-            if (!strict && state.allowYield && matchKeyword('yield')) {
-                return parseNonComputedProperty();
-            }
-            if (!strict && matchKeyword('let')) {
-                return node.finishIdentifier(lex().value);
-            }
-            isAssignmentTarget = isBindingElement = false;
-            if (matchKeyword('function')) {
-                return parseFunctionExpression();
-            }
-            if (matchKeyword('this')) {
-                lex();
-                return node.finishThisExpression();
-            }
-            if (matchKeyword('class')) {
-                return parseClassExpression();
-            }
-            throwUnexpectedToken(lex());
-        } else if (type === Token.BooleanLiteral) {
-            isAssignmentTarget = isBindingElement = false;
-            token = lex();
-            token.value = (token.value === 'true');
-            expr = node.finishLiteral(token);
-        } else if (type === Token.NullLiteral) {
-            isAssignmentTarget = isBindingElement = false;
-            token = lex();
-            token.value = null;
-            expr = node.finishLiteral(token);
-        } else if (match('/') || match('/=')) {
-            isAssignmentTarget = isBindingElement = false;
-            index = startIndex;
-
-            if (typeof extra.tokens !== 'undefined') {
-                token = collectRegex();
-            } else {
-                token = scanRegExp();
-            }
-            lex();
-            expr = node.finishLiteral(token);
-        } else if (type === Token.Template) {
-            expr = parseTemplateLiteral();
-        } else {
-            throwUnexpectedToken(lex());
-        }
-
-        return expr;
-    }
-
-    // ECMA-262 12.3 Left-Hand-Side Expressions
-
-    function parseArguments() {
-        var args = [], expr;
-
-        expect('(');
-
-        if (!match(')')) {
-            while (startIndex < length) {
-                if (match('...')) {
-                    expr = new Node();
-                    lex();
-                    expr.finishSpreadElement(isolateCoverGrammar(parseAssignmentExpression));
-                } else {
-                    expr = isolateCoverGrammar(parseAssignmentExpression);
-                }
-                args.push(expr);
-                if (match(')')) {
-                    break;
-                }
-                expectCommaSeparator();
-            }
-        }
-
-        expect(')');
-
-        return args;
-    }
-
-    function parseNonComputedProperty() {
-        var token, node = new Node();
-
-        token = lex();
-
-        if (!isIdentifierName(token)) {
-            throwUnexpectedToken(token);
-        }
-
-        return node.finishIdentifier(token.value);
-    }
-
-    function parseNonComputedMember() {
-        expect('.');
-
-        return parseNonComputedProperty();
-    }
-
-    function parseComputedMember() {
-        var expr;
-
-        expect('[');
-
-        expr = isolateCoverGrammar(parseExpression);
-
-        expect(']');
-
-        return expr;
-    }
-
-    // ECMA-262 12.3.3 The new Operator
-
-    function parseNewExpression() {
-        var callee, args, node = new Node();
-
-        expectKeyword('new');
-
-        if (match('.')) {
-            lex();
-            if (lookahead.type === Token.Identifier && lookahead.value === 'target') {
-                if (state.inFunctionBody) {
-                    lex();
-                    return node.finishMetaProperty('new', 'target');
-                }
-            }
-            throwUnexpectedToken(lookahead);
-        }
-
-        callee = isolateCoverGrammar(parseLeftHandSideExpression);
-        args = match('(') ? parseArguments() : [];
-
-        isAssignmentTarget = isBindingElement = false;
-
-        return node.finishNewExpression(callee, args);
-    }
-
-    // ECMA-262 12.3.4 Function Calls
-
-    function parseLeftHandSideExpressionAllowCall() {
-        var quasi, expr, args, property, startToken, previousAllowIn = state.allowIn;
-
-        startToken = lookahead;
-        state.allowIn = true;
-
-        if (matchKeyword('super') && state.inFunctionBody) {
-            expr = new Node();
-            lex();
-            expr = expr.finishSuper();
-            if (!match('(') && !match('.') && !match('[')) {
-                throwUnexpectedToken(lookahead);
-            }
-        } else {
-            expr = inheritCoverGrammar(matchKeyword('new') ? parseNewExpression : parsePrimaryExpression);
-        }
-
-        for (;;) {
-            if (match('.')) {
-                isBindingElement = false;
-                isAssignmentTarget = true;
-                property = parseNonComputedMember();
-                expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);
-            } else if (match('(')) {
-                isBindingElement = false;
-                isAssignmentTarget = false;
-                args = parseArguments();
-                expr = new WrappingNode(startToken).finishCallExpression(expr, args);
-            } else if (match('[')) {
-                isBindingElement = false;
-                isAssignmentTarget = true;
-                property = parseComputedMember();
-                expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);
-            } else if (lookahead.type === Token.Template && lookahead.head) {
-                quasi = parseTemplateLiteral();
-                expr = new WrappingNode(startToken).finishTaggedTemplateExpression(expr, quasi);
-            } else {
-                break;
-            }
-        }
-        state.allowIn = previousAllowIn;
-
-        return expr;
-    }
-
-    // ECMA-262 12.3 Left-Hand-Side Expressions
-
-    function parseLeftHandSideExpression() {
-        var quasi, expr, property, startToken;
-        assert(state.allowIn, 'callee of new expression always allow in keyword.');
-
-        startToken = lookahead;
-
-        if (matchKeyword('super') && state.inFunctionBody) {
-            expr = new Node();
-            lex();
-            expr = expr.finishSuper();
-            if (!match('[') && !match('.')) {
-                throwUnexpectedToken(lookahead);
-            }
-        } else {
-            expr = inheritCoverGrammar(matchKeyword('new') ? parseNewExpression : parsePrimaryExpression);
-        }
-
-        for (;;) {
-            if (match('[')) {
-                isBindingElement = false;
-                isAssignmentTarget = true;
-                property = parseComputedMember();
-                expr = new WrappingNode(startToken).finishMemberExpression('[', expr, property);
-            } else if (match('.')) {
-                isBindingElement = false;
-                isAssignmentTarget = true;
-                property = parseNonComputedMember();
-                expr = new WrappingNode(startToken).finishMemberExpression('.', expr, property);
-            } else if (lookahead.type === Token.Template && lookahead.head) {
-                quasi = parseTemplateLiteral();
-                expr = new WrappingNode(startToken).finishTaggedTemplateExpression(expr, quasi);
-            } else {
-                break;
-            }
-        }
-        return expr;
-    }
-
-    // ECMA-262 12.4 Postfix Expressions
-
-    function parsePostfixExpression() {
-        var expr, token, startToken = lookahead;
-
-        expr = inheritCoverGrammar(parseLeftHandSideExpressionAllowCall);
-
-        if (!hasLineTerminator && lookahead.type === Token.Punctuator) {
-            if (match('++') || match('--')) {
-                // ECMA-262 11.3.1, 11.3.2
-                if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
-                    tolerateError(Messages.StrictLHSPostfix);
-                }
-
-                if (!isAssignmentTarget) {
-                    tolerateError(Messages.InvalidLHSInAssignment);
-                }
-
-                isAssignmentTarget = isBindingElement = false;
-
-                token = lex();
-                expr = new WrappingNode(startToken).finishPostfixExpression(token.value, expr);
-            }
-        }
-
-        return expr;
-    }
-
-    // ECMA-262 12.5 Unary Operators
-
-    function parseUnaryExpression() {
-        var token, expr, startToken;
-
-        if (lookahead.type !== Token.Punctuator && lookahead.type !== Token.Keyword) {
-            expr = parsePostfixExpression();
-        } else if (match('++') || match('--')) {
-            startToken = lookahead;
-            token = lex();
-            expr = inheritCoverGrammar(parseUnaryExpression);
-            // ECMA-262 11.4.4, 11.4.5
-            if (strict && expr.type === Syntax.Identifier && isRestrictedWord(expr.name)) {
-                tolerateError(Messages.StrictLHSPrefix);
-            }
-
-            if (!isAssignmentTarget) {
-                tolerateError(Messages.InvalidLHSInAssignment);
-            }
-            expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);
-            isAssignmentTarget = isBindingElement = false;
-        } else if (match('+') || match('-') || match('~') || match('!')) {
-            startToken = lookahead;
-            token = lex();
-            expr = inheritCoverGrammar(parseUnaryExpression);
-            expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);
-            isAssignmentTarget = isBindingElement = false;
-        } else if (matchKeyword('delete') || matchKeyword('void') || matchKeyword('typeof')) {
-            startToken = lookahead;
-            token = lex();
-            expr = inheritCoverGrammar(parseUnaryExpression);
-            expr = new WrappingNode(startToken).finishUnaryExpression(token.value, expr);
-            if (strict && expr.operator === 'delete' && expr.argument.type === Syntax.Identifier) {
-                tolerateError(Messages.StrictDelete);
-            }
-            isAssignmentTarget = isBindingElement = false;
-        } else {
-            expr = parsePostfixExpression();
-        }
-
-        return expr;
-    }
-
-    function binaryPrecedence(token, allowIn) {
-        var prec = 0;
-
-        if (token.type !== Token.Punctuator && token.type !== Token.Keyword) {
-            return 0;
-        }
-
-        switch (token.value) {
-        case '||':
-            prec = 1;
-            break;
-
-        case '&&':
-            prec = 2;
-            break;
-
-        case '|':
-            prec = 3;
-            break;
-
-        case '^':
-            prec = 4;
-            break;
-
-        case '&':
-            prec = 5;
-            break;
-
-        case '==':
-        case '!=':
-        case '===':
-        case '!==':
-            prec = 6;
-            break;
-
-        case '<':
-        case '>':
-        case '<=':
-        case '>=':
-        case 'instanceof':
-            prec = 7;
-            break;
-
-        case 'in':
-            prec = allowIn ? 7 : 0;
-            break;
-
-        case '<<':
-        case '>>':
-        case '>>>':
-            prec = 8;
-            break;
-
-        case '+':
-        case '-':
-            prec = 9;
-            break;
-
-        case '*':
-        case '/':
-        case '%':
-            prec = 11;
-            break;
-
-        default:
-            break;
-        }
-
-        return prec;
-    }
-
-    // ECMA-262 12.6 Multiplicative Operators
-    // ECMA-262 12.7 Additive Operators
-    // ECMA-262 12.8 Bitwise Shift Operators
-    // ECMA-262 12.9 Relational Operators
-    // ECMA-262 12.10 Equality Operators
-    // ECMA-262 12.11 Binary Bitwise Operators
-    // ECMA-262 12.12 Binary Logical Operators
-
-    function parseBinaryExpression() {
-        var marker, markers, expr, token, prec, stack, right, operator, left, i;
-
-        marker = lookahead;
-        left = inheritCoverGrammar(parseUnaryExpression);
-
-        token = lookahead;
-        prec = binaryPrecedence(token, state.allowIn);
-        if (prec === 0) {
-            return left;
-        }
-        isAssignmentTarget = isBindingElement = false;
-        token.prec = prec;
-        lex();
-
-        markers = [marker, lookahead];
-        right = isolateCoverGrammar(parseUnaryExpression);
-
-        stack = [left, token, right];
-
-        while ((prec = binaryPrecedence(lookahead, state.allowIn)) > 0) {
-
-            // Reduce: make a binary expression from the three topmost entries.
-            while ((stack.length > 2) && (prec <= stack[stack.length - 2].prec)) {
-                right = stack.pop();
-                operator = stack.pop().value;
-                left = stack.pop();
-                markers.pop();
-                expr = new WrappingNode(markers[markers.length - 1]).finishBinaryExpression(operator, left, right);
-                stack.push(expr);
-            }
-
-            // Shift.
-            token = lex();
-            token.prec = prec;
-            stack.push(token);
-            markers.push(lookahead);
-            expr = isolateCoverGrammar(parseUnaryExpression);
-            stack.push(expr);
-        }
-
-        // Final reduce to clean-up the stack.
-        i = stack.length - 1;
-        expr = stack[i];
-        markers.pop();
-        while (i > 1) {
-            expr = new WrappingNode(markers.pop()).finishBinaryExpression(stack[i - 1].value, stack[i - 2], expr);
-            i -= 2;
-        }
-
-        return expr;
-    }
-
-
-    // ECMA-262 12.13 Conditional Operator
-
-    function parseConditionalExpression() {
-        var expr, previousAllowIn, consequent, alternate, startToken;
-
-        startToken = lookahead;
-
-        expr = inheritCoverGrammar(parseBinaryExpression);
-        if (match('?')) {
-            lex();
-            previousAllowIn = state.allowIn;
-            state.allowIn = true;
-            consequent = isolateCoverGrammar(parseAssignmentExpression);
-            state.allowIn = previousAllowIn;
-            expect(':');
-            alternate = isolateCoverGrammar(parseAssignmentExpression);
-
-            expr = new WrappingNode(startToken).finishConditionalExpression(expr, consequent, alternate);
-            isAssignmentTarget = isBindingElement = false;
-        }
-
-        return expr;
-    }
-
-    // ECMA-262 14.2 Arrow Function Definitions
-
-    function parseConciseBody() {
-        if (match('{')) {
-            return parseFunctionSourceElements();
-        }
-        return isolateCoverGrammar(parseAssignmentExpression);
-    }
-
-    function checkPatternParam(options, param) {
-        var i;
-        switch (param.type) {
-        case Syntax.Identifier:
-            validateParam(options, param, param.name);
-            break;
-        case Syntax.RestElement:
-            checkPatternParam(options, param.argument);
-            break;
-        case Syntax.AssignmentPattern:
-            checkPatternParam(options, param.left);
-            break;
-        case Syntax.ArrayPattern:
-            for (i = 0; i < param.elements.length; i++) {
-                if (param.elements[i] !== null) {
-                    checkPatternParam(options, param.elements[i]);
-                }
-            }
-            break;
-        case Syntax.YieldExpression:
-            break;
-        default:
-            assert(param.type === Syntax.ObjectPattern, 'Invalid type');
-            for (i = 0; i < param.properties.length; i++) {
-                checkPatternParam(options, param.properties[i].value);
-            }
-            break;
-        }
-    }
-    function reinterpretAsCoverFormalsList(expr) {
-        var i, len, param, params, defaults, defaultCount, options, token;
-
-        defaults = [];
-        defaultCount = 0;
-        params = [expr];
-
-        switch (expr.type) {
-        case Syntax.Identifier:
-            break;
-        case PlaceHolders.ArrowParameterPlaceHolder:
-            params = expr.params;
-            break;
-        default:
-            return null;
-        }
-
-        options = {
-            paramSet: {}
-        };
-
-        for (i = 0, len = params.length; i < len; i += 1) {
-            param = params[i];
-            switch (param.type) {
-            case Syntax.AssignmentPattern:
-                params[i] = param.left;
-                if (param.right.type === Syntax.YieldExpression) {
-                    if (param.right.argument) {
-                        throwUnexpectedToken(lookahead);
-                    }
-                    param.right.type = Syntax.Identifier;
-                    param.right.name = 'yield';
-                    delete param.right.argument;
-                    delete param.right.delegate;
-                }
-                defaults.push(param.right);
-                ++defaultCount;
-                checkPatternParam(options, param.left);
-                break;
-            default:
-                checkPatternParam(options, param);
-                params[i] = param;
-                defaults.push(null);
-                break;
-            }
-        }
-
-        if (strict || !state.allowYield) {
-            for (i = 0, len = params.length; i < len; i += 1) {
-                param = params[i];
-                if (param.type === Syntax.YieldExpression) {
-                    throwUnexpectedToken(lookahead);
-                }
-            }
-        }
-
-        if (options.message === Messages.StrictParamDupe) {
-            token = strict ? options.stricted : options.firstRestricted;
-            throwUnexpectedToken(token, options.message);
-        }
-
-        if (defaultCount === 0) {
-            defaults = [];
-        }
-
-        return {
-            params: params,
-            defaults: defaults,
-            stricted: options.stricted,
-            firstRestricted: options.firstRestricted,
-            message: options.message
-        };
-    }
-
-    function parseArrowFunctionExpression(options, node) {
-        var previousStrict, previousAllowYield, body;
-
-        if (hasLineTerminator) {
-            tolerateUnexpectedToken(lookahead);
-        }
-        expect('=>');
-
-        previousStrict = strict;
-        previousAllowYield = state.allowYield;
-        state.allowYield = true;
-
-        body = parseConciseBody();
-
-        if (strict && options.firstRestricted) {
-            throwUnexpectedToken(options.firstRestricted, options.message);
-        }
-        if (strict && options.stricted) {
-            tolerateUnexpectedToken(options.stricted, options.message);
-        }
-
-        strict = previousStrict;
-        state.allowYield = previousAllowYield;
-
-        return node.finishArrowFunctionExpression(options.params, options.defaults, body, body.type !== Syntax.BlockStatement);
-    }
-
-    // ECMA-262 14.4 Yield expression
-
-    function parseYieldExpression() {
-        var argument, expr, delegate, previousAllowYield;
-
-        argument = null;
-        expr = new Node();
-        delegate = false;
-
-        expectKeyword('yield');
-
-        if (!hasLineTerminator) {
-            previousAllowYield = state.allowYield;
-            state.allowYield = false;
-            delegate = match('*');
-            if (delegate) {
-                lex();
-                argument = parseAssignmentExpression();
-            } else {
-                if (!match(';') && !match('}') && !match(')') && lookahead.type !== Token.EOF) {
-                    argument = parseAssignmentExpression();
-                }
-            }
-            state.allowYield = previousAllowYield;
-        }
-
-        return expr.finishYieldExpression(argument, delegate);
-    }
-
-    // ECMA-262 12.14 Assignment Operators
-
-    function parseAssignmentExpression() {
-        var token, expr, right, list, startToken;
-
-        startToken = lookahead;
-        token = lookahead;
-
-        if (!state.allowYield && matchKeyword('yield')) {
-            return parseYieldExpression();
-        }
-
-        expr = parseConditionalExpression();
-
-        if (expr.type === PlaceHolders.ArrowParameterPlaceHolder || match('=>')) {
-            isAssignmentTarget = isBindingElement = false;
-            list = reinterpretAsCoverFormalsList(expr);
-
-            if (list) {
-                firstCoverInitializedNameError = null;
-                return parseArrowFunctionExpression(list, new WrappingNode(startToken));
-            }
-
-            return expr;
-        }
-
-        if (matchAssign()) {
-            if (!isAssignmentTarget) {
-                tolerateError(Messages.InvalidLHSInAssignment);
-            }
-
-            // ECMA-262 12.1.1
-            if (strict && expr.type === Syntax.Identifier) {
-                if (isRestrictedWord(expr.name)) {
-                    tolerateUnexpectedToken(token, Messages.StrictLHSAssignment);
-                }
-                if (isStrictModeReservedWord(expr.name)) {
-                    tolerateUnexpectedToken(token, Messages.StrictReservedWord);
-                }
-            }
-
-            if (!match('=')) {
-                isAssignmentTarget = isBindingElement = false;
-            } else {
-                reinterpretExpressionAsPattern(expr);
-            }
-
-            token = lex();
-            right = isolateCoverGrammar(parseAssignmentExpression);
-            expr = new WrappingNode(startToken).finishAssignmentExpression(token.value, expr, right);
-            firstCoverInitializedNameError = null;
-        }
-
-        return expr;
-    }
-
-    // ECMA-262 12.15 Comma Operator
-
-    function parseExpression() {
-        var expr, startToken = lookahead, expressions;
-
-        expr = isolateCoverGrammar(parseAssignmentExpression);
-
-        if (match(',')) {
-            expressions = [expr];
-
-            while (startIndex < length) {
-                if (!match(',')) {
-                    break;
-                }
-                lex();
-                expressions.push(isolateCoverGrammar(parseAssignmentExpression));
-            }
-
-            expr = new WrappingNode(startToken).finishSequenceExpression(expressions);
-        }
-
-        return expr;
-    }
-
-    // ECMA-262 13.2 Block
-
-    function parseStatementListItem() {
-        if (lookahead.type === Token.Keyword) {
-            switch (lookahead.value) {
-            case 'export':
-                if (state.sourceType !== 'module') {
-                    tolerateUnexpectedToken(lookahead, Messages.IllegalExportDeclaration);
-                }
-                return parseExportDeclaration();
-            case 'import':
-                if (state.sourceType !== 'module') {
-                    tolerateUnexpectedToken(lookahead, Messages.IllegalImportDeclaration);
-                }
-                return parseImportDeclaration();
-            case 'const':
-                return parseLexicalDeclaration({inFor: false});
-            case 'function':
-                return parseFunctionDeclaration(new Node());
-            case 'class':
-                return parseClassDeclaration();
-            }
-        }
-
-        if (matchKeyword('let') && isLexicalDeclaration()) {
-            return parseLexicalDeclaration({inFor: false});
-        }
-
-        return parseStatement();
-    }
-
-    function parseStatementList() {
-        var list = [];
-        while (startIndex < length) {
-            if (match('}')) {
-                break;
-            }
-            list.push(parseStatementListItem());
-        }
-
-        return list;
-    }
-
-    function parseBlock() {
-        var block, node = new Node();
-
-        expect('{');
-
-        block = parseStatementList();
-
-        expect('}');
-
-        return node.finishBlockStatement(block);
-    }
-
-    // ECMA-262 13.3.2 Variable Statement
-
-    function parseVariableIdentifier(kind) {
-        var token, node = new Node();
-
-        token = lex();
-
-        if (token.type === Token.Keyword && token.value === 'yield') {
-            if (strict) {
-                tolerateUnexpectedToken(token, Messages.StrictReservedWord);
-            } if (!state.allowYield) {
-                throwUnexpectedToken(token);
-            }
-        } else if (token.type !== Token.Identifier) {
-            if (strict && token.type === Token.Keyword && isStrictModeReservedWord(token.value)) {
-                tolerateUnexpectedToken(token, Messages.StrictReservedWord);
-            } else {
-                if (strict || token.value !== 'let' || kind !== 'var') {
-                    throwUnexpectedToken(token);
-                }
-            }
-        } else if (state.sourceType === 'module' && token.type === Token.Identifier && token.value === 'await') {
-            tolerateUnexpectedToken(token);
-        }
-
-        return node.finishIdentifier(token.value);
-    }
-
-    function parseVariableDeclaration(options) {
-        var init = null, id, node = new Node(), params = [];
-
-        id = parsePattern(params, 'var');
-
-        // ECMA-262 12.2.1
-        if (strict && isRestrictedWord(id.name)) {
-            tolerateError(Messages.StrictVarName);
-        }
-
-        if (match('=')) {
-            lex();
-            init = isolateCoverGrammar(parseAssignmentExpression);
-        } else if (id.type !== Syntax.Identifier && !options.inFor) {
-            expect('=');
-        }
-
-        return node.finishVariableDeclarator(id, init);
-    }
-
-    function parseVariableDeclarationList(options) {
-        var opt, list;
-
-        opt = { inFor: options.inFor };
-        list = [parseVariableDeclaration(opt)];
-
-        while (match(',')) {
-            lex();
-            list.push(parseVariableDeclaration(opt));
-        }
-
-        return list;
-    }
-
-    function parseVariableStatement(node) {
-        var declarations;
-
-        expectKeyword('var');
-
-        declarations = parseVariableDeclarationList({ inFor: false });
-
-        consumeSemicolon();
-
-        return node.finishVariableDeclaration(declarations);
-    }
-
-    // ECMA-262 13.3.1 Let and Const Declarations
-
-    function parseLexicalBinding(kind, options) {
-        var init = null, id, node = new Node(), params = [];
-
-        id = parsePattern(params, kind);
-
-        // ECMA-262 12.2.1
-        if (strict && id.type === Syntax.Identifier && isRestrictedWord(id.name)) {
-            tolerateError(Messages.StrictVarName);
-        }
-
-        if (kind === 'const') {
-            if (!matchKeyword('in') && !matchContextualKeyword('of')) {
-                expect('=');
-                init = isolateCoverGrammar(parseAssignmentExpression);
-            }
-        } else if ((!options.inFor && id.type !== Syntax.Identifier) || match('=')) {
-            expect('=');
-            init = isolateCoverGrammar(parseAssignmentExpression);
-        }
-
-        return node.finishVariableDeclarator(id, init);
-    }
-
-    function parseBindingList(kind, options) {
-        var list = [parseLexicalBinding(kind, options)];
-
-        while (match(',')) {
-            lex();
-            list.push(parseLexicalBinding(kind, options));
-        }
-
-        return list;
-    }
-
-
-    function tokenizerState() {
-        return {
-            index: index,
-            lineNumber: lineNumber,
-            lineStart: lineStart,
-            hasLineTerminator: hasLineTerminator,
-            lastIndex: lastIndex,
-            lastLineNumber: lastLineNumber,
-            lastLineStart: lastLineStart,
-            startIndex: startIndex,
-            startLineNumber: startLineNumber,
-            startLineStart: startLineStart,
-            lookahead: lookahead,
-            tokenCount: extra.tokens ? extra.tokens.length : 0
-        };
-    }
-
-    function resetTokenizerState(ts) {
-        index = ts.index;
-        lineNumber = ts.lineNumber;
-        lineStart = ts.lineStart;
-        hasLineTerminator = ts.hasLineTerminator;
-        lastIndex = ts.lastIndex;
-        lastLineNumber = ts.lastLineNumber;
-        lastLineStart = ts.lastLineStart;
-        startIndex = ts.startIndex;
-        startLineNumber = ts.startLineNumber;
-        startLineStart = ts.startLineStart;
-        lookahead = ts.lookahead;
-        if (extra.tokens) {
-            extra.tokens.splice(ts.tokenCount, extra.tokens.length);
-        }
-    }
-
-    function isLexicalDeclaration() {
-        var lexical, ts;
-
-        ts = tokenizerState();
-
-        lex();
-        lexical = (lookahead.type === Token.Identifier) || match('[') || match('{') ||
-            matchKeyword('let') || matchKeyword('yield');
-
-        resetTokenizerState(ts);
-
-        return lexical;
-    }
-
-    function parseLexicalDeclaration(options) {
-        var kind, declarations, node = new Node();
-
-        kind = lex().value;
-        assert(kind === 'let' || kind === 'const', 'Lexical declaration must be either let or const');
-
-        declarations = parseBindingList(kind, options);
-
-        consumeSemicolon();
-
-        return node.finishLexicalDeclaration(declarations, kind);
-    }
-
-    function parseRestElement(params) {
-        var param, node = new Node();
-
-        lex();
-
-        if (match('{')) {
-            throwError(Messages.ObjectPatternAsRestParameter);
-        }
-
-        params.push(lookahead);
-
-        param = parseVariableIdentifier();
-
-        if (match('=')) {
-            throwError(Messages.DefaultRestParameter);
-        }
-
-        if (!match(')')) {
-            throwError(Messages.ParameterAfterRestParameter);
-        }
-
-        return node.finishRestElement(param);
-    }
-
-    // ECMA-262 13.4 Empty Statement
-
-    function parseEmptyStatement(node) {
-        expect(';');
-        return node.finishEmptyStatement();
-    }
-
-    // ECMA-262 12.4 Expression Statement
-
-    function parseExpressionStatement(node) {
-        var expr = parseExpression();
-        consumeSemicolon();
-        return node.finishExpressionStatement(expr);
-    }
-
-    // ECMA-262 13.6 If statement
-
-    function parseIfStatement(node) {
-        var test, consequent, alternate;
-
-        expectKeyword('if');
-
-        expect('(');
-
-        test = parseExpression();
-
-        expect(')');
-
-        consequent = parseStatement();
-
-        if (matchKeyword('else')) {
-            lex();
-            alternate = parseStatement();
-        } else {
-            alternate = null;
-        }
-
-        return node.finishIfStatement(test, consequent, alternate);
-    }
-
-    // ECMA-262 13.7 Iteration Statements
-
-    function parseDoWhileStatement(node) {
-        var body, test, oldInIteration;
-
-        expectKeyword('do');
-
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
-
-        body = parseStatement();
-
-        state.inIteration = oldInIteration;
-
-        expectKeyword('while');
-
-        expect('(');
-
-        test = parseExpression();
-
-        expect(')');
-
-        if (match(';')) {
-            lex();
-        }
-
-        return node.finishDoWhileStatement(body, test);
-    }
-
-    function parseWhileStatement(node) {
-        var test, body, oldInIteration;
-
-        expectKeyword('while');
-
-        expect('(');
-
-        test = parseExpression();
-
-        expect(')');
-
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
-
-        body = parseStatement();
-
-        state.inIteration = oldInIteration;
-
-        return node.finishWhileStatement(test, body);
-    }
-
-    function parseForStatement(node) {
-        var init, forIn, initSeq, initStartToken, test, update, left, right, kind, declarations,
-            body, oldInIteration, previousAllowIn = state.allowIn;
-
-        init = test = update = null;
-        forIn = true;
-
-        expectKeyword('for');
-
-        expect('(');
-
-        if (match(';')) {
-            lex();
-        } else {
-            if (matchKeyword('var')) {
-                init = new Node();
-                lex();
-
-                state.allowIn = false;
-                declarations = parseVariableDeclarationList({ inFor: true });
-                state.allowIn = previousAllowIn;
-
-                if (declarations.length === 1 && matchKeyword('in')) {
-                    init = init.finishVariableDeclaration(declarations);
-                    lex();
-                    left = init;
-                    right = parseExpression();
-                    init = null;
-                } else if (declarations.length === 1 && declarations[0].init === null && matchContextualKeyword('of')) {
-                    init = init.finishVariableDeclaration(declarations);
-                    lex();
-                    left = init;
-                    right = parseAssignmentExpression();
-                    init = null;
-                    forIn = false;
-                } else {
-                    init = init.finishVariableDeclaration(declarations);
-                    expect(';');
-                }
-            } else if (matchKeyword('const') || matchKeyword('let')) {
-                init = new Node();
-                kind = lex().value;
-
-                if (!strict && lookahead.value === 'in') {
-                    init = init.finishIdentifier(kind);
-                    lex();
-                    left = init;
-                    right = parseExpression();
-                    init = null;
-                } else {
-                    state.allowIn = false;
-                    declarations = parseBindingList(kind, {inFor: true});
-                    state.allowIn = previousAllowIn;
-
-                    if (declarations.length === 1 && declarations[0].init === null && matchKeyword('in')) {
-                        init = init.finishLexicalDeclaration(declarations, kind);
-                        lex();
-                        left = init;
-                        right = parseExpression();
-                        init = null;
-                    } else if (declarations.length === 1 && declarations[0].init === null && matchContextualKeyword('of')) {
-                        init = init.finishLexicalDeclaration(declarations, kind);
-                        lex();
-                        left = init;
-                        right = parseAssignmentExpression();
-                        init = null;
-                        forIn = false;
-                    } else {
-                        consumeSemicolon();
-                        init = init.finishLexicalDeclaration(declarations, kind);
-                    }
-                }
-            } else {
-                initStartToken = lookahead;
-                state.allowIn = false;
-                init = inheritCoverGrammar(parseAssignmentExpression);
-                state.allowIn = previousAllowIn;
-
-                if (matchKeyword('in')) {
-                    if (!isAssignmentTarget) {
-                        tolerateError(Messages.InvalidLHSInForIn);
-                    }
-
-                    lex();
-                    reinterpretExpressionAsPattern(init);
-                    left = init;
-                    right = parseExpression();
-                    init = null;
-                } else if (matchContextualKeyword('of')) {
-                    if (!isAssignmentTarget) {
-                        tolerateError(Messages.InvalidLHSInForLoop);
-                    }
-
-                    lex();
-                    reinterpretExpressionAsPattern(init);
-                    left = init;
-                    right = parseAssignmentExpression();
-                    init = null;
-                    forIn = false;
-                } else {
-                    if (match(',')) {
-                        initSeq = [init];
-                        while (match(',')) {
-                            lex();
-                            initSeq.push(isolateCoverGrammar(parseAssignmentExpression));
-                        }
-                        init = new WrappingNode(initStartToken).finishSequenceExpression(initSeq);
-                    }
-                    expect(';');
-                }
-            }
-        }
-
-        if (typeof left === 'undefined') {
-
-            if (!match(';')) {
-                test = parseExpression();
-            }
-            expect(';');
-
-            if (!match(')')) {
-                update = parseExpression();
-            }
-        }
-
-        expect(')');
-
-        oldInIteration = state.inIteration;
-        state.inIteration = true;
-
-        body = isolateCoverGrammar(parseStatement);
-
-        state.inIteration = oldInIteration;
-
-        return (typeof left === 'undefined') ?
-                node.finishForStatement(init, test, update, body) :
-                forIn ? node.finishForInStatement(left, right, body) :
-                    node.finishForOfStatement(left, right, body);
-    }
-
-    // ECMA-262 13.8 The continue statement
-
-    function parseContinueStatement(node) {
-        var label = null, key;
-
-        expectKeyword('continue');
-
-        // Optimize the most common form: 'continue;'.
-        if (source.charCodeAt(startIndex) === 0x3B) {
-            lex();
-
-            if (!state.inIteration) {
-                throwError(Messages.IllegalContinue);
-            }
-
-            return node.finishContinueStatement(null);
-        }
-
-        if (hasLineTerminator) {
-            if (!state.inIteration) {
-                throwError(Messages.IllegalContinue);
-            }
-
-            return node.finishContinueStatement(null);
-        }
-
-        if (lookahead.type === Token.Identifier) {
-            label = parseVariableIdentifier();
-
-            key = '$' + label.name;
-            if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError(Messages.UnknownLabel, label.name);
-            }
-        }
-
-        consumeSemicolon();
-
-        if (label === null && !state.inIteration) {
-            throwError(Messages.IllegalContinue);
-        }
-
-        return node.finishContinueStatement(label);
-    }
-
-    // ECMA-262 13.9 The break statement
-
-    function parseBreakStatement(node) {
-        var label = null, key;
-
-        expectKeyword('break');
-
-        // Catch the very common case first: immediately a semicolon (U+003B).
-        if (source.charCodeAt(lastIndex) === 0x3B) {
-            lex();
-
-            if (!(state.inIteration || state.inSwitch)) {
-                throwError(Messages.IllegalBreak);
-            }
-
-            return node.finishBreakStatement(null);
-        }
-
-        if (hasLineTerminator) {
-            if (!(state.inIteration || state.inSwitch)) {
-                throwError(Messages.IllegalBreak);
-            }
-        } else if (lookahead.type === Token.Identifier) {
-            label = parseVariableIdentifier();
-
-            key = '$' + label.name;
-            if (!Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError(Messages.UnknownLabel, label.name);
-            }
-        }
-
-        consumeSemicolon();
-
-        if (label === null && !(state.inIteration || state.inSwitch)) {
-            throwError(Messages.IllegalBreak);
-        }
-
-        return node.finishBreakStatement(label);
-    }
-
-    // ECMA-262 13.10 The return statement
-
-    function parseReturnStatement(node) {
-        var argument = null;
-
-        expectKeyword('return');
-
-        if (!state.inFunctionBody) {
-            tolerateError(Messages.IllegalReturn);
-        }
-
-        // 'return' followed by a space and an identifier is very common.
-        if (source.charCodeAt(lastIndex) === 0x20) {
-            if (isIdentifierStart(source.charCodeAt(lastIndex + 1))) {
-                argument = parseExpression();
-                consumeSemicolon();
-                return node.finishReturnStatement(argument);
-            }
-        }
-
-        if (hasLineTerminator) {
-            // HACK
-            return node.finishReturnStatement(null);
-        }
-
-        if (!match(';')) {
-            if (!match('}') && lookahead.type !== Token.EOF) {
-                argument = parseExpression();
-            }
-        }
-
-        consumeSemicolon();
-
-        return node.finishReturnStatement(argument);
-    }
-
-    // ECMA-262 13.11 The with statement
-
-    function parseWithStatement(node) {
-        var object, body;
-
-        if (strict) {
-            tolerateError(Messages.StrictModeWith);
-        }
-
-        expectKeyword('with');
-
-        expect('(');
-
-        object = parseExpression();
-
-        expect(')');
-
-        body = parseStatement();
-
-        return node.finishWithStatement(object, body);
-    }
-
-    // ECMA-262 13.12 The switch statement
-
-    function parseSwitchCase() {
-        var test, consequent = [], statement, node = new Node();
-
-        if (matchKeyword('default')) {
-            lex();
-            test = null;
-        } else {
-            expectKeyword('case');
-            test = parseExpression();
-        }
-        expect(':');
-
-        while (startIndex < length) {
-            if (match('}') || matchKeyword('default') || matchKeyword('case')) {
-                break;
-            }
-            statement = parseStatementListItem();
-            consequent.push(statement);
-        }
-
-        return node.finishSwitchCase(test, consequent);
-    }
-
-    function parseSwitchStatement(node) {
-        var discriminant, cases, clause, oldInSwitch, defaultFound;
-
-        expectKeyword('switch');
-
-        expect('(');
-
-        discriminant = parseExpression();
-
-        expect(')');
-
-        expect('{');
-
-        cases = [];
-
-        if (match('}')) {
-            lex();
-            return node.finishSwitchStatement(discriminant, cases);
-        }
-
-        oldInSwitch = state.inSwitch;
-        state.inSwitch = true;
-        defaultFound = false;
-
-        while (startIndex < length) {
-            if (match('}')) {
-                break;
-            }
-            clause = parseSwitchCase();
-            if (clause.test === null) {
-                if (defaultFound) {
-                    throwError(Messages.MultipleDefaultsInSwitch);
-                }
-                defaultFound = true;
-            }
-            cases.push(clause);
-        }
-
-        state.inSwitch = oldInSwitch;
-
-        expect('}');
-
-        return node.finishSwitchStatement(discriminant, cases);
-    }
-
-    // ECMA-262 13.14 The throw statement
-
-    function parseThrowStatement(node) {
-        var argument;
-
-        expectKeyword('throw');
-
-        if (hasLineTerminator) {
-            throwError(Messages.NewlineAfterThrow);
-        }
-
-        argument = parseExpression();
-
-        consumeSemicolon();
-
-        return node.finishThrowStatement(argument);
-    }
-
-    // ECMA-262 13.15 The try statement
-
-    function parseCatchClause() {
-        var param, params = [], paramMap = {}, key, i, body, node = new Node();
-
-        expectKeyword('catch');
-
-        expect('(');
-        if (match(')')) {
-            throwUnexpectedToken(lookahead);
-        }
-
-        param = parsePattern(params);
-        for (i = 0; i < params.length; i++) {
-            key = '$' + params[i].value;
-            if (Object.prototype.hasOwnProperty.call(paramMap, key)) {
-                tolerateError(Messages.DuplicateBinding, params[i].value);
-            }
-            paramMap[key] = true;
-        }
-
-        // ECMA-262 12.14.1
-        if (strict && isRestrictedWord(param.name)) {
-            tolerateError(Messages.StrictCatchVariable);
-        }
-
-        expect(')');
-        body = parseBlock();
-        return node.finishCatchClause(param, body);
-    }
-
-    function parseTryStatement(node) {
-        var block, handler = null, finalizer = null;
-
-        expectKeyword('try');
-
-        block = parseBlock();
-
-        if (matchKeyword('catch')) {
-            handler = parseCatchClause();
-        }
-
-        if (matchKeyword('finally')) {
-            lex();
-            finalizer = parseBlock();
-        }
-
-        if (!handler && !finalizer) {
-            throwError(Messages.NoCatchOrFinally);
-        }
-
-        return node.finishTryStatement(block, handler, finalizer);
-    }
-
-    // ECMA-262 13.16 The debugger statement
-
-    function parseDebuggerStatement(node) {
-        expectKeyword('debugger');
-
-        consumeSemicolon();
-
-        return node.finishDebuggerStatement();
-    }
-
-    // 13 Statements
-
-    function parseStatement() {
-        var type = lookahead.type,
-            expr,
-            labeledBody,
-            key,
-            node;
-
-        if (type === Token.EOF) {
-            throwUnexpectedToken(lookahead);
-        }
-
-        if (type === Token.Punctuator && lookahead.value === '{') {
-            return parseBlock();
-        }
-        isAssignmentTarget = isBindingElement = true;
-        node = new Node();
-
-        if (type === Token.Punctuator) {
-            switch (lookahead.value) {
-            case ';':
-                return parseEmptyStatement(node);
-            case '(':
-                return parseExpressionStatement(node);
-            default:
-                break;
-            }
-        } else if (type === Token.Keyword) {
-            switch (lookahead.value) {
-            case 'break':
-                return parseBreakStatement(node);
-            case 'continue':
-                return parseContinueStatement(node);
-            case 'debugger':
-                return parseDebuggerStatement(node);
-            case 'do':
-                return parseDoWhileStatement(node);
-            case 'for':
-                return parseForStatement(node);
-            case 'function':
-                return parseFunctionDeclaration(node);
-            case 'if':
-                return parseIfStatement(node);
-            case 'return':
-                return parseReturnStatement(node);
-            case 'switch':
-                return parseSwitchStatement(node);
-            case 'throw':
-                return parseThrowStatement(node);
-            case 'try':
-                return parseTryStatement(node);
-            case 'var':
-                return parseVariableStatement(node);
-            case 'while':
-                return parseWhileStatement(node);
-            case 'with':
-                return parseWithStatement(node);
-            default:
-                break;
-            }
-        }
-
-        expr = parseExpression();
-
-        // ECMA-262 12.12 Labelled Statements
-        if ((expr.type === Syntax.Identifier) && match(':')) {
-            lex();
-
-            key = '$' + expr.name;
-            if (Object.prototype.hasOwnProperty.call(state.labelSet, key)) {
-                throwError(Messages.Redeclaration, 'Label', expr.name);
-            }
-
-            state.labelSet[key] = true;
-            labeledBody = parseStatement();
-            delete state.labelSet[key];
-            return node.finishLabeledStatement(expr, labeledBody);
-        }
-
-        consumeSemicolon();
-
-        return node.finishExpressionStatement(expr);
-    }
-
-    // ECMA-262 14.1 Function Definition
-
-    function parseFunctionSourceElements() {
-        var statement, body = [], token, directive, firstRestricted,
-            oldLabelSet, oldInIteration, oldInSwitch, oldInFunctionBody,
-            node = new Node();
-
-        expect('{');
-
-        while (startIndex < length) {
-            if (lookahead.type !== Token.StringLiteral) {
-                break;
-            }
-            token = lookahead;
-
-            statement = parseStatementListItem();
-            body.push(statement);
-            if (statement.expression.type !== Syntax.Literal) {
-                // this is not directive
-                break;
-            }
-            directive = source.slice(token.start + 1, token.end - 1);
-            if (directive === 'use strict') {
-                strict = true;
-                if (firstRestricted) {
-                    tolerateUnexpectedToken(firstRestricted, Messages.StrictOctalLiteral);
-                }
-            } else {
-                if (!firstRestricted && token.octal) {
-                    firstRestricted = token;
-                }
-            }
-        }
-
-        oldLabelSet = state.labelSet;
-        oldInIteration = state.inIteration;
-        oldInSwitch = state.inSwitch;
-        oldInFunctionBody = state.inFunctionBody;
-
-        state.labelSet = {};
-        state.inIteration = false;
-        state.inSwitch = false;
-        state.inFunctionBody = true;
-
-        while (startIndex < length) {
-            if (match('}')) {
-                break;
-            }
-            body.push(parseStatementListItem());
-        }
-
-        expect('}');
-
-        state.labelSet = oldLabelSet;
-        state.inIteration = oldInIteration;
-        state.inSwitch = oldInSwitch;
-        state.inFunctionBody = oldInFunctionBody;
-
-        return node.finishBlockStatement(body);
-    }
-
-    function validateParam(options, param, name) {
-        var key = '$' + name;
-        if (strict) {
-            if (isRestrictedWord(name)) {
-                options.stricted = param;
-                options.message = Messages.StrictParamName;
-            }
-            if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
-                options.stricted = param;
-                options.message = Messages.StrictParamDupe;
-            }
-        } else if (!options.firstRestricted) {
-            if (isRestrictedWord(name)) {
-                options.firstRestricted = param;
-                options.message = Messages.StrictParamName;
-            } else if (isStrictModeReservedWord(name)) {
-                options.firstRestricted = param;
-                options.message = Messages.StrictReservedWord;
-            } else if (Object.prototype.hasOwnProperty.call(options.paramSet, key)) {
-                options.stricted = param;
-                options.message = Messages.StrictParamDupe;
-            }
-        }
-        options.paramSet[key] = true;
-    }
-
-    function parseParam(options) {
-        var token, param, params = [], i, def;
-
-        token = lookahead;
-        if (token.value === '...') {
-            param = parseRestElement(params);
-            validateParam(options, param.argument, param.argument.name);
-            options.params.push(param);
-            options.defaults.push(null);
-            return false;
-        }
-
-        param = parsePatternWithDefault(params);
-        for (i = 0; i < params.length; i++) {
-            validateParam(options, params[i], params[i].value);
-        }
-
-        if (param.type === Syntax.AssignmentPattern) {
-            def = param.right;
-            param = param.left;
-            ++options.defaultCount;
-        }
-
-        options.params.push(param);
-        options.defaults.push(def);
-
-        return !match(')');
-    }
-
-    function parseParams(firstRestricted) {
-        var options;
-
-        options = {
-            params: [],
-            defaultCount: 0,
-            defaults: [],
-            firstRestricted: firstRestricted
-        };
-
-        expect('(');
-
-        if (!match(')')) {
-            options.paramSet = {};
-            while (startIndex < length) {
-                if (!parseParam(options)) {
-                    break;
-                }
-                expect(',');
-            }
-        }
-
-        expect(')');
-
-        if (options.defaultCount === 0) {
-            options.defaults = [];
-        }
-
-        return {
-            params: options.params,
-            defaults: options.defaults,
-            stricted: options.stricted,
-            firstRestricted: options.firstRestricted,
-            message: options.message
-        };
-    }
-
-    function parseFunctionDeclaration(node, identifierIsOptional) {
-        var id = null, params = [], defaults = [], body, token, stricted, tmp, firstRestricted, message, previousStrict,
-            isGenerator, previousAllowYield;
-
-        previousAllowYield = state.allowYield;
-
-        expectKeyword('function');
-
-        isGenerator = match('*');
-        if (isGenerator) {
-            lex();
-        }
-
-        if (!identifierIsOptional || !match('(')) {
-            token = lookahead;
-            id = parseVariableIdentifier();
-            if (strict) {
-                if (isRestrictedWord(token.value)) {
-                    tolerateUnexpectedToken(token, Messages.StrictFunctionName);
-                }
-            } else {
-                if (isRestrictedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictFunctionName;
-                } else if (isStrictModeReservedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictReservedWord;
-                }
-            }
-        }
-
-        state.allowYield = !isGenerator;
-        tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        defaults = tmp.defaults;
-        stricted = tmp.stricted;
-        firstRestricted = tmp.firstRestricted;
-        if (tmp.message) {
-            message = tmp.message;
-        }
-
-
-        previousStrict = strict;
-        body = parseFunctionSourceElements();
-        if (strict && firstRestricted) {
-            throwUnexpectedToken(firstRestricted, message);
-        }
-        if (strict && stricted) {
-            tolerateUnexpectedToken(stricted, message);
-        }
-
-        strict = previousStrict;
-        state.allowYield = previousAllowYield;
-
-        return node.finishFunctionDeclaration(id, params, defaults, body, isGenerator);
-    }
-
-    function parseFunctionExpression() {
-        var token, id = null, stricted, firstRestricted, message, tmp,
-            params = [], defaults = [], body, previousStrict, node = new Node(),
-            isGenerator, previousAllowYield;
-
-        previousAllowYield = state.allowYield;
-
-        expectKeyword('function');
-
-        isGenerator = match('*');
-        if (isGenerator) {
-            lex();
-        }
-
-        state.allowYield = !isGenerator;
-        if (!match('(')) {
-            token = lookahead;
-            id = (!strict && !isGenerator && matchKeyword('yield')) ? parseNonComputedProperty() : parseVariableIdentifier();
-            if (strict) {
-                if (isRestrictedWord(token.value)) {
-                    tolerateUnexpectedToken(token, Messages.StrictFunctionName);
-                }
-            } else {
-                if (isRestrictedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictFunctionName;
-                } else if (isStrictModeReservedWord(token.value)) {
-                    firstRestricted = token;
-                    message = Messages.StrictReservedWord;
-                }
-            }
-        }
-
-        tmp = parseParams(firstRestricted);
-        params = tmp.params;
-        defaults = tmp.defaults;
-        stricted = tmp.stricted;
-        firstRestricted = tmp.firstRestricted;
-        if (tmp.message) {
-            message = tmp.message;
-        }
-
-        previousStrict = strict;
-        body = parseFunctionSourceElements();
-        if (strict && firstRestricted) {
-            throwUnexpectedToken(firstRestricted, message);
-        }
-        if (strict && stricted) {
-            tolerateUnexpectedToken(stricted, message);
-        }
-        strict = previousStrict;
-        state.allowYield = previousAllowYield;
-
-        return node.finishFunctionExpression(id, params, defaults, body, isGenerator);
-    }
-
-    // ECMA-262 14.5 Class Definitions
-
-    function parseClassBody() {
-        var classBody, token, isStatic, hasConstructor = false, body, method, computed, key;
-
-        classBody = new Node();
-
-        expect('{');
-        body = [];
-        while (!match('}')) {
-            if (match(';')) {
-                lex();
-            } else {
-                method = new Node();
-                token = lookahead;
-                isStatic = false;
-                computed = match('[');
-                if (match('*')) {
-                    lex();
-                } else {
-                    key = parseObjectPropertyKey();
-                    if (key.name === 'static' && (lookaheadPropertyName() || match('*'))) {
-                        token = lookahead;
-                        isStatic = true;
-                        computed = match('[');
-                        if (match('*')) {
-                            lex();
-                        } else {
-                            key = parseObjectPropertyKey();
-                        }
-                    }
-                }
-                method = tryParseMethodDefinition(token, key, computed, method);
-                if (method) {
-                    method['static'] = isStatic; // jscs:ignore requireDotNotation
-                    if (method.kind === 'init') {
-                        method.kind = 'method';
-                    }
-                    if (!isStatic) {
-                        if (!method.computed && (method.key.name || method.key.value.toString()) === 'constructor') {
-                            if (method.kind !== 'method' || !method.method || method.value.generator) {
-                                throwUnexpectedToken(token, Messages.ConstructorSpecialMethod);
-                            }
-                            if (hasConstructor) {
-                                throwUnexpectedToken(token, Messages.DuplicateConstructor);
-                            } else {
-                                hasConstructor = true;
-                            }
-                            method.kind = 'constructor';
-                        }
-                    } else {
-                        if (!method.computed && (method.key.name || method.key.value.toString()) === 'prototype') {
-                            throwUnexpectedToken(token, Messages.StaticPrototype);
-                        }
-                    }
-                    method.type = Syntax.MethodDefinition;
-                    delete method.method;
-                    delete method.shorthand;
-                    body.push(method);
-                } else {
-                    throwUnexpectedToken(lookahead);
-                }
-            }
-        }
-        lex();
-        return classBody.finishClassBody(body);
-    }
-
-    function parseClassDeclaration(identifierIsOptional) {
-        var id = null, superClass = null, classNode = new Node(), classBody, previousStrict = strict;
-        strict = true;
-
-        expectKeyword('class');
-
-        if (!identifierIsOptional || lookahead.type === Token.Identifier) {
-            id = parseVariableIdentifier();
-        }
-
-        if (matchKeyword('extends')) {
-            lex();
-            superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall);
-        }
-        classBody = parseClassBody();
-        strict = previousStrict;
-
-        return classNode.finishClassDeclaration(id, superClass, classBody);
-    }
-
-    function parseClassExpression() {
-        var id = null, superClass = null, classNode = new Node(), classBody, previousStrict = strict;
-        strict = true;
-
-        expectKeyword('class');
-
-        if (lookahead.type === Token.Identifier) {
-            id = parseVariableIdentifier();
-        }
-
-        if (matchKeyword('extends')) {
-            lex();
-            superClass = isolateCoverGrammar(parseLeftHandSideExpressionAllowCall);
-        }
-        classBody = parseClassBody();
-        strict = previousStrict;
-
-        return classNode.finishClassExpression(id, superClass, classBody);
-    }
-
-    // ECMA-262 15.2 Modules
-
-    function parseModuleSpecifier() {
-        var node = new Node();
-
-        if (lookahead.type !== Token.StringLiteral) {
-            throwError(Messages.InvalidModuleSpecifier);
-        }
-        return node.finishLiteral(lex());
-    }
-
-    // ECMA-262 15.2.3 Exports
-
-    function parseExportSpecifier() {
-        var exported, local, node = new Node(), def;
-        if (matchKeyword('default')) {
-            // export {default} from 'something';
-            def = new Node();
-            lex();
-            local = def.finishIdentifier('default');
-        } else {
-            local = parseVariableIdentifier();
-        }
-        if (matchContextualKeyword('as')) {
-            lex();
-            exported = parseNonComputedProperty();
-        }
-        return node.finishExportSpecifier(local, exported);
-    }
-
-    function parseExportNamedDeclaration(node) {
-        var declaration = null,
-            isExportFromIdentifier,
-            src = null, specifiers = [];
-
-        // non-default export
-        if (lookahead.type === Token.Keyword) {
-            // covers:
-            // export var f = 1;
-            switch (lookahead.value) {
-                case 'let':
-                case 'const':
-                    declaration = parseLexicalDeclaration({inFor: false});
-                    return node.finishExportNamedDeclaration(declaration, specifiers, null);
-                case 'var':
-                case 'class':
-                case 'function':
-                    declaration = parseStatementListItem();
-                    return node.finishExportNamedDeclaration(declaration, specifiers, null);
-            }
-        }
-
-        expect('{');
-        while (!match('}')) {
-            isExportFromIdentifier = isExportFromIdentifier || matchKeyword('default');
-            specifiers.push(parseExportSpecifier());
-            if (!match('}')) {
-                expect(',');
-                if (match('}')) {
-                    break;
-                }
-            }
-        }
-        expect('}');
-
-        if (matchContextualKeyword('from')) {
-            // covering:
-            // export {default} from 'foo';
-            // export {foo} from 'foo';
-            lex();
-            src = parseModuleSpecifier();
-            consumeSemicolon();
-        } else if (isExportFromIdentifier) {
-            // covering:
-            // export {default}; // missing fromClause
-            throwError(lookahead.value ?
-                    Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
-        } else {
-            // cover
-            // export {foo};
-            consumeSemicolon();
-        }
-        return node.finishExportNamedDeclaration(declaration, specifiers, src);
-    }
-
-    function parseExportDefaultDeclaration(node) {
-        var declaration = null,
-            expression = null;
-
-        // covers:
-        // export default ...
-        expectKeyword('default');
-
-        if (matchKeyword('function')) {
-            // covers:
-            // export default function foo () {}
-            // export default function () {}
-            declaration = parseFunctionDeclaration(new Node(), true);
-            return node.finishExportDefaultDeclaration(declaration);
-        }
-        if (matchKeyword('class')) {
-            declaration = parseClassDeclaration(true);
-            return node.finishExportDefaultDeclaration(declaration);
-        }
-
-        if (matchContextualKeyword('from')) {
-            throwError(Messages.UnexpectedToken, lookahead.value);
-        }
-
-        // covers:
-        // export default {};
-        // export default [];
-        // export default (1 + 2);
-        if (match('{')) {
-            expression = parseObjectInitializer();
-        } else if (match('[')) {
-            expression = parseArrayInitializer();
-        } else {
-            expression = parseAssignmentExpression();
-        }
-        consumeSemicolon();
-        return node.finishExportDefaultDeclaration(expression);
-    }
-
-    function parseExportAllDeclaration(node) {
-        var src;
-
-        // covers:
-        // export * from 'foo';
-        expect('*');
-        if (!matchContextualKeyword('from')) {
-            throwError(lookahead.value ?
-                    Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
-        }
-        lex();
-        src = parseModuleSpecifier();
-        consumeSemicolon();
-
-        return node.finishExportAllDeclaration(src);
-    }
-
-    function parseExportDeclaration() {
-        var node = new Node();
-        if (state.inFunctionBody) {
-            throwError(Messages.IllegalExportDeclaration);
-        }
-
-        expectKeyword('export');
-
-        if (matchKeyword('default')) {
-            return parseExportDefaultDeclaration(node);
-        }
-        if (match('*')) {
-            return parseExportAllDeclaration(node);
-        }
-        return parseExportNamedDeclaration(node);
-    }
-
-    // ECMA-262 15.2.2 Imports
-
-    function parseImportSpecifier() {
-        // import {} ...;
-        var local, imported, node = new Node();
-
-        imported = parseNonComputedProperty();
-        if (matchContextualKeyword('as')) {
-            lex();
-            local = parseVariableIdentifier();
-        }
-
-        return node.finishImportSpecifier(local, imported);
-    }
-
-    function parseNamedImports() {
-        var specifiers = [];
-        // {foo, bar as bas}
-        expect('{');
-        while (!match('}')) {
-            specifiers.push(parseImportSpecifier());
-            if (!match('}')) {
-                expect(',');
-                if (match('}')) {
-                    break;
-                }
-            }
-        }
-        expect('}');
-        return specifiers;
-    }
-
-    function parseImportDefaultSpecifier() {
-        // import  ...;
-        var local, node = new Node();
-
-        local = parseNonComputedProperty();
-
-        return node.finishImportDefaultSpecifier(local);
-    }
-
-    function parseImportNamespaceSpecifier() {
-        // import <* as foo> ...;
-        var local, node = new Node();
-
-        expect('*');
-        if (!matchContextualKeyword('as')) {
-            throwError(Messages.NoAsAfterImportNamespace);
-        }
-        lex();
-        local = parseNonComputedProperty();
-
-        return node.finishImportNamespaceSpecifier(local);
-    }
-
-    function parseImportDeclaration() {
-        var specifiers = [], src, node = new Node();
-
-        if (state.inFunctionBody) {
-            throwError(Messages.IllegalImportDeclaration);
-        }
-
-        expectKeyword('import');
-
-        if (lookahead.type === Token.StringLiteral) {
-            // import 'foo';
-            src = parseModuleSpecifier();
-        } else {
-
-            if (match('{')) {
-                // import {bar}
-                specifiers = specifiers.concat(parseNamedImports());
-            } else if (match('*')) {
-                // import * as foo
-                specifiers.push(parseImportNamespaceSpecifier());
-            } else if (isIdentifierName(lookahead) && !matchKeyword('default')) {
-                // import foo
-                specifiers.push(parseImportDefaultSpecifier());
-                if (match(',')) {
-                    lex();
-                    if (match('*')) {
-                        // import foo, * as foo
-                        specifiers.push(parseImportNamespaceSpecifier());
-                    } else if (match('{')) {
-                        // import foo, {bar}
-                        specifiers = specifiers.concat(parseNamedImports());
-                    } else {
-                        throwUnexpectedToken(lookahead);
-                    }
-                }
-            } else {
-                throwUnexpectedToken(lex());
-            }
-
-            if (!matchContextualKeyword('from')) {
-                throwError(lookahead.value ?
-                        Messages.UnexpectedToken : Messages.MissingFromClause, lookahead.value);
-            }
-            lex();
-            src = parseModuleSpecifier();
-        }
-
-        consumeSemicolon();
-        return node.finishImportDeclaration(specifiers, src);
-    }
-
-    // ECMA-262 15.1 Scripts
-
-    function parseScriptBody() {
-        var statement, body = [], token, directive, firstRestricted;
-
-        while (startIndex < length) {
-            token = lookahead;
-            if (token.type !== Token.StringLiteral) {
-                break;
-            }
-
-            statement = parseStatementListItem();
-            body.push(statement);
-            if (statement.expression.type !== Syntax.Literal) {
-                // this is not directive
-                break;
-            }
-            directive = source.slice(token.start + 1, token.end - 1);
-            if (directive === 'use strict') {
-                strict = true;
-                if (firstRestricted) {
-                    tolerateUnexpectedToken(firstRestricted, Messages.StrictOctalLiteral);
-                }
-            } else {
-                if (!firstRestricted && token.octal) {
-                    firstRestricted = token;
-                }
-            }
-        }
-
-        while (startIndex < length) {
-            statement = parseStatementListItem();
-            /* istanbul ignore if */
-            if (typeof statement === 'undefined') {
-                break;
-            }
-            body.push(statement);
-        }
-        return body;
-    }
-
-    function parseProgram() {
-        var body, node;
-
-        peek();
-        node = new Node();
-
-        body = parseScriptBody();
-        return node.finishProgram(body, state.sourceType);
-    }
-
-    function filterTokenLocation() {
-        var i, entry, token, tokens = [];
-
-        for (i = 0; i < extra.tokens.length; ++i) {
-            entry = extra.tokens[i];
-            token = {
-                type: entry.type,
-                value: entry.value
-            };
-            if (entry.regex) {
-                token.regex = {
-                    pattern: entry.regex.pattern,
-                    flags: entry.regex.flags
-                };
-            }
-            if (extra.range) {
-                token.range = entry.range;
-            }
-            if (extra.loc) {
-                token.loc = entry.loc;
-            }
-            tokens.push(token);
-        }
-
-        extra.tokens = tokens;
-    }
-
-    function tokenize(code, options, delegate) {
-        var toString,
-            tokens;
-
-        toString = String;
-        if (typeof code !== 'string' && !(code instanceof String)) {
-            code = toString(code);
-        }
-
-        source = code;
-        index = 0;
-        lineNumber = (source.length > 0) ? 1 : 0;
-        lineStart = 0;
-        startIndex = index;
-        startLineNumber = lineNumber;
-        startLineStart = lineStart;
-        length = source.length;
-        lookahead = null;
-        state = {
-            allowIn: true,
-            allowYield: true,
-            labelSet: {},
-            inFunctionBody: false,
-            inIteration: false,
-            inSwitch: false,
-            lastCommentStart: -1,
-            curlyStack: []
-        };
-
-        extra = {};
-
-        // Options matching.
-        options = options || {};
-
-        // Of course we collect tokens here.
-        options.tokens = true;
-        extra.tokens = [];
-        extra.tokenValues = [];
-        extra.tokenize = true;
-        extra.delegate = delegate;
-
-        // The following two fields are necessary to compute the Regex tokens.
-        extra.openParenToken = -1;
-        extra.openCurlyToken = -1;
-
-        extra.range = (typeof options.range === 'boolean') && options.range;
-        extra.loc = (typeof options.loc === 'boolean') && options.loc;
-
-        if (typeof options.comment === 'boolean' && options.comment) {
-            extra.comments = [];
-        }
-        if (typeof options.tolerant === 'boolean' && options.tolerant) {
-            extra.errors = [];
-        }
-
-        try {
-            peek();
-            if (lookahead.type === Token.EOF) {
-                return extra.tokens;
-            }
-
-            lex();
-            while (lookahead.type !== Token.EOF) {
-                try {
-                    lex();
-                } catch (lexError) {
-                    if (extra.errors) {
-                        recordError(lexError);
-                        // We have to break on the first error
-                        // to avoid infinite loops.
-                        break;
-                    } else {
-                        throw lexError;
-                    }
-                }
-            }
-
-            tokens = extra.tokens;
-            if (typeof extra.errors !== 'undefined') {
-                tokens.errors = extra.errors;
-            }
-        } catch (e) {
-            throw e;
-        } finally {
-            extra = {};
-        }
-        return tokens;
-    }
-
-    function parse(code, options) {
-        var program, toString;
-
-        toString = String;
-        if (typeof code !== 'string' && !(code instanceof String)) {
-            code = toString(code);
-        }
-
-        source = code;
-        index = 0;
-        lineNumber = (source.length > 0) ? 1 : 0;
-        lineStart = 0;
-        startIndex = index;
-        startLineNumber = lineNumber;
-        startLineStart = lineStart;
-        length = source.length;
-        lookahead = null;
-        state = {
-            allowIn: true,
-            allowYield: true,
-            labelSet: {},
-            inFunctionBody: false,
-            inIteration: false,
-            inSwitch: false,
-            lastCommentStart: -1,
-            curlyStack: [],
-            sourceType: 'script'
-        };
-        strict = false;
-
-        extra = {};
-        if (typeof options !== 'undefined') {
-            extra.range = (typeof options.range === 'boolean') && options.range;
-            extra.loc = (typeof options.loc === 'boolean') && options.loc;
-            extra.attachComment = (typeof options.attachComment === 'boolean') && options.attachComment;
-
-            if (extra.loc && options.source !== null && options.source !== undefined) {
-                extra.source = toString(options.source);
-            }
-
-            if (typeof options.tokens === 'boolean' && options.tokens) {
-                extra.tokens = [];
-            }
-            if (typeof options.comment === 'boolean' && options.comment) {
-                extra.comments = [];
-            }
-            if (typeof options.tolerant === 'boolean' && options.tolerant) {
-                extra.errors = [];
-            }
-            if (extra.attachComment) {
-                extra.range = true;
-                extra.comments = [];
-                extra.bottomRightStack = [];
-                extra.trailingComments = [];
-                extra.leadingComments = [];
-            }
-            if (options.sourceType === 'module') {
-                // very restrictive condition for now
-                state.sourceType = options.sourceType;
-                strict = true;
-            }
-        }
-
-        try {
-            program = parseProgram();
-            if (typeof extra.comments !== 'undefined') {
-                program.comments = extra.comments;
-            }
-            if (typeof extra.tokens !== 'undefined') {
-                filterTokenLocation();
-                program.tokens = extra.tokens;
-            }
-            if (typeof extra.errors !== 'undefined') {
-                program.errors = extra.errors;
-            }
-        } catch (e) {
-            throw e;
-        } finally {
-            extra = {};
-        }
-
-        return program;
-    }
-
-    // Sync with *.json manifests.
-    exports.version = '2.7.3';
-
-    exports.tokenize = tokenize;
-
-    exports.parse = parse;
-
-    // Deep copy.
-    /* istanbul ignore next */
-    exports.Syntax = (function () {
-        var name, types = {};
-
-        if (typeof Object.create === 'function') {
-            types = Object.create(null);
-        }
-
-        for (name in Syntax) {
-            if (Syntax.hasOwnProperty(name)) {
-                types[name] = Syntax[name];
-            }
-        }
-
-        if (typeof Object.freeze === 'function') {
-            Object.freeze(types);
-        }
-
-        return types;
-    }());
-
-}));
-/* vim: set sw=4 ts=4 et tw=80 : */
diff --git a/tools/eslint/node_modules/esprima/package.json b/tools/eslint/node_modules/esprima/package.json
index 2f9a5afe1c7595..d4c95a174008f4 100644
--- a/tools/eslint/node_modules/esprima/package.json
+++ b/tools/eslint/node_modules/esprima/package.json
@@ -2,48 +2,48 @@
   "_args": [
     [
       {
-        "raw": "esprima@^2.6.0",
+        "raw": "esprima@^3.1.1",
         "scope": null,
         "escapedName": "esprima",
         "name": "esprima",
-        "rawSpec": "^2.6.0",
-        "spec": ">=2.6.0 <3.0.0",
+        "rawSpec": "^3.1.1",
+        "spec": ">=3.1.1 <4.0.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/js-yaml"
     ]
   ],
-  "_from": "esprima@>=2.6.0 <3.0.0",
-  "_id": "esprima@2.7.3",
+  "_from": "esprima@>=3.1.1 <4.0.0",
+  "_id": "esprima@3.1.3",
   "_inCache": true,
   "_location": "/esprima",
-  "_nodeVersion": "6.1.0",
+  "_nodeVersion": "7.1.0",
   "_npmOperationalInternal": {
-    "host": "packages-16-east.internal.npmjs.com",
-    "tmp": "tmp/esprima-2.7.3.tgz_1472013602345_0.010668299393728375"
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/esprima-3.1.3.tgz_1482463104044_0.19027737597934902"
   },
   "_npmUser": {
     "name": "ariya",
     "email": "ariya.hidayat@gmail.com"
   },
-  "_npmVersion": "3.8.6",
+  "_npmVersion": "3.10.9",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "esprima@^2.6.0",
+    "raw": "esprima@^3.1.1",
     "scope": null,
     "escapedName": "esprima",
     "name": "esprima",
-    "rawSpec": "^2.6.0",
-    "spec": ">=2.6.0 <3.0.0",
+    "rawSpec": "^3.1.1",
+    "spec": ">=3.1.1 <4.0.0",
     "type": "range"
   },
   "_requiredBy": [
     "/js-yaml"
   ],
-  "_resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
-  "_shasum": "96e3b70d5779f6ad49cd032673d1c312767ba581",
+  "_resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+  "_shasum": "fdca51cee6133895e3c88d535ce49dbff62a4633",
   "_shrinkwrap": null,
-  "_spec": "esprima@^2.6.0",
+  "_spec": "esprima@^3.1.1",
   "_where": "/Users/trott/io.js/tools/node_modules/js-yaml",
   "author": {
     "name": "Ariya Hidayat",
@@ -61,51 +61,53 @@
   "devDependencies": {
     "codecov.io": "~0.1.6",
     "escomplex-js": "1.2.0",
-    "eslint": "~1.7.2",
     "everything.js": "~1.0.3",
-    "glob": "^5.0.15",
+    "glob": "~7.1.0",
     "istanbul": "~0.4.0",
-    "jscs": "~2.3.5",
     "json-diff": "~0.3.1",
-    "karma": "^0.13.11",
-    "karma-chrome-launcher": "^0.2.1",
-    "karma-detect-browsers": "^2.0.2",
-    "karma-firefox-launcher": "^0.1.6",
-    "karma-ie-launcher": "^0.2.0",
-    "karma-mocha": "^0.2.0",
-    "karma-safari-launcher": "^0.1.1",
-    "karma-sauce-launcher": "^0.2.14",
-    "lodash": "^3.10.0",
-    "mocha": "^2.3.3",
+    "karma": "~1.3.0",
+    "karma-chrome-launcher": "~2.0.0",
+    "karma-detect-browsers": "~2.1.0",
+    "karma-firefox-launcher": "~1.0.0",
+    "karma-ie-launcher": "~1.0.0",
+    "karma-mocha": "~1.2.0",
+    "karma-safari-launcher": "~1.0.0",
+    "karma-sauce-launcher": "~1.0.0",
+    "lodash": "~3.10.1",
+    "mocha": "~3.1.0",
     "node-tick-processor": "~0.0.2",
-    "regenerate": "~1.2.1",
+    "regenerate": "~1.3.1",
     "temp": "~0.8.3",
-    "unicode-7.0.0": "~0.1.5"
+    "tslint": "~3.15.1",
+    "typescript": "~1.8.10",
+    "typescript-formatter": "~2.3.0",
+    "unicode-8.0.0": "~0.7.0",
+    "webpack": "~1.13.2"
   },
   "directories": {},
   "dist": {
-    "shasum": "96e3b70d5779f6ad49cd032673d1c312767ba581",
-    "tarball": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz"
+    "shasum": "fdca51cee6133895e3c88d535ce49dbff62a4633",
+    "tarball": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz"
   },
   "engines": {
-    "node": ">=0.10.0"
+    "node": ">=4"
   },
   "files": [
     "bin",
-    "unit-tests.js",
-    "esprima.js"
+    "dist/esprima.js"
   ],
-  "gitHead": "abaaf7f12040f0b31fac6fee342ffec8feab15d0",
+  "gitHead": "cd5909280f363d503142cb79077ec532132d9749",
   "homepage": "http://esprima.org",
   "keywords": [
     "ast",
     "ecmascript",
+    "esprima",
     "javascript",
     "parser",
     "syntax"
   ],
   "license": "BSD-2-Clause",
-  "main": "esprima.js",
+  "main": "dist/esprima.js",
   "maintainers": [
     {
       "name": "ariya",
@@ -120,34 +122,42 @@
     "url": "git+https://github.com/jquery/esprima.git"
   },
   "scripts": {
-    "all-tests": "npm run generate-fixtures && npm run unit-tests && npm run grammar-tests && npm run regression-tests",
+    "all-tests": "npm run generate-fixtures && npm run unit-tests && npm run api-tests && npm run grammar-tests && npm run regression-tests && npm run hostile-env-tests",
     "analyze-coverage": "istanbul cover test/unit-tests.js",
-    "appveyor": "npm run all-tests && npm run browser-tests && npm run dynamic-analysis",
-    "benchmark": "node test/benchmarks.js",
-    "benchmark-quick": "node test/benchmarks.js quick",
-    "browser-tests": "npm run generate-fixtures && cd test && karma start --single-run",
+    "api-tests": "mocha -R dot test/api-tests.js",
+    "appveyor": "npm run compile && npm run all-tests && npm run browser-tests",
+    "benchmark": "npm run benchmark-parser && npm run benchmark-tokenizer",
+    "benchmark-parser": "node -expose_gc test/benchmark-parser.js",
+    "benchmark-tokenizer": "node --expose_gc test/benchmark-tokenizer.js",
+    "browser-tests": "npm run compile && npm run generate-fixtures && cd test && karma start --single-run",
     "check-coverage": "istanbul check-coverage --statement 100 --branch 100 --function 100",
     "check-version": "node test/check-version.js",
     "circleci": "npm test && npm run codecov && npm run downstream",
+    "code-style": "tsfmt --verify src/*.ts && tsfmt --verify test/*.js",
     "codecov": "istanbul report cobertura && codecov < ./coverage/cobertura-coverage.xml",
+    "compile": "tsc -p src/ && webpack && node tools/fixupbundle.js",
     "complexity": "node test/check-complexity.js",
     "downstream": "node test/downstream.js",
-    "droneio": "npm test && npm run saucelabs-evergreen && npm run saucelabs-ie && npm run saucelabs-safari",
+    "droneio": "npm run compile && npm run all-tests && npm run saucelabs",
     "dynamic-analysis": "npm run analyze-coverage && npm run check-coverage",
-    "eslint": "node node_modules/eslint/bin/eslint.js -c .lintrc esprima.js",
+    "format-code": "tsfmt -r src/*.ts && tsfmt -r test/*.js",
     "generate-fixtures": "node tools/generate-fixtures.js",
     "generate-regex": "node tools/generate-identifier-regex.js",
+    "generate-xhtml-entities": "node tools/generate-xhtml-entities.js",
     "grammar-tests": "node test/grammar-tests.js",
-    "jscs": "jscs -p crockford esprima.js && jscs -p crockford test/*.js",
+    "hostile-env-tests": "node test/hostile-environment-tests.js",
+    "prepublish": "npm run compile",
     "profile": "node --prof test/profile.js && mv isolate*.log v8.log && node-tick-processor",
     "regression-tests": "node test/regression-tests.js",
+    "saucelabs": "npm run saucelabs-evergreen && npm run saucelabs-ie && npm run saucelabs-safari",
     "saucelabs-evergreen": "cd test && karma start saucelabs-evergreen.conf.js",
     "saucelabs-ie": "cd test && karma start saucelabs-ie.conf.js",
     "saucelabs-safari": "cd test && karma start saucelabs-safari.conf.js",
-    "static-analysis": "npm run check-version && npm run jscs && npm run eslint && npm run complexity",
-    "test": "npm run all-tests && npm run static-analysis && npm run dynamic-analysis",
+    "static-analysis": "npm run check-version && npm run tslint && npm run code-style && npm run complexity",
+    "test": "npm run compile && npm run all-tests && npm run static-analysis && npm run dynamic-analysis",
     "travis": "npm test",
+    "tslint": "tslint src/*.ts",
     "unit-tests": "node test/unit-tests.js"
   },
-  "version": "2.7.3"
+  "version": "3.1.3"
 }
diff --git a/tools/eslint/node_modules/esquery/README.md b/tools/eslint/node_modules/esquery/README.md
new file mode 100644
index 00000000000000..ff27e0315d566a
--- /dev/null
+++ b/tools/eslint/node_modules/esquery/README.md
@@ -0,0 +1,26 @@
+ESQuery is a library for querying the AST output by Esprima for patterns of syntax using a CSS style selector system. Check out the demo:
+
+[demo](https://estools.github.io/esquery/)
+
+The following selectors are supported:
+* AST node type: `ForStatement`
+* [wildcard](http://dev.w3.org/csswg/selectors4/#universal-selector): `*`
+* [attribute existence](http://dev.w3.org/csswg/selectors4/#attribute-selectors): `[attr]`
+* [attribute value](http://dev.w3.org/csswg/selectors4/#attribute-selectors): `[attr="foo"]` or `[attr=123]`
+* attribute regex: `[attr=/foo.*/]`
+* attribute conditons: `[attr!="foo"]`, `[attr>2]`, `[attr<3]`, `[attr>=2]`, or `[attr<=3]`
+* nested attribute: `[attr.level2="foo"]`
+* field: `FunctionDeclaration > Identifier.id`
+* [First](http://dev.w3.org/csswg/selectors4/#the-first-child-pseudo) or [last](http://dev.w3.org/csswg/selectors4/#the-last-child-pseudo) child: `:first-child` or `:last-child`
+* [nth-child](http://dev.w3.org/csswg/selectors4/#the-nth-child-pseudo) (no ax+b support): `:nth-child(2)`
+* [nth-last-child](http://dev.w3.org/csswg/selectors4/#the-nth-last-child-pseudo) (no ax+b support): `:nth-last-child(1)`
+* [descendant](http://dev.w3.org/csswg/selectors4/#descendant-combinators): `ancestor descendant`
+* [child](http://dev.w3.org/csswg/selectors4/#child-combinators): `parent > child`
+* [following sibling](http://dev.w3.org/csswg/selectors4/#general-sibling-combinators): `node ~ sibling`
+* [adjacent sibling](http://dev.w3.org/csswg/selectors4/#adjacent-sibling-combinators): `node + adjacent`
+* [negation](http://dev.w3.org/csswg/selectors4/#negation-pseudo): `:not(ForStatement)`
+* [matches-any](http://dev.w3.org/csswg/selectors4/#matches): `:matches([attr] > :first-child, :last-child)`
+* [subject indicator](http://dev.w3.org/csswg/selectors4/#subject): `!IfStatement > [name="foo"]`
+* class of AST node: `:statement`, `:expression`, `:declaration`, `:function`, or `:pattern`
+
+[![Build Status](https://travis-ci.org/estools/esquery.png?branch=master)](https://travis-ci.org/estools/esquery)
diff --git a/tools/eslint/node_modules/esquery/esquery.js b/tools/eslint/node_modules/esquery/esquery.js
new file mode 100644
index 00000000000000..5b67924a12836a
--- /dev/null
+++ b/tools/eslint/node_modules/esquery/esquery.js
@@ -0,0 +1,320 @@
+/* vim: set sw=4 sts=4 : */
+(function () {
+
+    var estraverse = require('estraverse');
+    var parser = require('./parser');
+
+    var isArray = Array.isArray || function isArray(array) {
+        return {}.toString.call(array) === '[object Array]';
+    };
+
+    var LEFT_SIDE = {};
+    var RIGHT_SIDE = {};
+
+    function esqueryModule() {
+
+        /**
+         * Get the value of a property which may be multiple levels down in the object.
+         */
+        function getPath(obj, key) {
+            var i, keys = key.split(".");
+            for (i = 0; i < keys.length; i++) {
+                if (obj == null) { return obj; }
+                obj = obj[keys[i]];
+            }
+            return obj;
+        }
+
+        /**
+         * Determine whether `node` can be reached by following `path`, starting at `ancestor`.
+         */
+        function inPath(node, ancestor, path) {
+            var field, remainingPath, i;
+            if (path.length === 0) { return node === ancestor; }
+            if (ancestor == null) { return false; }
+            field = ancestor[path[0]];
+            remainingPath = path.slice(1);
+            if (isArray(field)) {
+                for (i = 0, l = field.length; i < l; ++i) {
+                    if (inPath(node, field[i], remainingPath)) { return true; }
+                }
+                return false;
+            } else {
+                return inPath(node, field, remainingPath);
+            }
+        }
+
+        /**
+         * Given a `node` and its ancestors, determine if `node` is matched by `selector`.
+         */
+        function matches(node, selector, ancestry) {
+            var path, ancestor, i, l, p;
+            if (!selector) { return true; }
+            if (!node) { return false; }
+            if (!ancestry) { ancestry = []; }
+
+            switch(selector.type) {
+                case 'wildcard':
+                    return true;
+
+                case 'identifier':
+                    return selector.value.toLowerCase() === node.type.toLowerCase();
+
+                case 'field':
+                    path = selector.name.split('.');
+                    ancestor = ancestry[path.length - 1];
+                    return inPath(node, ancestor, path);
+
+                case 'matches':
+                    for (i = 0, l = selector.selectors.length; i < l; ++i) {
+                        if (matches(node, selector.selectors[i], ancestry)) { return true; }
+                    }
+                    return false;
+
+                case 'compound':
+                    for (i = 0, l = selector.selectors.length; i < l; ++i) {
+                        if (!matches(node, selector.selectors[i], ancestry)) { return false; }
+                    }
+                    return true;
+
+                case 'not':
+                    for (i = 0, l = selector.selectors.length; i < l; ++i) {
+                        if (matches(node, selector.selectors[i], ancestry)) { return false; }
+                    }
+                    return true;
+
+                case 'child':
+                    if (matches(node, selector.right, ancestry)) {
+                        return matches(ancestry[0], selector.left, ancestry.slice(1));
+                    }
+                    return false;
+
+                case 'descendant':
+                    if (matches(node, selector.right, ancestry)) {
+                        for (i = 0, l = ancestry.length; i < l; ++i) {
+                            if (matches(ancestry[i], selector.left, ancestry.slice(i + 1))) {
+                                return true;
+                            }
+                        }
+                    }
+                    return false;
+
+                case 'attribute':
+                    p = getPath(node, selector.name);
+                    switch (selector.operator) {
+                        case null:
+                        case void 0:
+                            return p != null;
+                        case '=':
+                            switch (selector.value.type) {
+                                case 'regexp': return selector.value.value.test(p);
+                                case 'literal': return '' + selector.value.value === '' + p;
+                                case 'type': return selector.value.value === typeof p;
+                            }
+                        case '!=':
+                            switch (selector.value.type) {
+                                case 'regexp': return !selector.value.value.test(p);
+                                case 'literal': return '' + selector.value.value !== '' + p;
+                                case 'type': return selector.value.value !== typeof p;
+                            }
+                        case '<=': return p <= selector.value.value;
+                        case '<': return p < selector.value.value;
+                        case '>': return p > selector.value.value;
+                        case '>=': return p >= selector.value.value;
+                    }
+
+                case 'sibling':
+                    return matches(node, selector.right, ancestry) &&
+                        sibling(node, selector.left, ancestry, LEFT_SIDE) ||
+                        selector.left.subject &&
+                        matches(node, selector.left, ancestry) &&
+                        sibling(node, selector.right, ancestry, RIGHT_SIDE);
+
+                case 'adjacent':
+                    return matches(node, selector.right, ancestry) &&
+                        adjacent(node, selector.left, ancestry, LEFT_SIDE) ||
+                        selector.right.subject &&
+                        matches(node, selector.left, ancestry) &&
+                        adjacent(node, selector.right, ancestry, RIGHT_SIDE);
+
+                case 'nth-child':
+                    return matches(node, selector.right, ancestry) &&
+                        nthChild(node, ancestry, function (length) {
+                            return selector.index.value - 1;
+                        });
+
+                case 'nth-last-child':
+                    return matches(node, selector.right, ancestry) &&
+                        nthChild(node, ancestry, function (length) {
+                            return length - selector.index.value;
+                        });
+
+                case 'class':
+                    if(!node.type) return false;
+                    switch(selector.name.toLowerCase()){
+                        case 'statement':
+                            if(node.type.slice(-9) === 'Statement') return true;
+                            // fallthrough: interface Declaration <: Statement { }
+                        case 'declaration':
+                            return node.type.slice(-11) === 'Declaration';
+                        case 'pattern':
+                            if(node.type.slice(-7) === 'Pattern') return true;
+                            // fallthrough: interface Expression <: Node, Pattern { }
+                        case 'expression':
+                            return node.type.slice(-10) === 'Expression' ||
+                                node.type === 'Literal' ||
+                                node.type === 'Identifier';
+                        case 'function':
+                            return node.type.slice(0, 8) === 'Function' ||
+                                node.type === 'ArrowFunctionExpression';
+                    }
+                    throw new Error('Unknown class name: ' + selector.name);
+            }
+
+            throw new Error('Unknown selector type: ' + selector.type);
+        }
+
+        /*
+         * Determines if the given node has a sibling that matches the given selector.
+         */
+        function sibling(node, selector, ancestry, side) {
+            var parent = ancestry[0], listProp, startIndex, keys, i, l, k, lowerBound, upperBound;
+            if (!parent) { return false; }
+            keys = estraverse.VisitorKeys[parent.type];
+            for (i = 0, l = keys.length; i < l; ++i) {
+                listProp = parent[keys[i]];
+                if (isArray(listProp)) {
+                    startIndex = listProp.indexOf(node);
+                    if (startIndex < 0) { continue; }
+                    if (side === LEFT_SIDE) {
+                      lowerBound = 0;
+                      upperBound = startIndex;
+                    } else {
+                      lowerBound = startIndex + 1;
+                      upperBound = listProp.length;
+                    }
+                    for (k = lowerBound; k < upperBound; ++k) {
+                        if (matches(listProp[k], selector, ancestry)) {
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+
+        /*
+         * Determines if the given node has an asjacent sibling that matches the given selector.
+         */
+        function adjacent(node, selector, ancestry, side) {
+            var parent = ancestry[0], listProp, keys, i, l, idx;
+            if (!parent) { return false; }
+            keys = estraverse.VisitorKeys[parent.type];
+            for (i = 0, l = keys.length; i < l; ++i) {
+                listProp = parent[keys[i]];
+                if (isArray(listProp)) {
+                    idx = listProp.indexOf(node);
+                    if (idx < 0) { continue; }
+                    if (side === LEFT_SIDE && idx > 0 && matches(listProp[idx - 1], selector, ancestry)) {
+                        return true;
+                    }
+                    if (side === RIGHT_SIDE && idx < listProp.length - 1 && matches(listProp[idx + 1], selector, ancestry)) {
+                        return true;
+                    }
+                }
+            }
+            return false;
+        }
+
+        /*
+         * Determines if the given node is the nth child, determined by idxFn, which is given the containing list's length.
+         */
+        function nthChild(node, ancestry, idxFn) {
+            var parent = ancestry[0], listProp, keys, i, l, idx;
+            if (!parent) { return false; }
+            keys = estraverse.VisitorKeys[parent.type];
+            for (i = 0, l = keys.length; i < l; ++i) {
+                listProp = parent[keys[i]];
+                if (isArray(listProp)) {
+                    idx = listProp.indexOf(node);
+                    if (idx >= 0 && idx === idxFn(listProp.length)) { return true; }
+                }
+            }
+            return false;
+        }
+
+        /*
+         * For each selector node marked as a subject, find the portion of the selector that the subject must match.
+         */
+        function subjects(selector, ancestor) {
+            var results, p;
+            if (selector == null || typeof selector != 'object') { return []; }
+            if (ancestor == null) { ancestor = selector; }
+            results = selector.subject ? [ancestor] : [];
+            for(p in selector) {
+                if(!{}.hasOwnProperty.call(selector, p)) { continue; }
+                [].push.apply(results, subjects(selector[p], p === 'left' ? selector[p] : ancestor));
+            }
+            return results;
+        }
+
+        /**
+         * From a JS AST and a selector AST, collect all JS AST nodes that match the selector.
+         */
+        function match(ast, selector) {
+            var ancestry = [], results = [], altSubjects, i, l, k, m;
+            if (!selector) { return results; }
+            altSubjects = subjects(selector);
+            estraverse.traverse(ast, {
+                enter: function (node, parent) {
+                    if (parent != null) { ancestry.unshift(parent); }
+                    if (matches(node, selector, ancestry)) {
+                        if (altSubjects.length) {
+                            for (i = 0, l = altSubjects.length; i < l; ++i) {
+                                if (matches(node, altSubjects[i], ancestry)) { results.push(node); }
+                                for (k = 0, m = ancestry.length; k < m; ++k) {
+                                    if (matches(ancestry[k], altSubjects[i], ancestry.slice(k + 1))) {
+                                        results.push(ancestry[k]);
+                                    }
+                                }
+                            }
+                        } else {
+                            results.push(node);
+                        }
+                    }
+                },
+                leave: function () { ancestry.shift(); }
+            });
+            return results;
+        }
+
+        /**
+         * Parse a selector string and return its AST.
+         */
+        function parse(selector) {
+            return parser.parse(selector);
+        }
+
+        /**
+         * Query the code AST using the selector string.
+         */
+        function query(ast, selector) {
+            return match(ast, parse(selector));
+        }
+
+        query.parse = parse;
+        query.match = match;
+        query.matches = matches;
+        return query.query = query;
+    }
+
+
+    if (typeof define === "function" && define.amd) {
+        define(esqueryModule);
+    } else if (typeof module !== 'undefined' && module.exports) {
+        module.exports = esqueryModule();
+    } else {
+        this.esquery = esqueryModule();
+    }
+
+})();
diff --git a/tools/eslint/node_modules/esquery/license.txt b/tools/eslint/node_modules/esquery/license.txt
new file mode 100644
index 00000000000000..52f915e2688a40
--- /dev/null
+++ b/tools/eslint/node_modules/esquery/license.txt
@@ -0,0 +1,24 @@
+Copyright (c) 2013, Joel Feenstra
+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 the ESQuery 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 JOEL FEENSTRA 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.
diff --git a/tools/eslint/node_modules/esquery/package.json b/tools/eslint/node_modules/esquery/package.json
new file mode 100644
index 00000000000000..d4eceb29fce0f6
--- /dev/null
+++ b/tools/eslint/node_modules/esquery/package.json
@@ -0,0 +1,111 @@
+{
+  "_args": [
+    [
+      {
+        "raw": "esquery@^1.0.0",
+        "scope": null,
+        "escapedName": "esquery",
+        "name": "esquery",
+        "rawSpec": "^1.0.0",
+        "spec": ">=1.0.0 <2.0.0",
+        "type": "range"
+      },
+      "/Users/trott/io.js/tools/node_modules/eslint"
+    ]
+  ],
+  "_from": "esquery@>=1.0.0 <2.0.0",
+  "_id": "esquery@1.0.0",
+  "_inCache": true,
+  "_location": "/esquery",
+  "_nodeVersion": "7.5.0",
+  "_npmOperationalInternal": {
+    "host": "packages-12-west.internal.npmjs.com",
+    "tmp": "tmp/esquery-1.0.0.tgz_1489187536588_0.0852991035208106"
+  },
+  "_npmUser": {
+    "name": "michaelficarra",
+    "email": "npm@michael.ficarra.me"
+  },
+  "_npmVersion": "4.1.2",
+  "_phantomChildren": {},
+  "_requested": {
+    "raw": "esquery@^1.0.0",
+    "scope": null,
+    "escapedName": "esquery",
+    "name": "esquery",
+    "rawSpec": "^1.0.0",
+    "spec": ">=1.0.0 <2.0.0",
+    "type": "range"
+  },
+  "_requiredBy": [
+    "/eslint"
+  ],
+  "_resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz",
+  "_shasum": "cfba8b57d7fba93f17298a8a006a04cda13d80fa",
+  "_shrinkwrap": null,
+  "_spec": "esquery@^1.0.0",
+  "_where": "/Users/trott/io.js/tools/node_modules/eslint",
+  "author": {
+    "name": "Joel Feenstra",
+    "email": "jrfeenst+esquery@gmail.com"
+  },
+  "bugs": {
+    "url": "https://github.com/jrfeenst/esquery/issues"
+  },
+  "dependencies": {
+    "estraverse": "^4.0.0"
+  },
+  "description": "A query library for ECMAScript AST using a CSS selector like query language.",
+  "devDependencies": {
+    "commonjs-everywhere": "~0.9.4",
+    "esprima": "~1.1.1",
+    "jstestr": ">=0.4",
+    "pegjs": "~0.7.0"
+  },
+  "directories": {},
+  "dist": {
+    "shasum": "cfba8b57d7fba93f17298a8a006a04cda13d80fa",
+    "tarball": "https://registry.npmjs.org/esquery/-/esquery-1.0.0.tgz"
+  },
+  "engines": {
+    "node": ">=0.6"
+  },
+  "files": [
+    "esquery.js",
+    "parser.js",
+    "license.txt",
+    "README.md"
+  ],
+  "gitHead": "c029e89dcef7bc4ca66588a503ec154bd68f0e05",
+  "homepage": "https://github.com/jrfeenst/esquery#readme",
+  "keywords": [
+    "ast",
+    "ecmascript",
+    "javascript",
+    "query"
+  ],
+  "license": "BSD",
+  "main": "esquery.js",
+  "maintainers": [
+    {
+      "name": "jrfeenst",
+      "email": "jrfeenst@gmail.com"
+    },
+    {
+      "name": "michaelficarra",
+      "email": "npm@michael.ficarra.me"
+    }
+  ],
+  "name": "esquery",
+  "optionalDependencies": {},
+  "preferGlobal": false,
+  "readme": "ERROR: No README data found!",
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/jrfeenst/esquery.git"
+  },
+  "scripts": {
+    "test": "node node_modules/jstestr/bin/jstestr.js path=tests"
+  },
+  "version": "1.0.0"
+}
diff --git a/tools/eslint/node_modules/esquery/parser.js b/tools/eslint/node_modules/esquery/parser.js
new file mode 100644
index 00000000000000..1dbe58ddd8e66c
--- /dev/null
+++ b/tools/eslint/node_modules/esquery/parser.js
@@ -0,0 +1,2595 @@
+var result = (function(){
+  /*
+   * Generated by PEG.js 0.7.0.
+   *
+   * http://pegjs.majda.cz/
+   */
+
+  function quote(s) {
+    /*
+     * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a
+     * string literal except for the closing quote character, backslash,
+     * carriage return, line separator, paragraph separator, and line feed.
+     * Any character may appear in the form of an escape sequence.
+     *
+     * For portability, we also escape escape all control and non-ASCII
+     * characters. Note that "\0" and "\v" escape sequences are not used
+     * because JSHint does not like the first and IE the second.
+     */
+     return '"' + s
+      .replace(/\\/g, '\\\\')  // backslash
+      .replace(/"/g, '\\"')    // closing quote character
+      .replace(/\x08/g, '\\b') // backspace
+      .replace(/\t/g, '\\t')   // horizontal tab
+      .replace(/\n/g, '\\n')   // line feed
+      .replace(/\f/g, '\\f')   // form feed
+      .replace(/\r/g, '\\r')   // carriage return
+      .replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g, escape)
+      + '"';
+  }
+
+  var result = {
+    /*
+     * Parses the input with a generated parser. If the parsing is successfull,
+     * returns a value explicitly or implicitly specified by the grammar from
+     * which the parser was generated (see |PEG.buildParser|). If the parsing is
+     * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.
+     */
+    parse: function(input, startRule) {
+      var parseFunctions = {
+        "start": parse_start,
+        "_": parse__,
+        "identifierName": parse_identifierName,
+        "binaryOp": parse_binaryOp,
+        "selectors": parse_selectors,
+        "selector": parse_selector,
+        "sequence": parse_sequence,
+        "atom": parse_atom,
+        "wildcard": parse_wildcard,
+        "identifier": parse_identifier,
+        "attr": parse_attr,
+        "attrOps": parse_attrOps,
+        "attrEqOps": parse_attrEqOps,
+        "attrName": parse_attrName,
+        "attrValue": parse_attrValue,
+        "string": parse_string,
+        "number": parse_number,
+        "path": parse_path,
+        "type": parse_type,
+        "regex": parse_regex,
+        "field": parse_field,
+        "negation": parse_negation,
+        "matches": parse_matches,
+        "firstChild": parse_firstChild,
+        "lastChild": parse_lastChild,
+        "nthChild": parse_nthChild,
+        "nthLastChild": parse_nthLastChild,
+        "class": parse_class
+      };
+
+      if (startRule !== undefined) {
+        if (parseFunctions[startRule] === undefined) {
+          throw new Error("Invalid rule name: " + quote(startRule) + ".");
+        }
+      } else {
+        startRule = "start";
+      }
+
+      var pos = 0;
+      var reportFailures = 0;
+      var rightmostFailuresPos = 0;
+      var rightmostFailuresExpected = [];
+      var cache = {};
+
+      function padLeft(input, padding, length) {
+        var result = input;
+
+        var padLength = length - input.length;
+        for (var i = 0; i < padLength; i++) {
+          result = padding + result;
+        }
+
+        return result;
+      }
+
+      function escape(ch) {
+        var charCode = ch.charCodeAt(0);
+        var escapeChar;
+        var length;
+
+        if (charCode <= 0xFF) {
+          escapeChar = 'x';
+          length = 2;
+        } else {
+          escapeChar = 'u';
+          length = 4;
+        }
+
+        return '\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);
+      }
+
+      function matchFailed(failure) {
+        if (pos < rightmostFailuresPos) {
+          return;
+        }
+
+        if (pos > rightmostFailuresPos) {
+          rightmostFailuresPos = pos;
+          rightmostFailuresExpected = [];
+        }
+
+        rightmostFailuresExpected.push(failure);
+      }
+
+      function parse_start() {
+        var cacheKey = "start@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        result0 = parse__();
+        if (result0 !== null) {
+          result1 = parse_selectors();
+          if (result1 !== null) {
+            result2 = parse__();
+            if (result2 !== null) {
+              result0 = [result0, result1, result2];
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, ss) { return ss.length === 1 ? ss[0] : { type: 'matches', selectors: ss }; })(pos0, result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+        if (result0 === null) {
+          pos0 = pos;
+          result0 = parse__();
+          if (result0 !== null) {
+            result0 = (function(offset) { return void 0; })(pos0);
+          }
+          if (result0 === null) {
+            pos = pos0;
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse__() {
+        var cacheKey = "_@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+
+        result0 = [];
+        if (input.charCodeAt(pos) === 32) {
+          result1 = " ";
+          pos++;
+        } else {
+          result1 = null;
+          if (reportFailures === 0) {
+            matchFailed("\" \"");
+          }
+        }
+        while (result1 !== null) {
+          result0.push(result1);
+          if (input.charCodeAt(pos) === 32) {
+            result1 = " ";
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\" \"");
+            }
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_identifierName() {
+        var cacheKey = "identifierName@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0;
+
+        pos0 = pos;
+        if (/^[^ [\],():#!=><~+.]/.test(input.charAt(pos))) {
+          result1 = input.charAt(pos);
+          pos++;
+        } else {
+          result1 = null;
+          if (reportFailures === 0) {
+            matchFailed("[^ [\\],():#!=><~+.]");
+          }
+        }
+        if (result1 !== null) {
+          result0 = [];
+          while (result1 !== null) {
+            result0.push(result1);
+            if (/^[^ [\],():#!=><~+.]/.test(input.charAt(pos))) {
+              result1 = input.charAt(pos);
+              pos++;
+            } else {
+              result1 = null;
+              if (reportFailures === 0) {
+                matchFailed("[^ [\\],():#!=><~+.]");
+              }
+            }
+          }
+        } else {
+          result0 = null;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, i) { return i.join(''); })(pos0, result0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_binaryOp() {
+        var cacheKey = "binaryOp@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        result0 = parse__();
+        if (result0 !== null) {
+          if (input.charCodeAt(pos) === 62) {
+            result1 = ">";
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\">\"");
+            }
+          }
+          if (result1 !== null) {
+            result2 = parse__();
+            if (result2 !== null) {
+              result0 = [result0, result1, result2];
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset) { return 'child'; })(pos0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+        if (result0 === null) {
+          pos0 = pos;
+          pos1 = pos;
+          result0 = parse__();
+          if (result0 !== null) {
+            if (input.charCodeAt(pos) === 126) {
+              result1 = "~";
+              pos++;
+            } else {
+              result1 = null;
+              if (reportFailures === 0) {
+                matchFailed("\"~\"");
+              }
+            }
+            if (result1 !== null) {
+              result2 = parse__();
+              if (result2 !== null) {
+                result0 = [result0, result1, result2];
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+          if (result0 !== null) {
+            result0 = (function(offset) { return 'sibling'; })(pos0);
+          }
+          if (result0 === null) {
+            pos = pos0;
+          }
+          if (result0 === null) {
+            pos0 = pos;
+            pos1 = pos;
+            result0 = parse__();
+            if (result0 !== null) {
+              if (input.charCodeAt(pos) === 43) {
+                result1 = "+";
+                pos++;
+              } else {
+                result1 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\"+\"");
+                }
+              }
+              if (result1 !== null) {
+                result2 = parse__();
+                if (result2 !== null) {
+                  result0 = [result0, result1, result2];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+            if (result0 !== null) {
+              result0 = (function(offset) { return 'adjacent'; })(pos0);
+            }
+            if (result0 === null) {
+              pos = pos0;
+            }
+            if (result0 === null) {
+              pos0 = pos;
+              pos1 = pos;
+              if (input.charCodeAt(pos) === 32) {
+                result0 = " ";
+                pos++;
+              } else {
+                result0 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\" \"");
+                }
+              }
+              if (result0 !== null) {
+                result1 = parse__();
+                if (result1 !== null) {
+                  result0 = [result0, result1];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+              if (result0 !== null) {
+                result0 = (function(offset) { return 'descendant'; })(pos0);
+              }
+              if (result0 === null) {
+                pos = pos0;
+              }
+            }
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_selectors() {
+        var cacheKey = "selectors@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4, result5;
+        var pos0, pos1, pos2;
+
+        pos0 = pos;
+        pos1 = pos;
+        result0 = parse_selector();
+        if (result0 !== null) {
+          result1 = [];
+          pos2 = pos;
+          result2 = parse__();
+          if (result2 !== null) {
+            if (input.charCodeAt(pos) === 44) {
+              result3 = ",";
+              pos++;
+            } else {
+              result3 = null;
+              if (reportFailures === 0) {
+                matchFailed("\",\"");
+              }
+            }
+            if (result3 !== null) {
+              result4 = parse__();
+              if (result4 !== null) {
+                result5 = parse_selector();
+                if (result5 !== null) {
+                  result2 = [result2, result3, result4, result5];
+                } else {
+                  result2 = null;
+                  pos = pos2;
+                }
+              } else {
+                result2 = null;
+                pos = pos2;
+              }
+            } else {
+              result2 = null;
+              pos = pos2;
+            }
+          } else {
+            result2 = null;
+            pos = pos2;
+          }
+          while (result2 !== null) {
+            result1.push(result2);
+            pos2 = pos;
+            result2 = parse__();
+            if (result2 !== null) {
+              if (input.charCodeAt(pos) === 44) {
+                result3 = ",";
+                pos++;
+              } else {
+                result3 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\",\"");
+                }
+              }
+              if (result3 !== null) {
+                result4 = parse__();
+                if (result4 !== null) {
+                  result5 = parse_selector();
+                  if (result5 !== null) {
+                    result2 = [result2, result3, result4, result5];
+                  } else {
+                    result2 = null;
+                    pos = pos2;
+                  }
+                } else {
+                  result2 = null;
+                  pos = pos2;
+                }
+              } else {
+                result2 = null;
+                pos = pos2;
+              }
+            } else {
+              result2 = null;
+              pos = pos2;
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, s, ss) {
+          return [s].concat(ss.map(function (s) { return s[3]; }));
+        })(pos0, result0[0], result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_selector() {
+        var cacheKey = "selector@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3;
+        var pos0, pos1, pos2;
+
+        pos0 = pos;
+        pos1 = pos;
+        result0 = parse_sequence();
+        if (result0 !== null) {
+          result1 = [];
+          pos2 = pos;
+          result2 = parse_binaryOp();
+          if (result2 !== null) {
+            result3 = parse_sequence();
+            if (result3 !== null) {
+              result2 = [result2, result3];
+            } else {
+              result2 = null;
+              pos = pos2;
+            }
+          } else {
+            result2 = null;
+            pos = pos2;
+          }
+          while (result2 !== null) {
+            result1.push(result2);
+            pos2 = pos;
+            result2 = parse_binaryOp();
+            if (result2 !== null) {
+              result3 = parse_sequence();
+              if (result3 !== null) {
+                result2 = [result2, result3];
+              } else {
+                result2 = null;
+                pos = pos2;
+              }
+            } else {
+              result2 = null;
+              pos = pos2;
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, a, ops) {
+            return ops.reduce(function (memo, rhs) {
+              return { type: rhs[0], left: memo, right: rhs[1] };
+            }, a);
+          })(pos0, result0[0], result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_sequence() {
+        var cacheKey = "sequence@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 33) {
+          result0 = "!";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"!\"");
+          }
+        }
+        result0 = result0 !== null ? result0 : "";
+        if (result0 !== null) {
+          result2 = parse_atom();
+          if (result2 !== null) {
+            result1 = [];
+            while (result2 !== null) {
+              result1.push(result2);
+              result2 = parse_atom();
+            }
+          } else {
+            result1 = null;
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, subject, as) {
+            var b = as.length === 1 ? as[0] : { type: 'compound', selectors: as };
+            if(subject) b.subject = true;
+            return b;
+          })(pos0, result0[0], result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_atom() {
+        var cacheKey = "atom@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0;
+
+        result0 = parse_wildcard();
+        if (result0 === null) {
+          result0 = parse_identifier();
+          if (result0 === null) {
+            result0 = parse_attr();
+            if (result0 === null) {
+              result0 = parse_field();
+              if (result0 === null) {
+                result0 = parse_negation();
+                if (result0 === null) {
+                  result0 = parse_matches();
+                  if (result0 === null) {
+                    result0 = parse_firstChild();
+                    if (result0 === null) {
+                      result0 = parse_lastChild();
+                      if (result0 === null) {
+                        result0 = parse_nthChild();
+                        if (result0 === null) {
+                          result0 = parse_nthLastChild();
+                          if (result0 === null) {
+                            result0 = parse_class();
+                          }
+                        }
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_wildcard() {
+        var cacheKey = "wildcard@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0;
+        var pos0;
+
+        pos0 = pos;
+        if (input.charCodeAt(pos) === 42) {
+          result0 = "*";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"*\"");
+          }
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, a) { return { type: 'wildcard', value: a }; })(pos0, result0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_identifier() {
+        var cacheKey = "identifier@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 35) {
+          result0 = "#";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"#\"");
+          }
+        }
+        result0 = result0 !== null ? result0 : "";
+        if (result0 !== null) {
+          result1 = parse_identifierName();
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, i) { return { type: 'identifier', value: i }; })(pos0, result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_attr() {
+        var cacheKey = "attr@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 91) {
+          result0 = "[";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"[\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            result2 = parse_attrValue();
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 93) {
+                  result4 = "]";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\"]\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, v) { return v; })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_attrOps() {
+        var cacheKey = "attrOps@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (/^[><]/.test(input.charAt(pos))) {
+            result0 = input.charAt(pos);
+            pos++;
+          } else {
+            result0 = null;
+            if (reportFailures === 0) {
+              matchFailed("[><]");
+            }
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_attrEqOps() {
+        var cacheKey = "attrEqOps@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 33) {
+          result0 = "!";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"!\"");
+          }
+        }
+        result0 = result0 !== null ? result0 : "";
+        if (result0 !== null) {
+          if (input.charCodeAt(pos) === 61) {
+            result1 = "=";
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\"=\"");
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, a) { return a + '='; })(pos0, result0[0]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_attrName() {
+        var cacheKey = "attrName@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0;
+
+        pos0 = pos;
+        result1 = parse_identifierName();
+        if (result1 === null) {
+          if (input.charCodeAt(pos) === 46) {
+            result1 = ".";
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\".\"");
+            }
+          }
+        }
+        if (result1 !== null) {
+          result0 = [];
+          while (result1 !== null) {
+            result0.push(result1);
+            result1 = parse_identifierName();
+            if (result1 === null) {
+              if (input.charCodeAt(pos) === 46) {
+                result1 = ".";
+                pos++;
+              } else {
+                result1 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\".\"");
+                }
+              }
+            }
+          }
+        } else {
+          result0 = null;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, i) { return i.join(''); })(pos0, result0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_attrValue() {
+        var cacheKey = "attrValue@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        result0 = parse_attrName();
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            result2 = parse_attrEqOps();
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                result4 = parse_type();
+                if (result4 === null) {
+                  result4 = parse_regex();
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, name, op, value) {
+              return { type: 'attribute', name: name, operator: op, value: value };
+            })(pos0, result0[0], result0[2], result0[4]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+        if (result0 === null) {
+          pos0 = pos;
+          pos1 = pos;
+          result0 = parse_attrName();
+          if (result0 !== null) {
+            result1 = parse__();
+            if (result1 !== null) {
+              result2 = parse_attrOps();
+              if (result2 !== null) {
+                result3 = parse__();
+                if (result3 !== null) {
+                  result4 = parse_string();
+                  if (result4 === null) {
+                    result4 = parse_number();
+                    if (result4 === null) {
+                      result4 = parse_path();
+                    }
+                  }
+                  if (result4 !== null) {
+                    result0 = [result0, result1, result2, result3, result4];
+                  } else {
+                    result0 = null;
+                    pos = pos1;
+                  }
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+          if (result0 !== null) {
+            result0 = (function(offset, name, op, value) {
+                return { type: 'attribute', name: name, operator: op, value: value };
+              })(pos0, result0[0], result0[2], result0[4]);
+          }
+          if (result0 === null) {
+            pos = pos0;
+          }
+          if (result0 === null) {
+            pos0 = pos;
+            result0 = parse_attrName();
+            if (result0 !== null) {
+              result0 = (function(offset, name) { return { type: 'attribute', name: name }; })(pos0, result0);
+            }
+            if (result0 === null) {
+              pos = pos0;
+            }
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_string() {
+        var cacheKey = "string@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3;
+        var pos0, pos1, pos2, pos3;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 34) {
+          result0 = "\"";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"\\\"\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = [];
+          if (/^[^\\"]/.test(input.charAt(pos))) {
+            result2 = input.charAt(pos);
+            pos++;
+          } else {
+            result2 = null;
+            if (reportFailures === 0) {
+              matchFailed("[^\\\\\"]");
+            }
+          }
+          if (result2 === null) {
+            pos2 = pos;
+            pos3 = pos;
+            if (input.charCodeAt(pos) === 92) {
+              result2 = "\\";
+              pos++;
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("\"\\\\\"");
+              }
+            }
+            if (result2 !== null) {
+              if (input.length > pos) {
+                result3 = input.charAt(pos);
+                pos++;
+              } else {
+                result3 = null;
+                if (reportFailures === 0) {
+                  matchFailed("any character");
+                }
+              }
+              if (result3 !== null) {
+                result2 = [result2, result3];
+              } else {
+                result2 = null;
+                pos = pos3;
+              }
+            } else {
+              result2 = null;
+              pos = pos3;
+            }
+            if (result2 !== null) {
+              result2 = (function(offset, a, b) { return a + b; })(pos2, result2[0], result2[1]);
+            }
+            if (result2 === null) {
+              pos = pos2;
+            }
+          }
+          while (result2 !== null) {
+            result1.push(result2);
+            if (/^[^\\"]/.test(input.charAt(pos))) {
+              result2 = input.charAt(pos);
+              pos++;
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("[^\\\\\"]");
+              }
+            }
+            if (result2 === null) {
+              pos2 = pos;
+              pos3 = pos;
+              if (input.charCodeAt(pos) === 92) {
+                result2 = "\\";
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\"\\\\\"");
+                }
+              }
+              if (result2 !== null) {
+                if (input.length > pos) {
+                  result3 = input.charAt(pos);
+                  pos++;
+                } else {
+                  result3 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("any character");
+                  }
+                }
+                if (result3 !== null) {
+                  result2 = [result2, result3];
+                } else {
+                  result2 = null;
+                  pos = pos3;
+                }
+              } else {
+                result2 = null;
+                pos = pos3;
+              }
+              if (result2 !== null) {
+                result2 = (function(offset, a, b) { return a + b; })(pos2, result2[0], result2[1]);
+              }
+              if (result2 === null) {
+                pos = pos2;
+              }
+            }
+          }
+          if (result1 !== null) {
+            if (input.charCodeAt(pos) === 34) {
+              result2 = "\"";
+              pos++;
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("\"\\\"\"");
+              }
+            }
+            if (result2 !== null) {
+              result0 = [result0, result1, result2];
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, d) {
+                return { type: 'literal', value: strUnescape(d.join('')) };
+              })(pos0, result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+        if (result0 === null) {
+          pos0 = pos;
+          pos1 = pos;
+          if (input.charCodeAt(pos) === 39) {
+            result0 = "'";
+            pos++;
+          } else {
+            result0 = null;
+            if (reportFailures === 0) {
+              matchFailed("\"'\"");
+            }
+          }
+          if (result0 !== null) {
+            result1 = [];
+            if (/^[^\\']/.test(input.charAt(pos))) {
+              result2 = input.charAt(pos);
+              pos++;
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("[^\\\\']");
+              }
+            }
+            if (result2 === null) {
+              pos2 = pos;
+              pos3 = pos;
+              if (input.charCodeAt(pos) === 92) {
+                result2 = "\\";
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\"\\\\\"");
+                }
+              }
+              if (result2 !== null) {
+                if (input.length > pos) {
+                  result3 = input.charAt(pos);
+                  pos++;
+                } else {
+                  result3 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("any character");
+                  }
+                }
+                if (result3 !== null) {
+                  result2 = [result2, result3];
+                } else {
+                  result2 = null;
+                  pos = pos3;
+                }
+              } else {
+                result2 = null;
+                pos = pos3;
+              }
+              if (result2 !== null) {
+                result2 = (function(offset, a, b) { return a + b; })(pos2, result2[0], result2[1]);
+              }
+              if (result2 === null) {
+                pos = pos2;
+              }
+            }
+            while (result2 !== null) {
+              result1.push(result2);
+              if (/^[^\\']/.test(input.charAt(pos))) {
+                result2 = input.charAt(pos);
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("[^\\\\']");
+                }
+              }
+              if (result2 === null) {
+                pos2 = pos;
+                pos3 = pos;
+                if (input.charCodeAt(pos) === 92) {
+                  result2 = "\\";
+                  pos++;
+                } else {
+                  result2 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\"\\\\\"");
+                  }
+                }
+                if (result2 !== null) {
+                  if (input.length > pos) {
+                    result3 = input.charAt(pos);
+                    pos++;
+                  } else {
+                    result3 = null;
+                    if (reportFailures === 0) {
+                      matchFailed("any character");
+                    }
+                  }
+                  if (result3 !== null) {
+                    result2 = [result2, result3];
+                  } else {
+                    result2 = null;
+                    pos = pos3;
+                  }
+                } else {
+                  result2 = null;
+                  pos = pos3;
+                }
+                if (result2 !== null) {
+                  result2 = (function(offset, a, b) { return a + b; })(pos2, result2[0], result2[1]);
+                }
+                if (result2 === null) {
+                  pos = pos2;
+                }
+              }
+            }
+            if (result1 !== null) {
+              if (input.charCodeAt(pos) === 39) {
+                result2 = "'";
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\"'\"");
+                }
+              }
+              if (result2 !== null) {
+                result0 = [result0, result1, result2];
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+          if (result0 !== null) {
+            result0 = (function(offset, d) {
+                  return { type: 'literal', value: strUnescape(d.join('')) };
+                })(pos0, result0[1]);
+          }
+          if (result0 === null) {
+            pos = pos0;
+          }
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_number() {
+        var cacheKey = "number@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2;
+        var pos0, pos1, pos2;
+
+        pos0 = pos;
+        pos1 = pos;
+        pos2 = pos;
+        result0 = [];
+        if (/^[0-9]/.test(input.charAt(pos))) {
+          result1 = input.charAt(pos);
+          pos++;
+        } else {
+          result1 = null;
+          if (reportFailures === 0) {
+            matchFailed("[0-9]");
+          }
+        }
+        while (result1 !== null) {
+          result0.push(result1);
+          if (/^[0-9]/.test(input.charAt(pos))) {
+            result1 = input.charAt(pos);
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("[0-9]");
+            }
+          }
+        }
+        if (result0 !== null) {
+          if (input.charCodeAt(pos) === 46) {
+            result1 = ".";
+            pos++;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\".\"");
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos2;
+          }
+        } else {
+          result0 = null;
+          pos = pos2;
+        }
+        result0 = result0 !== null ? result0 : "";
+        if (result0 !== null) {
+          if (/^[0-9]/.test(input.charAt(pos))) {
+            result2 = input.charAt(pos);
+            pos++;
+          } else {
+            result2 = null;
+            if (reportFailures === 0) {
+              matchFailed("[0-9]");
+            }
+          }
+          if (result2 !== null) {
+            result1 = [];
+            while (result2 !== null) {
+              result1.push(result2);
+              if (/^[0-9]/.test(input.charAt(pos))) {
+                result2 = input.charAt(pos);
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("[0-9]");
+                }
+              }
+            }
+          } else {
+            result1 = null;
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, a, b) {
+                return { type: 'literal', value: parseFloat((a ? a.join('') : '') + b.join('')) };
+              })(pos0, result0[0], result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_path() {
+        var cacheKey = "path@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0;
+        var pos0;
+
+        pos0 = pos;
+        result0 = parse_identifierName();
+        if (result0 !== null) {
+          result0 = (function(offset, i) { return { type: 'literal', value: i }; })(pos0, result0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_type() {
+        var cacheKey = "type@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.substr(pos, 5) === "type(") {
+          result0 = "type(";
+          pos += 5;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"type(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            if (/^[^ )]/.test(input.charAt(pos))) {
+              result3 = input.charAt(pos);
+              pos++;
+            } else {
+              result3 = null;
+              if (reportFailures === 0) {
+                matchFailed("[^ )]");
+              }
+            }
+            if (result3 !== null) {
+              result2 = [];
+              while (result3 !== null) {
+                result2.push(result3);
+                if (/^[^ )]/.test(input.charAt(pos))) {
+                  result3 = input.charAt(pos);
+                  pos++;
+                } else {
+                  result3 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("[^ )]");
+                  }
+                }
+              }
+            } else {
+              result2 = null;
+            }
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 41) {
+                  result4 = ")";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\")\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, t) { return { type: 'type', value: t.join('') }; })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_regex() {
+        var cacheKey = "regex@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 47) {
+          result0 = "/";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\"/\"");
+          }
+        }
+        if (result0 !== null) {
+          if (/^[^\/]/.test(input.charAt(pos))) {
+            result2 = input.charAt(pos);
+            pos++;
+          } else {
+            result2 = null;
+            if (reportFailures === 0) {
+              matchFailed("[^\\/]");
+            }
+          }
+          if (result2 !== null) {
+            result1 = [];
+            while (result2 !== null) {
+              result1.push(result2);
+              if (/^[^\/]/.test(input.charAt(pos))) {
+                result2 = input.charAt(pos);
+                pos++;
+              } else {
+                result2 = null;
+                if (reportFailures === 0) {
+                  matchFailed("[^\\/]");
+                }
+              }
+            }
+          } else {
+            result1 = null;
+          }
+          if (result1 !== null) {
+            if (input.charCodeAt(pos) === 47) {
+              result2 = "/";
+              pos++;
+            } else {
+              result2 = null;
+              if (reportFailures === 0) {
+                matchFailed("\"/\"");
+              }
+            }
+            if (result2 !== null) {
+              result0 = [result0, result1, result2];
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, d) { return { type: 'regexp', value: new RegExp(d.join('')) }; })(pos0, result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_field() {
+        var cacheKey = "field@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1, pos2;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 46) {
+          result0 = ".";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\".\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse_identifierName();
+          if (result1 !== null) {
+            result2 = [];
+            pos2 = pos;
+            if (input.charCodeAt(pos) === 46) {
+              result3 = ".";
+              pos++;
+            } else {
+              result3 = null;
+              if (reportFailures === 0) {
+                matchFailed("\".\"");
+              }
+            }
+            if (result3 !== null) {
+              result4 = parse_identifierName();
+              if (result4 !== null) {
+                result3 = [result3, result4];
+              } else {
+                result3 = null;
+                pos = pos2;
+              }
+            } else {
+              result3 = null;
+              pos = pos2;
+            }
+            while (result3 !== null) {
+              result2.push(result3);
+              pos2 = pos;
+              if (input.charCodeAt(pos) === 46) {
+                result3 = ".";
+                pos++;
+              } else {
+                result3 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\".\"");
+                }
+              }
+              if (result3 !== null) {
+                result4 = parse_identifierName();
+                if (result4 !== null) {
+                  result3 = [result3, result4];
+                } else {
+                  result3 = null;
+                  pos = pos2;
+                }
+              } else {
+                result3 = null;
+                pos = pos2;
+              }
+            }
+            if (result2 !== null) {
+              result0 = [result0, result1, result2];
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, i, is) {
+          return { type: 'field', name: is.reduce(function(memo, p){ return memo + p[0] + p[1]; }, i)};
+        })(pos0, result0[1], result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_negation() {
+        var cacheKey = "negation@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.substr(pos, 5) === ":not(") {
+          result0 = ":not(";
+          pos += 5;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":not(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            result2 = parse_selectors();
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 41) {
+                  result4 = ")";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\")\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, ss) { return { type: 'not', selectors: ss }; })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_matches() {
+        var cacheKey = "matches@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.substr(pos, 9) === ":matches(") {
+          result0 = ":matches(";
+          pos += 9;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":matches(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            result2 = parse_selectors();
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 41) {
+                  result4 = ")";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\")\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, ss) { return { type: 'matches', selectors: ss }; })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_firstChild() {
+        var cacheKey = "firstChild@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0;
+        var pos0;
+
+        pos0 = pos;
+        if (input.substr(pos, 12) === ":first-child") {
+          result0 = ":first-child";
+          pos += 12;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":first-child\"");
+          }
+        }
+        if (result0 !== null) {
+          result0 = (function(offset) { return nth(1); })(pos0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_lastChild() {
+        var cacheKey = "lastChild@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0;
+        var pos0;
+
+        pos0 = pos;
+        if (input.substr(pos, 11) === ":last-child") {
+          result0 = ":last-child";
+          pos += 11;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":last-child\"");
+          }
+        }
+        if (result0 !== null) {
+          result0 = (function(offset) { return nthLast(1); })(pos0);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_nthChild() {
+        var cacheKey = "nthChild@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.substr(pos, 11) === ":nth-child(") {
+          result0 = ":nth-child(";
+          pos += 11;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":nth-child(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            if (/^[0-9]/.test(input.charAt(pos))) {
+              result3 = input.charAt(pos);
+              pos++;
+            } else {
+              result3 = null;
+              if (reportFailures === 0) {
+                matchFailed("[0-9]");
+              }
+            }
+            if (result3 !== null) {
+              result2 = [];
+              while (result3 !== null) {
+                result2.push(result3);
+                if (/^[0-9]/.test(input.charAt(pos))) {
+                  result3 = input.charAt(pos);
+                  pos++;
+                } else {
+                  result3 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("[0-9]");
+                  }
+                }
+              }
+            } else {
+              result2 = null;
+            }
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 41) {
+                  result4 = ")";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\")\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, n) { return nth(parseInt(n.join(''), 10)); })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_nthLastChild() {
+        var cacheKey = "nthLastChild@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1, result2, result3, result4;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.substr(pos, 16) === ":nth-last-child(") {
+          result0 = ":nth-last-child(";
+          pos += 16;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":nth-last-child(\"");
+          }
+        }
+        if (result0 !== null) {
+          result1 = parse__();
+          if (result1 !== null) {
+            if (/^[0-9]/.test(input.charAt(pos))) {
+              result3 = input.charAt(pos);
+              pos++;
+            } else {
+              result3 = null;
+              if (reportFailures === 0) {
+                matchFailed("[0-9]");
+              }
+            }
+            if (result3 !== null) {
+              result2 = [];
+              while (result3 !== null) {
+                result2.push(result3);
+                if (/^[0-9]/.test(input.charAt(pos))) {
+                  result3 = input.charAt(pos);
+                  pos++;
+                } else {
+                  result3 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("[0-9]");
+                  }
+                }
+              }
+            } else {
+              result2 = null;
+            }
+            if (result2 !== null) {
+              result3 = parse__();
+              if (result3 !== null) {
+                if (input.charCodeAt(pos) === 41) {
+                  result4 = ")";
+                  pos++;
+                } else {
+                  result4 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\")\"");
+                  }
+                }
+                if (result4 !== null) {
+                  result0 = [result0, result1, result2, result3, result4];
+                } else {
+                  result0 = null;
+                  pos = pos1;
+                }
+              } else {
+                result0 = null;
+                pos = pos1;
+              }
+            } else {
+              result0 = null;
+              pos = pos1;
+            }
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, n) { return nthLast(parseInt(n.join(''), 10)); })(pos0, result0[2]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+      function parse_class() {
+        var cacheKey = "class@" + pos;
+        var cachedResult = cache[cacheKey];
+        if (cachedResult) {
+          pos = cachedResult.nextPos;
+          return cachedResult.result;
+        }
+
+        var result0, result1;
+        var pos0, pos1;
+
+        pos0 = pos;
+        pos1 = pos;
+        if (input.charCodeAt(pos) === 58) {
+          result0 = ":";
+          pos++;
+        } else {
+          result0 = null;
+          if (reportFailures === 0) {
+            matchFailed("\":\"");
+          }
+        }
+        if (result0 !== null) {
+          if (input.substr(pos, 9).toLowerCase() === "statement") {
+            result1 = input.substr(pos, 9);
+            pos += 9;
+          } else {
+            result1 = null;
+            if (reportFailures === 0) {
+              matchFailed("\"statement\"");
+            }
+          }
+          if (result1 === null) {
+            if (input.substr(pos, 10).toLowerCase() === "expression") {
+              result1 = input.substr(pos, 10);
+              pos += 10;
+            } else {
+              result1 = null;
+              if (reportFailures === 0) {
+                matchFailed("\"expression\"");
+              }
+            }
+            if (result1 === null) {
+              if (input.substr(pos, 11).toLowerCase() === "declaration") {
+                result1 = input.substr(pos, 11);
+                pos += 11;
+              } else {
+                result1 = null;
+                if (reportFailures === 0) {
+                  matchFailed("\"declaration\"");
+                }
+              }
+              if (result1 === null) {
+                if (input.substr(pos, 8).toLowerCase() === "function") {
+                  result1 = input.substr(pos, 8);
+                  pos += 8;
+                } else {
+                  result1 = null;
+                  if (reportFailures === 0) {
+                    matchFailed("\"function\"");
+                  }
+                }
+                if (result1 === null) {
+                  if (input.substr(pos, 7).toLowerCase() === "pattern") {
+                    result1 = input.substr(pos, 7);
+                    pos += 7;
+                  } else {
+                    result1 = null;
+                    if (reportFailures === 0) {
+                      matchFailed("\"pattern\"");
+                    }
+                  }
+                }
+              }
+            }
+          }
+          if (result1 !== null) {
+            result0 = [result0, result1];
+          } else {
+            result0 = null;
+            pos = pos1;
+          }
+        } else {
+          result0 = null;
+          pos = pos1;
+        }
+        if (result0 !== null) {
+          result0 = (function(offset, c) {
+          return { type: 'class', name: c };
+        })(pos0, result0[1]);
+        }
+        if (result0 === null) {
+          pos = pos0;
+        }
+
+        cache[cacheKey] = {
+          nextPos: pos,
+          result:  result0
+        };
+        return result0;
+      }
+
+
+      function cleanupExpected(expected) {
+        expected.sort();
+
+        var lastExpected = null;
+        var cleanExpected = [];
+        for (var i = 0; i < expected.length; i++) {
+          if (expected[i] !== lastExpected) {
+            cleanExpected.push(expected[i]);
+            lastExpected = expected[i];
+          }
+        }
+        return cleanExpected;
+      }
+
+      function computeErrorPosition() {
+        /*
+         * The first idea was to use |String.split| to break the input up to the
+         * error position along newlines and derive the line and column from
+         * there. However IE's |split| implementation is so broken that it was
+         * enough to prevent it.
+         */
+
+        var line = 1;
+        var column = 1;
+        var seenCR = false;
+
+        for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {
+          var ch = input.charAt(i);
+          if (ch === "\n") {
+            if (!seenCR) { line++; }
+            column = 1;
+            seenCR = false;
+          } else if (ch === "\r" || ch === "\u2028" || ch === "\u2029") {
+            line++;
+            column = 1;
+            seenCR = true;
+          } else {
+            column++;
+            seenCR = false;
+          }
+        }
+
+        return { line: line, column: column };
+      }
+
+
+        function nth(n) { return { type: 'nth-child', index: { type: 'literal', value: n } }; }
+        function nthLast(n) { return { type: 'nth-last-child', index: { type: 'literal', value: n } }; }
+        function strUnescape(s) {
+          return s.replace(/\\(.)/g, function(match, ch) {
+            switch(ch) {
+              case 'a': return '\a';
+              case 'b': return '\b';
+              case 'f': return '\f';
+              case 'n': return '\n';
+              case 'r': return '\r';
+              case 't': return '\t';
+              case 'v': return '\v';
+              default: return ch;
+            }
+          });
+        }
+
+
+      var result = parseFunctions[startRule]();
+
+      /*
+       * The parser is now in one of the following three states:
+       *
+       * 1. The parser successfully parsed the whole input.
+       *
+       *    - |result !== null|
+       *    - |pos === input.length|
+       *    - |rightmostFailuresExpected| may or may not contain something
+       *
+       * 2. The parser successfully parsed only a part of the input.
+       *
+       *    - |result !== null|
+       *    - |pos < input.length|
+       *    - |rightmostFailuresExpected| may or may not contain something
+       *
+       * 3. The parser did not successfully parse any part of the input.
+       *
+       *   - |result === null|
+       *   - |pos === 0|
+       *   - |rightmostFailuresExpected| contains at least one failure
+       *
+       * All code following this comment (including called functions) must
+       * handle these states.
+       */
+      if (result === null || pos !== input.length) {
+        var offset = Math.max(pos, rightmostFailuresPos);
+        var found = offset < input.length ? input.charAt(offset) : null;
+        var errorPosition = computeErrorPosition();
+
+        throw new this.SyntaxError(
+          cleanupExpected(rightmostFailuresExpected),
+          found,
+          offset,
+          errorPosition.line,
+          errorPosition.column
+        );
+      }
+
+      return result;
+    },
+
+    /* Returns the parser source code. */
+    toSource: function() { return this._source; }
+  };
+
+  /* Thrown when a parser encounters a syntax error. */
+
+  result.SyntaxError = function(expected, found, offset, line, column) {
+    function buildMessage(expected, found) {
+      var expectedHumanized, foundHumanized;
+
+      switch (expected.length) {
+        case 0:
+          expectedHumanized = "end of input";
+          break;
+        case 1:
+          expectedHumanized = expected[0];
+          break;
+        default:
+          expectedHumanized = expected.slice(0, expected.length - 1).join(", ")
+            + " or "
+            + expected[expected.length - 1];
+      }
+
+      foundHumanized = found ? quote(found) : "end of input";
+
+      return "Expected " + expectedHumanized + " but " + foundHumanized + " found.";
+    }
+
+    this.name = "SyntaxError";
+    this.expected = expected;
+    this.found = found;
+    this.message = buildMessage(expected, found);
+    this.offset = offset;
+    this.line = line;
+    this.column = column;
+  };
+
+  result.SyntaxError.prototype = Error.prototype;
+
+  return result;
+})();
+if (typeof define === "function" && define.amd) { define(function(){ return result; }); } else if (typeof module !== "undefined" && module.exports) { module.exports = result; } else { this.esquery = result; }
diff --git a/tools/eslint/node_modules/estraverse/package.json b/tools/eslint/node_modules/estraverse/package.json
index 90a19ffb284399..deee198b26388b 100644
--- a/tools/eslint/node_modules/estraverse/package.json
+++ b/tools/eslint/node_modules/estraverse/package.json
@@ -39,7 +39,8 @@
   },
   "_requiredBy": [
     "/escope",
-    "/eslint"
+    "/eslint",
+    "/esquery"
   ],
   "_resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.2.0.tgz",
   "_shasum": "0dee3fed31fcd469618ce7342099fc1afa0bdb13",
diff --git a/tools/eslint/node_modules/event-emitter/README.md b/tools/eslint/node_modules/event-emitter/README.md
index 17f4524fd75403..058fa4f7fcd49f 100644
--- a/tools/eslint/node_modules/event-emitter/README.md
+++ b/tools/eslint/node_modules/event-emitter/README.md
@@ -4,7 +4,7 @@
 ### Installation
 
 	$ npm install event-emitter
-	
+
 To port it to Browser or any other (non CJS) environment, use your favorite CJS bundler. No favorite yet? Try: [Browserify](http://browserify.org/), [Webmake](https://github.com/medikoo/modules-webmake) or [Webpack](http://webpack.github.io/)
 
 ### Usage
@@ -12,14 +12,17 @@ To port it to Browser or any other (non CJS) environment, use your favorite CJS
 ```javascript
 var ee = require('event-emitter');
 
-var emitter = ee({}), listener;
+var MyClass = function () { /* .. */ };
+ee(MyClass.prototype); // All instances of MyClass will expose event-emitter interface
+
+var emitter = new MyClass(), listener;
 
 emitter.on('test', listener = function (args) {
-  // …emitter logic
+  // … react to 'test' event
 });
 
 emitter.once('test', function (args) {
-  // …invoked only once(!)
+  // … react to first 'test' event (invoked only once!)
 });
 
 emitter.emit('test', arg1, arg2/*…args*/); // Two above listeners invoked
@@ -63,7 +66,7 @@ It works internally by redefinition of `emit` method, if in your interface this
 
 #### unify(emitter1, emitter2) _(event-emitter/unify)_
 
-Unifies event handling for two objects. Events emitted on _emitter1_ would be also emitter on _emitter2_, and other way back.  
+Unifies event handling for two objects. Events emitted on _emitter1_ would be also emitted on _emitter2_, and other way back.
 Non reversible.
 
 ```javascript
diff --git a/tools/eslint/node_modules/event-emitter/package.json b/tools/eslint/node_modules/event-emitter/package.json
index 6930beb12ea01d..e58baf0a515df6 100644
--- a/tools/eslint/node_modules/event-emitter/package.json
+++ b/tools/eslint/node_modules/event-emitter/package.json
@@ -2,45 +2,49 @@
   "_args": [
     [
       {
-        "raw": "event-emitter@~0.3.4",
+        "raw": "event-emitter@~0.3.5",
         "scope": null,
         "escapedName": "event-emitter",
         "name": "event-emitter",
-        "rawSpec": "~0.3.4",
-        "spec": ">=0.3.4 <0.4.0",
+        "rawSpec": "~0.3.5",
+        "spec": ">=0.3.5 <0.4.0",
         "type": "range"
       },
       "/Users/trott/io.js/tools/node_modules/es6-map"
     ]
   ],
-  "_from": "event-emitter@>=0.3.4 <0.4.0",
-  "_id": "event-emitter@0.3.4",
+  "_from": "event-emitter@>=0.3.5 <0.4.0",
+  "_id": "event-emitter@0.3.5",
   "_inCache": true,
   "_location": "/event-emitter",
-  "_nodeVersion": "4.1.1",
+  "_nodeVersion": "7.7.3",
+  "_npmOperationalInternal": {
+    "host": "packages-18-east.internal.npmjs.com",
+    "tmp": "tmp/event-emitter-0.3.5.tgz_1489591870304_0.5845511830411851"
+  },
   "_npmUser": {
     "name": "medikoo",
     "email": "medikoo+npm@medikoo.com"
   },
-  "_npmVersion": "2.14.4",
+  "_npmVersion": "4.1.2",
   "_phantomChildren": {},
   "_requested": {
-    "raw": "event-emitter@~0.3.4",
+    "raw": "event-emitter@~0.3.5",
     "scope": null,
     "escapedName": "event-emitter",
     "name": "event-emitter",
-    "rawSpec": "~0.3.4",
-    "spec": ">=0.3.4 <0.4.0",
+    "rawSpec": "~0.3.5",
+    "spec": ">=0.3.5 <0.4.0",
     "type": "range"
   },
   "_requiredBy": [
     "/es6-map",
     "/es6-set"
   ],
-  "_resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz",
-  "_shasum": "8d63ddfb4cfe1fae3b32ca265c4c720222080bb5",
+  "_resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz",
+  "_shasum": "df8c69eef1647923c7157b9ce83840610b02cc39",
   "_shrinkwrap": null,
-  "_spec": "event-emitter@~0.3.4",
+  "_spec": "event-emitter@~0.3.5",
   "_where": "/Users/trott/io.js/tools/node_modules/es6-map",
   "author": {
     "name": "Mariusz Nowak",
@@ -51,21 +55,21 @@
     "url": "https://github.com/medikoo/event-emitter/issues"
   },
   "dependencies": {
-    "d": "~0.1.1",
-    "es5-ext": "~0.10.7"
+    "d": "1",
+    "es5-ext": "~0.10.14"
   },
   "description": "Environment agnostic event emitter",
   "devDependencies": {
-    "tad": "~0.2.3",
+    "tad": "~0.2.7",
     "xlint": "~0.2.2",
     "xlint-jslint-medikoo": "~0.1.4"
   },
   "directories": {},
   "dist": {
-    "shasum": "8d63ddfb4cfe1fae3b32ca265c4c720222080bb5",
-    "tarball": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.4.tgz"
+    "shasum": "df8c69eef1647923c7157b9ce83840610b02cc39",
+    "tarball": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz"
   },
-  "gitHead": "adc27b543a53528b9af8a82f7c88db3292f0faa0",
+  "gitHead": "b951397b8f0d55fc7ae8aea7fa7699e48132a53d",
   "homepage": "https://github.com/medikoo/event-emitter#readme",
   "keywords": [
     "event",
@@ -95,5 +99,5 @@
     "lint-console": "node node_modules/xlint/bin/xlint --linter=node_modules/xlint-jslint-medikoo/index.js --watch",
     "test": "node ./node_modules/tad/bin/tad"
   },
-  "version": "0.3.4"
+  "version": "0.3.5"
 }
diff --git a/tools/eslint/node_modules/globals/globals.json b/tools/eslint/node_modules/globals/globals.json
index 38b2a89a4e6924..0bb6547c0ec9e0 100644
--- a/tools/eslint/node_modules/globals/globals.json
+++ b/tools/eslint/node_modules/globals/globals.json
@@ -424,6 +424,7 @@
 		"MediaQueryList": false,
 		"MediaQueryListEvent": false,
 		"MediaSource": false,
+		"MediaRecorder": false,
 		"MediaStream": false,
 		"MediaStreamAudioDestinationNode": false,
 		"MediaStreamAudioSourceNode": false,
@@ -928,6 +929,7 @@
 		"expect": false,
 		"gen": false,
 		"it": false,
+		"fdescribe": false,
 		"fit": false,
 		"jest": false,
 		"pit": false,
@@ -1244,6 +1246,7 @@
 		"findWithAssert": false,
 		"keyEvent": false,
 		"pauseTest": false,
+		"resumeTest": false,
 		"triggerEvent": false,
 		"visit": false
 	},
diff --git a/tools/eslint/node_modules/globals/package.json b/tools/eslint/node_modules/globals/package.json
index df3a2e1dc5bb54..0586d660ff95c5 100644
--- a/tools/eslint/node_modules/globals/package.json
+++ b/tools/eslint/node_modules/globals/package.json
@@ -14,13 +14,13 @@
     ]
   ],
   "_from": "globals@>=9.14.0 <10.0.0",
-  "_id": "globals@9.14.0",
+  "_id": "globals@9.17.0",
   "_inCache": true,
   "_location": "/globals",
-  "_nodeVersion": "4.6.2",
+  "_nodeVersion": "4.7.3",
   "_npmOperationalInternal": {
     "host": "packages-18-east.internal.npmjs.com",
-    "tmp": "tmp/globals-9.14.0.tgz_1479623329065_0.9806821248494089"
+    "tmp": "tmp/globals-9.17.0.tgz_1490427430895_0.24591433047316968"
   },
   "_npmUser": {
     "name": "sindresorhus",
@@ -40,8 +40,8 @@
   "_requiredBy": [
     "/eslint"
   ],
-  "_resolved": "https://registry.npmjs.org/globals/-/globals-9.14.0.tgz",
-  "_shasum": "8859936af0038741263053b39d0e76ca241e4034",
+  "_resolved": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz",
+  "_shasum": "0c0ca696d9b9bb694d2e5470bd37777caad50286",
   "_shrinkwrap": null,
   "_spec": "globals@^9.14.0",
   "_where": "/Users/trott/io.js/tools/node_modules/eslint",
@@ -60,8 +60,8 @@
   },
   "directories": {},
   "dist": {
-    "shasum": "8859936af0038741263053b39d0e76ca241e4034",
-    "tarball": "https://registry.npmjs.org/globals/-/globals-9.14.0.tgz"
+    "shasum": "0c0ca696d9b9bb694d2e5470bd37777caad50286",
+    "tarball": "https://registry.npmjs.org/globals/-/globals-9.17.0.tgz"
   },
   "engines": {
     "node": ">=0.10.0"
@@ -70,7 +70,7 @@
     "index.js",
     "globals.json"
   ],
-  "gitHead": "4159cd067369b8242131551beb09fafb52afc289",
+  "gitHead": "49b918ba1e72d831247a3f92cd8c59acc763a6bf",
   "homepage": "https://github.com/sindresorhus/globals#readme",
   "keywords": [
     "globals",
@@ -111,5 +111,5 @@
   "scripts": {
     "test": "mocha"
   },
-  "version": "9.14.0"
+  "version": "9.17.0"
 }
diff --git a/tools/eslint/node_modules/ignore/README.md b/tools/eslint/node_modules/ignore/README.md
index 9bc9268a263442..71b904e93f4272 100755
--- a/tools/eslint/node_modules/ignore/README.md
+++ b/tools/eslint/node_modules/ignore/README.md
@@ -1,6 +1,37 @@
-[![Build Status](https://travis-ci.org/kaelzhang/node-ignore.svg?branch=master)](https://travis-ci.org/kaelzhang/node-ignore)
-[![Windows Build Status](https://ci.appveyor.com/api/projects/status/github/kaelzhang/node-ignore?branch=master&svg=true)](https://ci.appveyor.com/project/kaelzhang/node-ignore)
-[![npm module downloads per month](http://img.shields.io/npm/dm/ignore.svg)](https://www.npmjs.org/package/ignore)
+
+  
+    
+    
+    
+    
+    
+  
+
+  
+  
+  
+  
+
LinuxOS XWindowsCoverageDownloads
+ + Build Status + + + Windows Build Status + + + Coverage Status + + + npm module downloads per month +
# ignore @@ -10,8 +41,10 @@ Pay attention that [`minimatch`](https://www.npmjs.org/package/minimatch) does n ##### Tested on -- Linux + Node: `0.8` - `5.x` -- Windows + Node: `0.10` - `5.x`, node < `0.10` is not tested due to the lack of support of appveyor. +- Linux + Node: `0.8` - `7.x` +- Windows + Node: `0.10` - `7.x`, node < `0.10` is not tested due to the lack of support of appveyor. + +Actually, `ignore` does not rely on any versions of node specially. ## Table Of Main Contents @@ -34,7 +67,8 @@ const paths = [ '.abc/d/e.js' // included ] -ig.filter(paths) // ['.abc/d/e.js'] +ig.filter(paths) // ['.abc/d/e.js'] +ig.ignores('.abc/a.js') // true ``` ### As the filter function diff --git a/tools/eslint/node_modules/ignore/ignore.js b/tools/eslint/node_modules/ignore/ignore.js index cddf60cb5cd435..bc1bb5ea284f75 100644 --- a/tools/eslint/node_modules/ignore/ignore.js +++ b/tools/eslint/node_modules/ignore/ignore.js @@ -267,7 +267,6 @@ var DEFAULT_REPLACER_PREFIX = [ /^\^*\\\*\\\*\\\//, // '**/foo' <-> 'foo' -// just remove it function () { return '^(?:.*\\/)?'; }]]; @@ -328,15 +327,19 @@ function (match, p1) { }], // trailing wildcard -[/(\\\/)?\\\*$/, function (match, p1) { - return p1 === '\\/' - // 'a/*' does not match 'a/' - // 'a/*' matches 'a/a' - // 'a/' - ? '\\/[^/]+(?=$|\\/$)' - - // or it will match everything after - : ''; +[/(\^|\\\/)?\\\*$/, function (match, p1) { + return (p1 + // '\^': + // '/*' does not match '' + // '/*' does not match everything + + // '\\\/': + // 'abc/*' does not match 'abc/' + ? p1 + '[^/]+' + + // 'a*' matches 'a' + // 'a*' matches 'aa' + : '[^/]*') + '(?=$|\\/$)'; }], [ // unescape /\\\\\\/g, function () { @@ -405,18 +408,17 @@ function make_regex(pattern, negative) { // Windows // -------------------------------------------------------------- +/* istanbul ignore if */ if (process.env.IGNORE_TEST_WIN32 || process.platform === 'win32') { - (function () { - - var filter = IgnoreBase.prototype._filter; - var make_posix = function make_posix(str) { - return (/^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, '/') - ); - }; - - IgnoreBase.prototype._filter = function (path, slices) { - path = make_posix(path); - return filter.call(this, path, slices); - }; - })(); + + var filter = IgnoreBase.prototype._filter; + var make_posix = function make_posix(str) { + return (/^\\\\\?\\/.test(str) || /[^\x00-\x80]+/.test(str) ? str : str.replace(/\\/g, '/') + ); + }; + + IgnoreBase.prototype._filter = function (path, slices) { + path = make_posix(path); + return filter.call(this, path, slices); + }; } diff --git a/tools/eslint/node_modules/ignore/package.json b/tools/eslint/node_modules/ignore/package.json index 8333c2e9ba3986..3f7b1fdeb8d0bc 100644 --- a/tools/eslint/node_modules/ignore/package.json +++ b/tools/eslint/node_modules/ignore/package.json @@ -14,19 +14,19 @@ ] ], "_from": "ignore@>=3.2.0 <4.0.0", - "_id": "ignore@3.2.0", + "_id": "ignore@3.2.6", "_inCache": true, "_location": "/ignore", - "_nodeVersion": "6.7.0", + "_nodeVersion": "6.10.0", "_npmOperationalInternal": { "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/ignore-3.2.0.tgz_1476173756695_0.2819231322500855" + "tmp": "tmp/ignore-3.2.6.tgz_1489647552814_0.3715519669931382" }, "_npmUser": { "name": "kael", "email": "i@kael.me" }, - "_npmVersion": "3.10.3", + "_npmVersion": "3.10.10", "_phantomChildren": {}, "_requested": { "raw": "ignore@^3.2.0", @@ -40,8 +40,8 @@ "_requiredBy": [ "/eslint" ], - "_resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.0.tgz", - "_shasum": "8d88f03c3002a0ac52114db25d2c673b0bf1e435", + "_resolved": "https://registry.npmjs.org/ignore/-/ignore-3.2.6.tgz", + "_shasum": "26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c", "_shrinkwrap": null, "_spec": "ignore@^3.2.0", "_where": "/Users/trott/io.js/tools/node_modules/eslint", @@ -55,18 +55,20 @@ "description": "Ignore is a manager and filter for .gitignore rules.", "devDependencies": { "chai": "~1.7.2", + "codecov": "^1.0.1", + "istanbul": "^0.4.5", "mocha": "~1.13.0" }, "directories": {}, "dist": { - "shasum": "8d88f03c3002a0ac52114db25d2c673b0bf1e435", - "tarball": "https://registry.npmjs.org/ignore/-/ignore-3.2.0.tgz" + "shasum": "26e8da0644be0bb4cb39516f6c79f0e0f4ffe48c", + "tarball": "https://registry.npmjs.org/ignore/-/ignore-3.2.6.tgz" }, "files": [ "ignore.js", "LICENSE-MIT" ], - "gitHead": "703d5b198812a6c9b2d6250c1a04aeb81d5e3949", + "gitHead": "c62a7b1568a5674e6c0a68d234dc24f26f5324c5", "homepage": "https://github.com/kaelzhang/node-ignore#readme", "keywords": [ "ignore", @@ -99,7 +101,9 @@ "url": "git+ssh://git@github.com/kaelzhang/node-ignore.git" }, "scripts": { - "test": "mocha --reporter spec ./test/ignore.js" + "cov-report": "istanbul report", + "test": "istanbul cover ./node_modules/mocha/bin/_mocha --report lcovonly -- --reporter spec ./test/ignore.js && codecov", + "test-no-cov": "mocha --reporter spec ./test/ignore.js" }, - "version": "3.2.0" + "version": "3.2.6" } diff --git a/tools/eslint/node_modules/interpret/index.js b/tools/eslint/node_modules/interpret/index.js index db4cb94c35cf05..ac5ec0871bdf93 100644 --- a/tools/eslint/node_modules/interpret/index.js +++ b/tools/eslint/node_modules/interpret/index.js @@ -40,8 +40,8 @@ const extensions = { '.cirru': 'cirru-script/lib/register', '.cjsx': 'node-cjsx/register', '.co': 'coco', - '.coffee': ['coffee-script/register', 'coffee-script'], - '.coffee.md': ['coffee-script/register', 'coffee-script'], + '.coffee': ['coffee-script/register', 'coffee-script', 'coffeescript/register', 'coffeescript'], + '.coffee.md': ['coffee-script/register', 'coffee-script', 'coffeescript/register', 'coffeescript'], '.csv': 'require-csv', '.eg': 'earlgrey/register', '.iced': ['iced-coffee-script/register', 'iced-coffee-script'], @@ -85,7 +85,7 @@ const extensions = { } } ], - '.litcoffee': ['coffee-script/register', 'coffee-script'], + '.litcoffee': ['coffee-script/register', 'coffee-script', 'coffeescript/register', 'coffeescript'], '.liticed': 'iced-coffee-script/register', '.ls': ['livescript', 'LiveScript'], '.node': null, diff --git a/tools/eslint/node_modules/interpret/package.json b/tools/eslint/node_modules/interpret/package.json index aca70b16bf6754..3a9963ffdc5873 100644 --- a/tools/eslint/node_modules/interpret/package.json +++ b/tools/eslint/node_modules/interpret/package.json @@ -14,19 +14,19 @@ ] ], "_from": "interpret@>=1.0.0 <2.0.0", - "_id": "interpret@1.0.1", + "_id": "interpret@1.0.2", "_inCache": true, "_location": "/interpret", - "_nodeVersion": "5.7.0", + "_nodeVersion": "7.7.3", "_npmOperationalInternal": { "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/interpret-1.0.1.tgz_1462139669981_0.06998275523073971" + "tmp": "tmp/interpret-1.0.2.tgz_1490789188703_0.9869914392475039" }, "_npmUser": { "name": "tkellen", "email": "tyler@sleekcode.net" }, - "_npmVersion": "3.6.0", + "_npmVersion": "4.1.2", "_phantomChildren": {}, "_requested": { "raw": "interpret@^1.0.0", @@ -40,8 +40,8 @@ "_requiredBy": [ "/shelljs" ], - "_resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz", - "_shasum": "d579fb7f693b858004947af39fa0db49f795602c", + "_resolved": "https://registry.npmjs.org/interpret/-/interpret-1.0.2.tgz", + "_shasum": "f4f623f0bb7122f15f5717c8e254b8161b5c5b2d", "_shrinkwrap": null, "_spec": "interpret@^1.0.0", "_where": "/Users/trott/io.js/tools/node_modules/shelljs", @@ -57,10 +57,10 @@ "devDependencies": {}, "directories": {}, "dist": { - "shasum": "d579fb7f693b858004947af39fa0db49f795602c", - "tarball": "https://registry.npmjs.org/interpret/-/interpret-1.0.1.tgz" + "shasum": "f4f623f0bb7122f15f5717c8e254b8161b5c5b2d", + "tarball": "https://registry.npmjs.org/interpret/-/interpret-1.0.2.tgz" }, - "gitHead": "80e9d49ece362c75e697bc7487186761efd77a6f", + "gitHead": "e919561a3671c803cda3fe70880ec311b2f8681f", "homepage": "https://github.com/tkellen/node-interpret", "keywords": [ "cirru-script", @@ -115,5 +115,5 @@ "url": "git://github.com/tkellen/node-interpret.git" }, "scripts": {}, - "version": "1.0.1" + "version": "1.0.2" } diff --git a/tools/eslint/node_modules/is-my-json-valid/README.md b/tools/eslint/node_modules/is-my-json-valid/README.md index 104a425ad204ed..e3963f6ff3f438 100644 --- a/tools/eslint/node_modules/is-my-json-valid/README.md +++ b/tools/eslint/node_modules/is-my-json-valid/README.md @@ -154,6 +154,33 @@ console.log(validate.errors) // [{field: 'data.y', message: 'is required'}, // {field: 'data.x', message: 'is the wrong type'}] ``` +## Error messages + +Here is a list of possible `message` values for errors: + +* `is required` +* `is the wrong type` +* `has additional items` +* `must be FORMAT format` (FORMAT is the `format` property from the schema) +* `must be unique` +* `must be an enum value` +* `dependencies not set` +* `has additional properties` +* `referenced schema does not match` +* `negative schema matches` +* `pattern mismatch` +* `no schemas match` +* `no (or more than one) schemas match` +* `has a remainder` +* `has more properties than allowed` +* `has less properties than allowed` +* `has more items than allowed` +* `has less items than allowed` +* `has longer length than allowed` +* `has less length than allowed` +* `is less than minimum` +* `is more than maximum` + ## Performance is-my-json-valid uses code generation to turn your JSON schema into basic javascript code that is easily optimizeable by v8. diff --git a/tools/eslint/node_modules/is-my-json-valid/index.js b/tools/eslint/node_modules/is-my-json-valid/index.js index 779cfe20bf6009..918bff00bb0fff 100644 --- a/tools/eslint/node_modules/is-my-json-valid/index.js +++ b/tools/eslint/node_modules/is-my-json-valid/index.js @@ -109,10 +109,6 @@ var isMultipleOf = function(name, multipleOf) { return !res; } -var toType = function(node) { - return node.type -} - var compile = function(schema, cache, root, reporter, opts) { var fmts = opts ? xtend(formats, opts.formats) : formats var scope = {unique:unique, formats:fmts, isMultipleOf:isMultipleOf} @@ -180,6 +176,10 @@ var compile = function(schema, cache, root, reporter, opts) { var valid = [].concat(type) .map(function(t) { + if (t && !types.hasOwnProperty(t)) { + throw new Error('Unknown type: ' + t) + } + return types[t || 'any'](name) }) .join(' || ') || 'true' @@ -217,10 +217,6 @@ var compile = function(schema, cache, root, reporter, opts) { } if (Array.isArray(node.required)) { - var isUndefined = function(req) { - return genobj(name, req) + ' === undefined' - } - var checkRequired = function (req) { var prop = genobj(name, req); validate('if (%s === undefined) {', prop) diff --git a/tools/eslint/node_modules/is-my-json-valid/package.json b/tools/eslint/node_modules/is-my-json-valid/package.json index 490003ef9e1bb8..2edffe71ba6f4d 100644 --- a/tools/eslint/node_modules/is-my-json-valid/package.json +++ b/tools/eslint/node_modules/is-my-json-valid/package.json @@ -14,19 +14,19 @@ ] ], "_from": "is-my-json-valid@>=2.10.0 <3.0.0", - "_id": "is-my-json-valid@2.15.0", + "_id": "is-my-json-valid@2.16.0", "_inCache": true, "_location": "/is-my-json-valid", - "_nodeVersion": "4.2.6", + "_nodeVersion": "7.5.0", "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/is-my-json-valid-2.15.0.tgz_1475420473174_0.8758093405049294" + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/is-my-json-valid-2.16.0.tgz_1488122410016_0.7586333625949919" }, "_npmUser": { - "name": "mafintosh", - "email": "mathiasbuus@gmail.com" + "name": "linusu", + "email": "linus@folkdatorn.se" }, - "_npmVersion": "2.14.12", + "_npmVersion": "4.1.2", "_phantomChildren": {}, "_requested": { "raw": "is-my-json-valid@^2.10.0", @@ -40,8 +40,8 @@ "_requiredBy": [ "/eslint" ], - "_resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz", - "_shasum": "936edda3ca3c211fd98f3b2d3e08da43f7b2915b", + "_resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz", + "_shasum": "f079dd9bfdae65ee2038aae8acbc86ab109e3693", "_shrinkwrap": null, "_spec": "is-my-json-valid@^2.10.0", "_where": "/Users/trott/io.js/tools/node_modules/eslint", @@ -63,10 +63,10 @@ }, "directories": {}, "dist": { - "shasum": "936edda3ca3c211fd98f3b2d3e08da43f7b2915b", - "tarball": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.15.0.tgz" + "shasum": "f079dd9bfdae65ee2038aae8acbc86ab109e3693", + "tarball": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz" }, - "gitHead": "c4da71bf1e57083d2dac6e7d123d2e8bd6b9255e", + "gitHead": "01db30a6c968bfa87f2b6e16a905e73172bc6bea", "homepage": "https://github.com/mafintosh/is-my-json-valid", "keywords": [ "json", @@ -89,6 +89,10 @@ "name": "freeall", "email": "freeall@gmail.com" }, + { + "name": "linusu", + "email": "linus@folkdatorn.se" + }, { "name": "mafintosh", "email": "mathiasbuus@gmail.com" @@ -112,5 +116,5 @@ "scripts": { "test": "tape test/*.js" }, - "version": "2.15.0" + "version": "2.16.0" } diff --git a/tools/eslint/node_modules/js-tokens/LICENSE b/tools/eslint/node_modules/js-tokens/LICENSE index c9a4e1bb46980f..748f42e87daa3c 100644 --- a/tools/eslint/node_modules/js-tokens/LICENSE +++ b/tools/eslint/node_modules/js-tokens/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014, 2015, 2016 Simon Lydell +Copyright (c) 2014, 2015, 2016, 2017 Simon Lydell Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/tools/eslint/node_modules/js-tokens/changelog.md b/tools/eslint/node_modules/js-tokens/changelog.md deleted file mode 100644 index b789fdd49578a9..00000000000000 --- a/tools/eslint/node_modules/js-tokens/changelog.md +++ /dev/null @@ -1,82 +0,0 @@ -### Version 2.0.0 (2016-06-19) ### - -- Added: Support for ES2016. In other words, support for the `**` exponentiation - operator. - -These are the breaking changes: - -- `'**'.match(jsTokens)` no longer returns `['*', '*']`, but `['**']`. -- `'**='.match(jsTokens)` no longer returns `['*', '*=']`, but `['**=']`. - - -### Version 1.0.3 (2016-03-27) ### - -- Improved: Made the regex ever so slightly smaller. -- Updated: The readme. - - -### Version 1.0.2 (2015-10-18) ### - -- Improved: Limited npm package contents for a smaller download. Thanks to - @zertosh! - - -### Version 1.0.1 (2015-06-20) ### - -- Fixed: Declared an undeclared variable. - - -### Version 1.0.0 (2015-02-26) ### - -- Changed: Merged the 'operator' and 'punctuation' types into 'punctuator'. That - type is now equivalent to the Punctuator token in the ECMAScript - specification. (Backwards-incompatible change.) -- Fixed: A `-` followed by a number is now correctly matched as a punctuator - followed by a number. It used to be matched as just a number, but there is no - such thing as negative number literals. (Possibly backwards-incompatible - change.) - - -### Version 0.4.1 (2015-02-21) ### - -- Added: Support for the regex `u` flag. - - -### Version 0.4.0 (2015-02-21) ### - -- Improved: `jsTokens.matchToToken` performance. -- Added: Support for octal and binary number literals. -- Added: Support for template strings. - - -### Version 0.3.1 (2015-01-06) ### - -- Fixed: Support for unicode spaces. They used to be allowed in names (which is - very confusing), and some unicode newlines were wrongly allowed in strings and - regexes. - - -### Version 0.3.0 (2014-12-19) ### - -- Changed: The `jsTokens.names` array has been replaced with the - `jsTokens.matchToToken` function. The capturing groups of `jsTokens` are no - longer part of the public API; instead use said function. See this [gist] for - an example. (Backwards-incompatible change.) -- Changed: The empty string is now considered an “invalid” token, instead an - “empty” token (its own group). (Backwards-incompatible change.) -- Removed: component support. (Backwards-incompatible change.) - -[gist]: https://gist.github.com/lydell/be49dbf80c382c473004 - - -### Version 0.2.0 (2014-06-19) ### - -- Changed: Match ES6 function arrows (`=>`) as an operator, instead of its own - category (“functionArrow”), for simplicity. (Backwards-incompatible change.) -- Added: ES6 splats (`...`) are now matched as an operator (instead of three - punctuations). (Backwards-incompatible change.) - - -### Version 0.1.0 (2014-03-08) ### - -- Initial release. diff --git a/tools/eslint/node_modules/js-tokens/index.js b/tools/eslint/node_modules/js-tokens/index.js index 2e070409d96bd6..a3c8a0d7bd5162 100644 --- a/tools/eslint/node_modules/js-tokens/index.js +++ b/tools/eslint/node_modules/js-tokens/index.js @@ -1,11 +1,15 @@ -// Copyright 2014, 2015, 2016 Simon Lydell -// X11 (“MIT”) Licensed. (See LICENSE.) +// Copyright 2014, 2015, 2016, 2017 Simon Lydell +// License: MIT. (See LICENSE.) + +Object.defineProperty(exports, "__esModule", { + value: true +}) // This regex comes from regex.coffee, and is inserted here by generate-index.js // (run `npm run build`). -module.exports = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]{1,6}\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g +exports.default = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyu]{1,5}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g -module.exports.matchToToken = function(match) { +exports.matchToToken = function(match) { var token = {type: "invalid", value: match[0]} if (match[ 1]) token.type = "string" , token.closed = !!(match[3] || match[4]) else if (match[ 5]) token.type = "comment" diff --git a/tools/eslint/node_modules/js-tokens/package.json b/tools/eslint/node_modules/js-tokens/package.json index c78fde1d95349d..5e17a6dd0df637 100644 --- a/tools/eslint/node_modules/js-tokens/package.json +++ b/tools/eslint/node_modules/js-tokens/package.json @@ -2,48 +2,48 @@ "_args": [ [ { - "raw": "js-tokens@^2.0.0", + "raw": "js-tokens@^3.0.0", "scope": null, "escapedName": "js-tokens", "name": "js-tokens", - "rawSpec": "^2.0.0", - "spec": ">=2.0.0 <3.0.0", + "rawSpec": "^3.0.0", + "spec": ">=3.0.0 <4.0.0", "type": "range" }, "/Users/trott/io.js/tools/node_modules/babel-code-frame" ] ], - "_from": "js-tokens@>=2.0.0 <3.0.0", - "_id": "js-tokens@2.0.0", + "_from": "js-tokens@>=3.0.0 <4.0.0", + "_id": "js-tokens@3.0.1", "_inCache": true, "_location": "/js-tokens", - "_nodeVersion": "5.11.1", + "_nodeVersion": "7.2.0", "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/js-tokens-2.0.0.tgz_1466321890449_0.1510669116396457" + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/js-tokens-3.0.1.tgz_1485800902865_0.11822547880001366" }, "_npmUser": { "name": "lydell", "email": "simon.lydell@gmail.com" }, - "_npmVersion": "3.8.6", + "_npmVersion": "3.10.9", "_phantomChildren": {}, "_requested": { - "raw": "js-tokens@^2.0.0", + "raw": "js-tokens@^3.0.0", "scope": null, "escapedName": "js-tokens", "name": "js-tokens", - "rawSpec": "^2.0.0", - "spec": ">=2.0.0 <3.0.0", + "rawSpec": "^3.0.0", + "spec": ">=3.0.0 <4.0.0", "type": "range" }, "_requiredBy": [ "/babel-code-frame" ], - "_resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-2.0.0.tgz", - "_shasum": "79903f5563ee778cc1162e6dcf1a0027c97f9cb5", + "_resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz", + "_shasum": "08e9f132484a2c45a30907e9dc4d5567b7f114d7", "_shrinkwrap": null, - "_spec": "js-tokens@^2.0.0", + "_spec": "js-tokens@^3.0.0", "_where": "/Users/trott/io.js/tools/node_modules/babel-code-frame", "author": { "name": "Simon Lydell" @@ -54,20 +54,20 @@ "dependencies": {}, "description": "A regex that tokenizes JavaScript.", "devDependencies": { - "coffee-script": "~1.10.0", - "esprima": "^2.7.2", + "coffee-script": "~1.12.2", + "esprima": "^3.1.3", "everything.js": "^1.0.3", - "mocha": "^2.5.3" + "mocha": "^3.2.0" }, "directories": {}, "dist": { - "shasum": "79903f5563ee778cc1162e6dcf1a0027c97f9cb5", - "tarball": "https://registry.npmjs.org/js-tokens/-/js-tokens-2.0.0.tgz" + "shasum": "08e9f132484a2c45a30907e9dc4d5567b7f114d7", + "tarball": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.1.tgz" }, "files": [ "index.js" ], - "gitHead": "23fcbe4639fb4baee5dc53616958cc04c8b94026", + "gitHead": "54549dd979142c78cf629b51f9f06e8133c529f9", "homepage": "https://github.com/lydell/js-tokens#readme", "keywords": [ "JavaScript", @@ -96,5 +96,5 @@ "esprima-compare": "node esprima-compare ./index.js everything.js/es5.js", "test": "mocha --ui tdd" }, - "version": "2.0.0" + "version": "3.0.1" } diff --git a/tools/eslint/node_modules/js-tokens/readme.md b/tools/eslint/node_modules/js-tokens/readme.md index 68e470f0cd96c7..0c805c223ab445 100644 --- a/tools/eslint/node_modules/js-tokens/readme.md +++ b/tools/eslint/node_modules/js-tokens/readme.md @@ -1,10 +1,10 @@ -Overview [![Build Status](https://travis-ci.org/lydell/js-tokens.png?branch=master)](https://travis-ci.org/lydell/js-tokens) +Overview [![Build Status](https://travis-ci.org/lydell/js-tokens.svg?branch=master)](https://travis-ci.org/lydell/js-tokens) ======== A regex that tokenizes JavaScript. ```js -var jsTokens = require("js-tokens") +var jsTokens = require("js-tokens").default var jsString = "var foo=opts.foo;\n..." @@ -19,7 +19,9 @@ Installation `npm install js-tokens` ```js -var jsTokens = require("js-tokens") +import jsTokens from "js-tokens" +// or: +var jsTokens = require("js-tokens").default ``` @@ -34,7 +36,13 @@ The regex _always_ matches, even invalid JavaScript and the empty string. The next match is always directly after the previous. -### `var token = jsTokens.matchToToken(match)` ### +### `var token = matchToToken(match)` ### + +```js +import {matchToToken} from "js-tokens" +// or: +var matchToToken = require("js-tokens").matchToToken +``` Takes a `match` returned by `jsTokens.exec(string)`, and returns a `{type: String, value: String}` object. The following types are available: @@ -59,10 +67,7 @@ keywords. You may use [is-keyword-js] to tell them apart. Whitespace includes both line terminators and other whitespace. -For example usage, please see this [gist]. - [is-keyword-js]: https://github.com/crissdev/is-keyword-js -[gist]: https://gist.github.com/lydell/be49dbf80c382c473004 ECMAScript support @@ -214,4 +219,4 @@ code). License ======= -[The X11 (“MIT”) License](LICENSE). +[MIT](LICENSE). diff --git a/tools/eslint/node_modules/js-yaml/README.md b/tools/eslint/node_modules/js-yaml/README.md index 45c35020ce2998..4e06d73f8fe1d6 100644 --- a/tools/eslint/node_modules/js-yaml/README.md +++ b/tools/eslint/node_modules/js-yaml/README.md @@ -183,27 +183,44 @@ options: - `noCompatMode` _(default: `false`)_ - if `true` don't try to be compatible with older yaml versions. Currently: don't quote "yes", "no" and so on, as required for YAML 1.1 -styles: +The following table show availlable styles (e.g. "canonical", +"binary"...) available for each tag (.e.g. !!null, !!int ...). Yaml +ouput is shown on the right side after `=>` (default setting) or `->`: ``` none !!null - "canonical" => "~" + "canonical" -> "~" + "lowercase" => "null" + "uppercase" -> "NULL" + "camelcase" -> "Null" !!int - "binary" => "0b1", "0b101010", "0b1110001111010" - "octal" => "01", "052", "016172" + "binary" -> "0b1", "0b101010", "0b1110001111010" + "octal" -> "01", "052", "016172" "decimal" => "1", "42", "7290" - "hexadecimal" => "0x1", "0x2A", "0x1C7A" + "hexadecimal" -> "0x1", "0x2A", "0x1C7A" -!!null, !!bool, !!float - "lowercase" => "null", "true", "false", ".nan", '.inf' - "uppercase" => "NULL", "TRUE", "FALSE", ".NAN", '.INF' - "camelcase" => "Null", "True", "False", ".NaN", '.Inf' -``` +!!bool + "lowercase" => "true", "false" + "uppercase" -> "TRUE", "FALSE" + "camelcase" -> "True", "False" -By default, !!int uses `decimal`, and !!null, !!bool, !!float use `lowercase`. +!!float + "lowercase" => ".nan", '.inf' + "uppercase" -> ".NAN", '.INF' + "camelcase" -> ".NaN", '.Inf' +``` +Example: +``` javascript +safeDump (object, { + 'styles': { + '!!null': 'canonical' // dump null as ~ + }, + 'sortKeys': true // sort object keys +} +``` ### dump (object [ , options ]) diff --git a/tools/eslint/node_modules/js-yaml/dist/js-yaml.js b/tools/eslint/node_modules/js-yaml/dist/js-yaml.js index 49cb23c959c8ff..08f3c6b40e3d8c 100644 --- a/tools/eslint/node_modules/js-yaml/dist/js-yaml.js +++ b/tools/eslint/node_modules/js-yaml/dist/js-yaml.js @@ -1,4 +1,4 @@ -/* js-yaml 3.7.0 https://github.com/nodeca/js-yaml */(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.jsyaml = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;oi&&" "!==e[h+1],h=o);else if(!l(a))return le;m=m&&p(a)}c=c||d&&o-h-1>i&&" "!==e[h+1]}return s||c?" "===e[0]&&n>9?le:c?ue:ce:m&&!r(e)?ae:se}function h(e,t,n,i){e.dump=function(){function r(t){return c(e,t)}if(0===t.length)return"''";if(!e.noCompatMode&&oe.indexOf(t)!==-1)return"'"+t+"'";var o=e.indent*Math.max(1,n),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o),u=i||e.flowLevel>-1&&n>=e.flowLevel;switch(d(t,u,e.indent,s,r)){case ae:return t;case se:return"'"+t.replace(/'/g,"''")+"'";case ce:return"|"+m(t,e.indent)+g(a(t,o));case ue:return">"+m(t,e.indent)+g(a(y(t,s),o));case le:return'"'+v(t,s)+'"';default:throw new N("impossible error: invalid scalar style")}}()}function m(e,t){var n=" "===e[0]?String(t):"",i="\n"===e[e.length-1],r=i&&("\n"===e[e.length-2]||"\n"===e),o=r?"+":i?"":"-";return n+o+"\n"}function g(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function y(e,t){for(var n,i,r=/(\n+)([^\n]*)/g,o=function(){var n=e.indexOf("\n");return n=n!==-1?n:e.length,r.lastIndex=n,x(e.slice(0,n),t)}(),a="\n"===e[0]||" "===e[0];i=r.exec(e);){var s=i[1],c=i[2];n=" "===c[0],o+=s+(a||n||""===c?"":"\n")+x(c,t),a=n}return o}function x(e,t){if(""===e||" "===e[0])return e;for(var n,i,r=/ [^ ]/g,o=0,a=0,s=0,c="";n=r.exec(e);)s=n.index,s-o>t&&(i=a>o?a:s,c+="\n"+e.slice(o,i),o=i+1),a=s;return c+="\n",c+=e.length-o>t&&a>o?e.slice(o,a)+"\n"+e.slice(a+1):e.slice(o),c.slice(1)}function v(e){for(var t,n,i="",o=0;o1024&&(s+="? "),s+=e.dump+": ",j(e,t,a,!1,!1)&&(s+=e.dump,c+=s));e.tag=u,e.dump="{"+c+"}"}function C(e,t,n,i){var r,o,a,c,u,l,p="",f=e.tag,d=Object.keys(n);if(e.sortKeys===!0)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new N("sortKeys must be a boolean or a function");for(r=0,o=d.length;r1024,u&&(l+=e.dump&&U===e.dump.charCodeAt(0)?"?":"? "),l+=e.dump,u&&(l+=s(e,t)),j(e,t+1,c,!0,u)&&(l+=e.dump&&U===e.dump.charCodeAt(0)?":":": ",l+=e.dump,p+=l));e.tag=f,e.dump=p||"{}"}function k(e,t,n){var i,r,o,a,s,c;for(r=n?e.explicitTypes:e.implicitTypes,o=0,a=r.length;o tag resolver accepts not "'+c+'" style');i=s.represent[c](t,c)}e.dump=i}return!0}return!1}function j(e,t,n,i,r,o){e.tag=null,e.dump=n,k(e,n,!1)||k(e,n,!0);var a=T.call(e.dump);i&&(i=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(s=e.duplicates.indexOf(n),c=s!==-1),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&t>0)&&(r=!1),c&&e.usedDuplicates[s])e.dump="*ref_"+s;else{if(u&&c&&!e.usedDuplicates[s]&&(e.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(e.dump).length?(C(e,t,e.dump,r),c&&(e.dump="&ref_"+s+e.dump)):(w(e,t,e.dump),c&&(e.dump="&ref_"+s+" "+e.dump));else if("[object Array]"===a)i&&0!==e.dump.length?(b(e,t,e.dump,r),c&&(e.dump="&ref_"+s+e.dump)):(A(e,t,e.dump),c&&(e.dump="&ref_"+s+" "+e.dump));else{if("[object String]"!==a){if(e.skipInvalid)return!1;throw new N("unacceptable kind of an object to dump "+a)}"?"!==e.tag&&h(e,e.dump,t,o)}null!==e.tag&&"?"!==e.tag&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function I(e,t){var n,i,r=[],o=[];for(S(e,r,o),n=0,i=o.length;n>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||K,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function d(e,t){return new P(t,new W(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function h(e,t){throw d(e,t)}function m(e,t){e.onWarning&&e.onWarning.call(null,d(e,t))}function g(e,t,n,i){var r,o,a,s;if(t1&&(e.result+=R.repeat("\n",t-1))}function C(e,t,n){var s,c,u,l,p,f,d,h,m,y=e.kind,x=e.result;if(m=e.input.charCodeAt(e.position),o(m)||a(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(c=e.input.charCodeAt(e.position+1),o(c)||n&&a(c)))return!1;for(e.kind="scalar",e.result="",u=l=e.position,p=!1;0!==m;){if(58===m){if(c=e.input.charCodeAt(e.position+1),o(c)||n&&a(c))break}else if(35===m){if(s=e.input.charCodeAt(e.position-1),o(s))break}else{if(e.position===e.lineStart&&b(e)||n&&a(m))break;if(i(m)){if(f=e.line,d=e.lineStart,h=e.lineIndent,A(e,!1,-1),e.lineIndent>=t){p=!0,m=e.input.charCodeAt(e.position);continue}e.position=l,e.line=f,e.lineStart=d,e.lineIndent=h;break}}p&&(g(e,u,l,!1),w(e,e.line-f),u=l=e.position,p=!1),r(m)||(l=e.position+1),m=e.input.charCodeAt(++e.position)}return g(e,u,l,!1),!!e.result||(e.kind=y,e.result=x,!1)}function k(e,t){var n,r,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,r=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(g(e,r,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;r=e.position,e.position++,o=e.position}else i(n)?(g(e,r,o,!0),w(e,A(e,!1,t)),r=o=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);h(e,"unexpected end of the stream within a single quoted scalar")}function j(e,t){var n,r,o,a,u,l;if(l=e.input.charCodeAt(e.position),34!==l)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;0!==(l=e.input.charCodeAt(e.position));){if(34===l)return g(e,n,e.position,!0),e.position++,!0;if(92===l){if(g(e,n,e.position,!0),l=e.input.charCodeAt(++e.position),i(l))A(e,!1,t);else if(l<256&&re[l])e.result+=oe[l],e.position++;else if((u=c(l))>0){for(o=u,a=0;o>0;o--)l=e.input.charCodeAt(++e.position),(u=s(l))>=0?a=(a<<4)+u:h(e,"expected hexadecimal character");e.result+=p(a),e.position++}else h(e,"unknown escape sequence");n=r=e.position}else i(l)?(g(e,n,r,!0),w(e,A(e,!1,t)),n=r=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}h(e,"unexpected end of the stream within a double quoted scalar")}function I(e,t){var n,i,r,a,s,c,u,l,p,f,d,m=!0,g=e.tag,y=e.anchor,v={};if(d=e.input.charCodeAt(e.position),91===d)a=93,u=!1,i=[];else{if(123!==d)return!1;a=125,u=!0,i={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=i),d=e.input.charCodeAt(++e.position);0!==d;){if(A(e,!0,t),d=e.input.charCodeAt(e.position),d===a)return e.position++,e.tag=g,e.anchor=y,e.kind=u?"mapping":"sequence",e.result=i,!0;m||h(e,"missed comma between flow collection entries"),p=l=f=null,s=c=!1,63===d&&(r=e.input.charCodeAt(e.position+1),o(r)&&(s=c=!0,e.position++,A(e,!0,t))),n=e.line,_(e,t,H,!1,!0),p=e.tag,l=e.result,A(e,!0,t),d=e.input.charCodeAt(e.position),!c&&e.line!==n||58!==d||(s=!0,d=e.input.charCodeAt(++e.position),A(e,!0,t),_(e,t,H,!1,!0),f=e.result),u?x(e,i,v,p,l,f):s?i.push(x(e,null,v,p,l,f)):i.push(l),A(e,!0,t),d=e.input.charCodeAt(e.position),44===d?(m=!0,d=e.input.charCodeAt(++e.position)):m=!1}h(e,"unexpected end of the stream within a flow collection")}function S(e,t){var n,o,a,s,c=z,l=!1,p=!1,f=t,d=0,m=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)z===c?c=43===s?Q:J:h(e,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?h(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):p?h(e,"repeat of an indentation width identifier"):(f=t+a-1,p=!0)}if(r(s)){do s=e.input.charCodeAt(++e.position);while(r(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!i(s)&&0!==s)}for(;0!==s;){for(v(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!p||e.lineIndentf&&(f=e.lineIndent),i(s))d++;else{if(e.lineIndentt)&&0!==r)h(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(_(e,t,Z,!0,a)&&(y?m=e.result:g=e.result),y||(x(e,p,f,d,m,g),d=m=g=null),A(e,!0,-1),c=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==c)h(e,"bad indentation of a mapping entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndent tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):h(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):h(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||g}function T(e){var t,n,a,s,c=e.position,u=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(A(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(u=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(t,e.position),a=[],n.length<1&&h(e,"directive name must not be less than one character in length");0!==s;){for(;r(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!i(s));break}if(i(s))break;for(t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&v(e),$.call(se,n)?se[n](e,n,a):m(e,'unknown document directive "'+n+'"')}return A(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,A(e,!0,-1)):u&&h(e,"directives end mark is expected"),_(e,e.lineIndent-1,Z,!1,!0),A(e,!0,-1),e.checkLineBreaks&&ee.test(e.input.slice(c,e.position))&&m(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e)?void(46===e.input.charCodeAt(e.position)&&(e.position+=3,A(e,!0,-1))):void(e.position0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,this.position-i>t/2-1){n=" ... ",i+=5;break}for(o="",a=this.position;at/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(i,a),r.repeat(" ",e)+n+s+o+"\n"+r.repeat(" ",e+this.position-i+n.length)+"^"},i.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(n+=":\n"+t)),n},t.exports=i},{"./common":2}],7:[function(e,t,n){"use strict";function i(e,t,n){var r=[];return e.include.forEach(function(e){n=i(e,t,n)}),e[t].forEach(function(e){n.forEach(function(t,n){t.tag===e.tag&&t.kind===e.kind&&r.push(n)}),n.push(e)}),n.filter(function(e,t){return r.indexOf(t)===-1})}function r(){function e(e){i[e.kind][e.tag]=i.fallback[e.tag]=e}var t,n,i={scalar:{},sequence:{},mapping:{},fallback:{}};for(t=0,n=arguments.length;t64)){if(t<0)return!1;i+=6}return i%8===0}function r(e){var t,n,i=e.replace(/[\r\n=]/g,""),r=i.length,o=l,a=0,c=[];for(t=0;t>16&255),c.push(a>>8&255),c.push(255&a)),a=a<<6|o.indexOf(i.charAt(t));return n=r%4*6,0===n?(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)):18===n?(c.push(a>>10&255),c.push(a>>2&255)):12===n&&c.push(a>>4&255),s?new s(c):c}function o(e){var t,n,i="",r=0,o=e.length,a=l;for(t=0;t>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+e[t];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63], -i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function a(e){return s&&s.isBuffer(e)}var s;try{var c=e;s=c("buffer").Buffer}catch(e){}var u=e("../type"),l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";t.exports=new u("tag:yaml.org,2002:binary",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../type":13}],15:[function(e,t,n){"use strict";function i(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function r(e){return"true"===e||"True"===e||"TRUE"===e}function o(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var a=e("../type");t.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(e,t,n){"use strict";function i(e){return null!==e&&!!u.test(e)}function r(e){var t,n,i,r;return t=e.replace(/_/g,"").toLowerCase(),n="-"===t[0]?-1:1,r=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,i=1,r.forEach(function(e){t+=e*i,i*=60}),n*t):n*parseFloat(t,10)}function o(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(e))return"-0.0";return n=e.toString(10),l.test(n)?n.replace("e",".e"):n}function a(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!==0||s.isNegativeZero(e))}var s=e("../common"),c=e("../type"),u=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;t.exports=new c("tag:yaml.org,2002:float",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(e,t,n){"use strict";function i(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function r(e){return 48<=e&&e<=55}function o(e){return 48<=e&&e<=57}function a(e){if(null===e)return!1;var t,n=e.length,a=0,s=!1;if(!n)return!1;if(t=e[a],"-"!==t&&"+"!==t||(t=e[++a]),"0"===t){if(a+1===n)return!0;if(t=e[++a],"b"===t){for(a++;a3)return!1;if("/"!==t[t.length-i.length-1])return!1}return!0}function r(e){var t=e,n=/\/([gim]*)$/.exec(e),i="";return"/"===t[0]&&(n&&(i=n[1]),t=t.slice(1,t.length-i.length-1)),new RegExp(t,i)}function o(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function a(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],20:[function(e,t,n){"use strict";function i(){return!0}function r(){}function o(){return""}function a(e){return"undefined"==typeof e}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],21:[function(e,t,n){"use strict";var i=e("../type");t.exports=new i("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},{"../type":13}],22:[function(e,t,n){"use strict";function i(e){return"<<"===e||null===e}var r=e("../type");t.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:i})},{"../type":13}],23:[function(e,t,n){"use strict";function i(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function r(){return null}function o(e){return null===e}var a=e("../type");t.exports=new a("tag:yaml.org,2002:null",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(e,t,n){"use strict";function i(e){if(null===e)return!0;var t,n,i,r,o,c=[],u=e;for(t=0,n=u.length;ti&&" "!==e[h+1],h=o);else if(!l(a))return 5;m=m&&p(a)}c=c||d&&o-h-1>i&&" "!==e[h+1]}return s||c?" "===e[0]&&n>9?5:c?4:3:m&&!r(e)?1:2}function h(e,t,n,i){e.dump=function(){function r(t){return c(e,t)}if(0===t.length)return"''";if(!e.noCompatMode&&U.indexOf(t)!==-1)return"'"+t+"'";var o=e.indent*Math.max(1,n),s=e.lineWidth===-1?-1:Math.max(Math.min(e.lineWidth,40),e.lineWidth-o);switch(d(t,i||e.flowLevel>-1&&n>=e.flowLevel,e.indent,s,r)){case 1:return t;case 2:return"'"+t.replace(/'/g,"''")+"'";case 3:return"|"+m(t,e.indent)+g(a(t,o));case 4:return">"+m(t,e.indent)+g(a(y(t,s),o));case 5:return'"'+v(t,s)+'"';default:throw new N("impossible error: invalid scalar style")}}()}function m(e,t){var n=" "===e[0]?String(t):"",i="\n"===e[e.length-1];return n+(!i||"\n"!==e[e.length-2]&&"\n"!==e?i?"":"-":"+")+"\n"}function g(e){return"\n"===e[e.length-1]?e.slice(0,-1):e}function y(e,t){for(var n,i,r=/(\n+)([^\n]*)/g,o=function(){var n=e.indexOf("\n");return n=n!==-1?n:e.length,r.lastIndex=n,x(e.slice(0,n),t)}(),a="\n"===e[0]||" "===e[0];i=r.exec(e);){var s=i[1],c=i[2];n=" "===c[0],o+=s+(a||n||""===c?"":"\n")+x(c,t),a=n}return o}function x(e,t){if(""===e||" "===e[0])return e;for(var n,i,r=/ [^ ]/g,o=0,a=0,s=0,c="";n=r.exec(e);)s=n.index,s-o>t&&(i=a>o?a:s,c+="\n"+e.slice(o,i),o=i+1),a=s;return c+="\n",c+=e.length-o>t&&a>o?e.slice(o,a)+"\n"+e.slice(a+1):e.slice(o),c.slice(1)}function v(e){for(var t,n,i="",o=0;o1024&&(s+="? "),s+=e.dump+": ",j(e,t,a,!1,!1)&&(s+=e.dump,c+=s));e.tag=u,e.dump="{"+c+"}"}function C(e,t,n,i){var r,o,a,c,u,l,p="",f=e.tag,d=Object.keys(n);if(e.sortKeys===!0)d.sort();else if("function"==typeof e.sortKeys)d.sort(e.sortKeys);else if(e.sortKeys)throw new N("sortKeys must be a boolean or a function");for(r=0,o=d.length;r1024,u&&(l+=e.dump&&10===e.dump.charCodeAt(0)?"?":"? "),l+=e.dump,u&&(l+=s(e,t)),j(e,t+1,c,!0,u)&&(l+=e.dump&&10===e.dump.charCodeAt(0)?":":": ",l+=e.dump,p+=l));e.tag=f,e.dump=p||"{}"}function k(e,t,n){var i,r,o,a,s,c;for(r=n?e.explicitTypes:e.implicitTypes,o=0,a=r.length;o tag resolver accepts not "'+c+'" style');i=s.represent[c](t,c)}e.dump=i}return!0}return!1}function j(e,t,n,i,r,o){e.tag=null,e.dump=n,k(e,n,!1)||k(e,n,!0);var a=T.call(e.dump);i&&(i=e.flowLevel<0||e.flowLevel>t);var s,c,u="[object Object]"===a||"[object Array]"===a;if(u&&(s=e.duplicates.indexOf(n),c=s!==-1),(null!==e.tag&&"?"!==e.tag||c||2!==e.indent&&t>0)&&(r=!1),c&&e.usedDuplicates[s])e.dump="*ref_"+s;else{if(u&&c&&!e.usedDuplicates[s]&&(e.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(e.dump).length?(C(e,t,e.dump,r),c&&(e.dump="&ref_"+s+e.dump)):(w(e,t,e.dump),c&&(e.dump="&ref_"+s+" "+e.dump));else if("[object Array]"===a)i&&0!==e.dump.length?(b(e,t,e.dump,r),c&&(e.dump="&ref_"+s+e.dump)):(A(e,t,e.dump),c&&(e.dump="&ref_"+s+" "+e.dump));else{if("[object String]"!==a){if(e.skipInvalid)return!1;throw new N("unacceptable kind of an object to dump "+a)}"?"!==e.tag&&h(e,e.dump,t,o)}null!==e.tag&&"?"!==e.tag&&(e.dump="!<"+e.tag+"> "+e.dump)}return!0}function I(e,t){var n,i,r=[],o=[];for(S(e,r,o),n=0,i=o.length;n>10)+55296,(e-65536&1023)+56320)}function f(e,t){this.input=e,this.filename=t.filename||null,this.schema=t.schema||K,this.onWarning=t.onWarning||null,this.legacy=t.legacy||!1,this.json=t.json||!1,this.listener=t.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=e.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function d(e,t){return new P(t,new W(e.filename,e.input,e.position,e.line,e.position-e.lineStart))}function h(e,t){throw d(e,t)}function m(e,t){e.onWarning&&e.onWarning.call(null,d(e,t))}function g(e,t,n,i){var r,o,a,s;if(t1&&(e.result+=R.repeat("\n",t-1))}function C(e,t,n){var s,c,u,l,p,f,d,h,m,y=e.kind,x=e.result;if(m=e.input.charCodeAt(e.position),o(m)||a(m)||35===m||38===m||42===m||33===m||124===m||62===m||39===m||34===m||37===m||64===m||96===m)return!1;if((63===m||45===m)&&(c=e.input.charCodeAt(e.position+1),o(c)||n&&a(c)))return!1;for(e.kind="scalar",e.result="",u=l=e.position,p=!1;0!==m;){if(58===m){if(c=e.input.charCodeAt(e.position+1),o(c)||n&&a(c))break}else if(35===m){if(s=e.input.charCodeAt(e.position-1),o(s))break}else{if(e.position===e.lineStart&&b(e)||n&&a(m))break;if(i(m)){if(f=e.line,d=e.lineStart,h=e.lineIndent,A(e,!1,-1),e.lineIndent>=t){p=!0,m=e.input.charCodeAt(e.position);continue}e.position=l,e.line=f,e.lineStart=d,e.lineIndent=h;break}}p&&(g(e,u,l,!1),w(e,e.line-f),u=l=e.position,p=!1),r(m)||(l=e.position+1),m=e.input.charCodeAt(++e.position)}return g(e,u,l,!1),!!e.result||(e.kind=y,e.result=x,!1)}function k(e,t){var n,r,o;if(n=e.input.charCodeAt(e.position),39!==n)return!1;for(e.kind="scalar",e.result="",e.position++,r=o=e.position;0!==(n=e.input.charCodeAt(e.position));)if(39===n){if(g(e,r,e.position,!0),n=e.input.charCodeAt(++e.position),39!==n)return!0;r=e.position,e.position++,o=e.position}else i(n)?(g(e,r,o,!0),w(e,A(e,!1,t)),r=o=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a single quoted scalar"):(e.position++,o=e.position);h(e,"unexpected end of the stream within a single quoted scalar")}function j(e,t){var n,r,o,a,u,l;if(l=e.input.charCodeAt(e.position),34!==l)return!1;for(e.kind="scalar",e.result="",e.position++,n=r=e.position;0!==(l=e.input.charCodeAt(e.position));){if(34===l)return g(e,n,e.position,!0),e.position++,!0;if(92===l){if(g(e,n,e.position,!0),l=e.input.charCodeAt(++e.position),i(l))A(e,!1,t);else if(l<256&&J[l])e.result+=Q[l],e.position++;else if((u=c(l))>0){for(o=u,a=0;o>0;o--)l=e.input.charCodeAt(++e.position),(u=s(l))>=0?a=(a<<4)+u:h(e,"expected hexadecimal character");e.result+=p(a),e.position++}else h(e,"unknown escape sequence");n=r=e.position}else i(l)?(g(e,n,r,!0),w(e,A(e,!1,t)),n=r=e.position):e.position===e.lineStart&&b(e)?h(e,"unexpected end of the document within a double quoted scalar"):(e.position++,r=e.position)}h(e,"unexpected end of the stream within a double quoted scalar")}function I(e,t){var n,i,r,a,s,c,u,l,p,f,d,m=!0,g=e.tag,y=e.anchor,v={};if(d=e.input.charCodeAt(e.position),91===d)a=93,u=!1,i=[];else{if(123!==d)return!1;a=125,u=!0,i={}}for(null!==e.anchor&&(e.anchorMap[e.anchor]=i),d=e.input.charCodeAt(++e.position);0!==d;){if(A(e,!0,t),d=e.input.charCodeAt(e.position),d===a)return e.position++,e.tag=g,e.anchor=y,e.kind=u?"mapping":"sequence",e.result=i,!0;m||h(e,"missed comma between flow collection entries"),p=l=f=null,s=c=!1,63===d&&(r=e.input.charCodeAt(e.position+1),o(r)&&(s=c=!0,e.position++,A(e,!0,t))),n=e.line,_(e,t,1,!1,!0),p=e.tag,l=e.result,A(e,!0,t),d=e.input.charCodeAt(e.position),!c&&e.line!==n||58!==d||(s=!0,d=e.input.charCodeAt(++e.position),A(e,!0,t),_(e,t,1,!1,!0),f=e.result),u?x(e,i,v,p,l,f):s?i.push(x(e,null,v,p,l,f)):i.push(l),A(e,!0,t),d=e.input.charCodeAt(e.position),44===d?(m=!0,d=e.input.charCodeAt(++e.position)):m=!1}h(e,"unexpected end of the stream within a flow collection")}function S(e,t){var n,o,a,s,c=1,l=!1,p=!1,f=t,d=0,m=!1;if(s=e.input.charCodeAt(e.position),124===s)o=!1;else{if(62!==s)return!1;o=!0}for(e.kind="scalar",e.result="";0!==s;)if(s=e.input.charCodeAt(++e.position),43===s||45===s)1===c?c=43===s?3:2:h(e,"repeat of a chomping mode identifier");else{if(!((a=u(s))>=0))break;0===a?h(e,"bad explicit indentation width of a block scalar; it cannot be less than one"):p?h(e,"repeat of an indentation width identifier"):(f=t+a-1,p=!0)}if(r(s)){do s=e.input.charCodeAt(++e.position);while(r(s));if(35===s)do s=e.input.charCodeAt(++e.position);while(!i(s)&&0!==s)}for(;0!==s;){for(v(e),e.lineIndent=0,s=e.input.charCodeAt(e.position);(!p||e.lineIndentf&&(f=e.lineIndent),i(s))d++;else{if(e.lineIndentt)&&0!==r)h(e,"bad indentation of a sequence entry");else if(e.lineIndentt)&&(_(e,t,4,!0,a)&&(v?g=e.result:y=e.result),v||(x(e,f,d,m,g,y,s,c),m=g=y=null),A(e,!0,-1),u=e.input.charCodeAt(e.position)),e.lineIndent>t&&0!==u)h(e,"bad indentation of a mapping entry");else if(e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndentt?d=1:e.lineIndent===t?d=0:e.lineIndent tag; it should be "'+l.kind+'", not "'+e.kind+'"'),l.resolve(e.result)?(e.result=l.construct(e.result),null!==e.anchor&&(e.anchorMap[e.anchor]=e.result)):h(e,"cannot resolve a node with !<"+e.tag+"> explicit tag")):h(e,"unknown tag !<"+e.tag+">");return null!==e.listener&&e.listener("close",e),null!==e.tag||null!==e.anchor||g}function T(e){var t,n,a,s,c=e.position,u=!1;for(e.version=null,e.checkLineBreaks=e.legacy,e.tagMap={},e.anchorMap={};0!==(s=e.input.charCodeAt(e.position))&&(A(e,!0,-1),s=e.input.charCodeAt(e.position),!(e.lineIndent>0||37!==s));){for(u=!0,s=e.input.charCodeAt(++e.position),t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);for(n=e.input.slice(t,e.position),a=[],n.length<1&&h(e,"directive name must not be less than one character in length");0!==s;){for(;r(s);)s=e.input.charCodeAt(++e.position);if(35===s){do s=e.input.charCodeAt(++e.position);while(0!==s&&!i(s));break}if(i(s))break;for(t=e.position;0!==s&&!o(s);)s=e.input.charCodeAt(++e.position);a.push(e.input.slice(t,e.position))}0!==s&&v(e),$.call(ee,n)?ee[n](e,n,a):m(e,'unknown document directive "'+n+'"')}if(A(e,!0,-1),0===e.lineIndent&&45===e.input.charCodeAt(e.position)&&45===e.input.charCodeAt(e.position+1)&&45===e.input.charCodeAt(e.position+2)?(e.position+=3,A(e,!0,-1)):u&&h(e,"directives end mark is expected"),_(e,e.lineIndent-1,4,!1,!0),A(e,!0,-1),e.checkLineBreaks&&G.test(e.input.slice(c,e.position))&&m(e,"non-ASCII line breaks are interpreted as content"),e.documents.push(e.result),e.position===e.lineStart&&b(e))return void(46===e.input.charCodeAt(e.position)&&(e.position+=3,A(e,!0,-1)));e.position0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,this.position-i>t/2-1){n=" ... ",i+=5;break}for(o="",a=this.position;at/2-1){o=" ... ",a-=5;break}return s=this.buffer.slice(i,a),r.repeat(" ",e)+n+s+o+"\n"+r.repeat(" ",e+this.position-i+n.length)+"^"},i.prototype.toString=function(e){var t,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),e||(t=this.getSnippet(),t&&(n+=":\n"+t)),n},t.exports=i},{"./common":2}],7:[function(e,t,n){"use strict";function i(e,t,n){var r=[];return e.include.forEach(function(e){n=i(e,t,n)}),e[t].forEach(function(e){n.forEach(function(t,n){t.tag===e.tag&&t.kind===e.kind&&r.push(n)}),n.push(e)}),n.filter(function(e,t){return r.indexOf(t)===-1})}function r(){function e(e){i[e.kind][e.tag]=i.fallback[e.tag]=e}var t,n,i={scalar:{},sequence:{},mapping:{},fallback:{}};for(t=0,n=arguments.length;t64)){if(t<0)return!1;i+=6}return i%8===0}function r(e){var t,n,i=e.replace(/[\r\n=]/g,""),r=i.length,o=u,a=0,c=[];for(t=0;t>16&255),c.push(a>>8&255),c.push(255&a)),a=a<<6|o.indexOf(i.charAt(t));return n=r%4*6,0===n?(c.push(a>>16&255),c.push(a>>8&255),c.push(255&a)):18===n?(c.push(a>>10&255),c.push(a>>2&255)):12===n&&c.push(a>>4&255),s?s.from?s.from(c):new s(c):c}function o(e){var t,n,i="",r=0,o=e.length,a=u;for(t=0;t>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+e[t];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function a(e){return s&&s.isBuffer(e)}var s;try{ +s=e("buffer").Buffer}catch(e){}var c=e("../type"),u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r";t.exports=new c("tag:yaml.org,2002:binary",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../type":13}],15:[function(e,t,n){"use strict";function i(e){if(null===e)return!1;var t=e.length;return 4===t&&("true"===e||"True"===e||"TRUE"===e)||5===t&&("false"===e||"False"===e||"FALSE"===e)}function r(e){return"true"===e||"True"===e||"TRUE"===e}function o(e){return"[object Boolean]"===Object.prototype.toString.call(e)}var a=e("../type");t.exports=new a("tag:yaml.org,2002:bool",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{lowercase:function(e){return e?"true":"false"},uppercase:function(e){return e?"TRUE":"FALSE"},camelcase:function(e){return e?"True":"False"}},defaultStyle:"lowercase"})},{"../type":13}],16:[function(e,t,n){"use strict";function i(e){return null!==e&&!!u.test(e)}function r(e){var t,n,i,r;return t=e.replace(/_/g,"").toLowerCase(),n="-"===t[0]?-1:1,r=[],"+-".indexOf(t[0])>=0&&(t=t.slice(1)),".inf"===t?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===t?NaN:t.indexOf(":")>=0?(t.split(":").forEach(function(e){r.unshift(parseFloat(e,10))}),t=0,i=1,r.forEach(function(e){t+=e*i,i*=60}),n*t):n*parseFloat(t,10)}function o(e,t){var n;if(isNaN(e))switch(t){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===e)switch(t){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===e)switch(t){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(s.isNegativeZero(e))return"-0.0";return n=e.toString(10),l.test(n)?n.replace("e",".e"):n}function a(e){return"[object Number]"===Object.prototype.toString.call(e)&&(e%1!==0||s.isNegativeZero(e))}var s=e("../common"),c=e("../type"),u=new RegExp("^(?:[-+]?(?:0|[1-9][0-9_]*)(?:\\.[0-9_]*)?(?:[eE][-+]?[0-9]+)?|\\.[0-9_]+(?:[eE][-+]?[0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),l=/^[-+]?[0-9]+e/;t.exports=new c("tag:yaml.org,2002:float",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o,defaultStyle:"lowercase"})},{"../common":2,"../type":13}],17:[function(e,t,n){"use strict";function i(e){return 48<=e&&e<=57||65<=e&&e<=70||97<=e&&e<=102}function r(e){return 48<=e&&e<=55}function o(e){return 48<=e&&e<=57}function a(e){if(null===e)return!1;var t,n=e.length,a=0,s=!1;if(!n)return!1;if(t=e[a],"-"!==t&&"+"!==t||(t=e[++a]),"0"===t){if(a+1===n)return!0;if(t=e[++a],"b"===t){for(a++;a3)return!1;if("/"!==t[t.length-i.length-1])return!1}return!0}function r(e){var t=e,n=/\/([gim]*)$/.exec(e),i="";return"/"===t[0]&&(n&&(i=n[1]),t=t.slice(1,t.length-i.length-1)),new RegExp(t,i)}function o(e){var t="/"+e.source+"/";return e.global&&(t+="g"),e.multiline&&(t+="m"),e.ignoreCase&&(t+="i"),t}function a(e){return"[object RegExp]"===Object.prototype.toString.call(e)}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],20:[function(e,t,n){"use strict";function i(){return!0}function r(){}function o(){return""}function a(e){return void 0===e}var s=e("../../type");t.exports=new s("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:i,construct:r,predicate:a,represent:o})},{"../../type":13}],21:[function(e,t,n){"use strict";var i=e("../type");t.exports=new i("tag:yaml.org,2002:map",{kind:"mapping",construct:function(e){return null!==e?e:{}}})},{"../type":13}],22:[function(e,t,n){"use strict";function i(e){return"<<"===e||null===e}var r=e("../type");t.exports=new r("tag:yaml.org,2002:merge",{kind:"scalar",resolve:i})},{"../type":13}],23:[function(e,t,n){"use strict";function i(e){if(null===e)return!0;var t=e.length;return 1===t&&"~"===e||4===t&&("null"===e||"Null"===e||"NULL"===e)}function r(){return null}function o(e){return null===e}var a=e("../type");t.exports=new a("tag:yaml.org,2002:null",{kind:"scalar",resolve:i,construct:r,predicate:o,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"})},{"../type":13}],24:[function(e,t,n){"use strict";function i(e){if(null===e)return!0;var t,n,i,r,o,c=[],u=e;for(t=0,n=u.length;t=3.5.1 <4.0.0", - "_id": "js-yaml@3.7.0", + "_id": "js-yaml@3.8.2", "_inCache": true, "_location": "/js-yaml", - "_nodeVersion": "6.8.1", + "_nodeVersion": "6.9.4", "_npmOperationalInternal": { - "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/js-yaml-3.7.0.tgz_1478914323559_0.38230896391905844" + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/js-yaml-3.8.2.tgz_1488473380123_0.05922025511972606" }, "_npmUser": { "name": "vitaly", "email": "vitaly@rcdesign.ru" }, - "_npmVersion": "3.10.8", + "_npmVersion": "3.10.10", "_phantomChildren": {}, "_requested": { "raw": "js-yaml@^3.5.1", @@ -40,8 +40,8 @@ "_requiredBy": [ "/eslint" ], - "_resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", - "_shasum": "5c967ddd837a9bfdca5f2de84253abe8a1c03b80", + "_resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz", + "_shasum": "02d3e2c0f6beab20248d412c352203827d786721", "_shrinkwrap": null, "_spec": "js-yaml@^3.5.1", "_where": "/Users/trott/io.js/tools/node_modules/eslint", @@ -74,7 +74,7 @@ ], "dependencies": { "argparse": "^1.0.7", - "esprima": "^2.6.0" + "esprima": "^3.1.1" }, "description": "YAML 1.2 parser and serializer", "devDependencies": { @@ -82,15 +82,15 @@ "benchmark": "*", "browserify": "^13.0.0", "codemirror": "^5.13.4", - "eslint": "^2.8.0", + "eslint": "^3.10.0", "istanbul": "*", "mocha": "*", "uglify-js": "^2.6.1" }, "directories": {}, "dist": { - "shasum": "5c967ddd837a9bfdca5f2de84253abe8a1c03b80", - "tarball": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz" + "shasum": "02d3e2c0f6beab20248d412c352203827d786721", + "tarball": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.8.2.tgz" }, "files": [ "index.js", @@ -98,7 +98,7 @@ "bin/", "dist/" ], - "gitHead": "279655fa5ad46d17117f60680fa3b46a0b5391c5", + "gitHead": "7dd7254139804a0cd15683fd9e61ad949bd5ce14", "homepage": "https://github.com/nodeca/js-yaml", "keywords": [ "yaml", @@ -123,5 +123,5 @@ "scripts": { "test": "make test" }, - "version": "3.7.0" + "version": "3.8.2" } diff --git a/tools/eslint/node_modules/object-assign/index.js b/tools/eslint/node_modules/object-assign/index.js index 508504840dc61d..0930cf8890b9af 100644 --- a/tools/eslint/node_modules/object-assign/index.js +++ b/tools/eslint/node_modules/object-assign/index.js @@ -1,5 +1,12 @@ +/* +object-assign +(c) Sindre Sorhus +@license MIT +*/ + 'use strict'; /* eslint-disable no-unused-vars */ +var getOwnPropertySymbols = Object.getOwnPropertySymbols; var hasOwnProperty = Object.prototype.hasOwnProperty; var propIsEnumerable = Object.prototype.propertyIsEnumerable; @@ -20,7 +27,7 @@ function shouldUseNative() { // Detect buggy property enumeration order in older V8 versions. // https://bugs.chromium.org/p/v8/issues/detail?id=4118 - var test1 = new String('abc'); // eslint-disable-line + var test1 = new String('abc'); // eslint-disable-line no-new-wrappers test1[5] = 'de'; if (Object.getOwnPropertyNames(test1)[0] === '5') { return false; @@ -49,7 +56,7 @@ function shouldUseNative() { } return true; - } catch (e) { + } catch (err) { // We don't expect any of the above to throw, but better to be safe. return false; } @@ -69,8 +76,8 @@ module.exports = shouldUseNative() ? Object.assign : function (target, source) { } } - if (Object.getOwnPropertySymbols) { - symbols = Object.getOwnPropertySymbols(from); + if (getOwnPropertySymbols) { + symbols = getOwnPropertySymbols(from); for (var i = 0; i < symbols.length; i++) { if (propIsEnumerable.call(from, symbols[i])) { to[symbols[i]] = from[symbols[i]]; diff --git a/tools/eslint/node_modules/object-assign/package.json b/tools/eslint/node_modules/object-assign/package.json index cabd7ea464753a..e0a17fe74d31b4 100644 --- a/tools/eslint/node_modules/object-assign/package.json +++ b/tools/eslint/node_modules/object-assign/package.json @@ -14,19 +14,19 @@ ] ], "_from": "object-assign@>=4.0.1 <5.0.0", - "_id": "object-assign@4.1.0", + "_id": "object-assign@4.1.1", "_inCache": true, "_location": "/object-assign", - "_nodeVersion": "4.1.0", + "_nodeVersion": "4.6.2", "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/object-assign-4.1.0.tgz_1462212593641_0.3332549517508596" + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/object-assign-4.1.1.tgz_1484580915042_0.07107710791751742" }, "_npmUser": { - "name": "spicyj", - "email": "ben@benalpert.com" + "name": "sindresorhus", + "email": "sindresorhus@gmail.com" }, - "_npmVersion": "2.14.19", + "_npmVersion": "2.15.11", "_phantomChildren": {}, "_requested": { "raw": "object-assign@^4.0.1", @@ -44,8 +44,8 @@ "/file-entry-cache", "/globby" ], - "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz", - "_shasum": "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0", + "_resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "_shasum": "2109adc7965887cfc05cbbd442cac8bfbb360863", "_shrinkwrap": null, "_spec": "object-assign@^4.0.1", "_where": "/Users/trott/io.js/tools/node_modules/esrecurse", @@ -58,17 +58,17 @@ "url": "https://github.com/sindresorhus/object-assign/issues" }, "dependencies": {}, - "description": "ES2015 Object.assign() ponyfill", + "description": "ES2015 `Object.assign()` ponyfill", "devDependencies": { - "lodash": "^4.8.2", + "ava": "^0.16.0", + "lodash": "^4.16.4", "matcha": "^0.7.0", - "mocha": "*", - "xo": "*" + "xo": "^0.16.0" }, "directories": {}, "dist": { - "shasum": "7a3b3d0e98063d43f4c03f2e8ae6cd51a86883a0", - "tarball": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.0.tgz" + "shasum": "2109adc7965887cfc05cbbd442cac8bfbb360863", + "tarball": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" }, "engines": { "node": ">=0.10.0" @@ -76,7 +76,7 @@ "files": [ "index.js" ], - "gitHead": "72fe21c86911758f3342fdf41c2a57860d5829bc", + "gitHead": "a89774b252c91612203876984bbd6addbe3b5a0e", "homepage": "https://github.com/sindresorhus/object-assign#readme", "keywords": [ "object", @@ -94,6 +94,10 @@ ], "license": "MIT", "maintainers": [ + { + "name": "gaearon", + "email": "dan.abramov@gmail.com" + }, { "name": "sindresorhus", "email": "sindresorhus@gmail.com" @@ -112,7 +116,7 @@ }, "scripts": { "bench": "matcha bench.js", - "test": "xo && mocha" + "test": "xo && ava" }, - "version": "4.1.0" + "version": "4.1.1" } diff --git a/tools/eslint/node_modules/object-assign/readme.md b/tools/eslint/node_modules/object-assign/readme.md index 13c097734cfd18..1be09d35c776cc 100644 --- a/tools/eslint/node_modules/object-assign/readme.md +++ b/tools/eslint/node_modules/object-assign/readme.md @@ -1,8 +1,13 @@ # object-assign [![Build Status](https://travis-ci.org/sindresorhus/object-assign.svg?branch=master)](https://travis-ci.org/sindresorhus/object-assign) -> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) ponyfill +> ES2015 [`Object.assign()`](http://www.2ality.com/2014/01/object-assign.html) [ponyfill](https://ponyfill.com) -> Ponyfill: A polyfill that doesn't overwrite the native method + +## Use the built-in + +Node.js 4 and up, as well as every evergreen browser (Chrome, Edge, Firefox, Opera, Safari), +support `Object.assign()` :tada:. If you target only those environments, then by all +means, use `Object.assign()` instead of this package. ## Install @@ -36,7 +41,7 @@ objectAssign({foo: 0}, null, {bar: 1}, undefined); ## API -### objectAssign(target, source, [source, ...]) +### objectAssign(target, [source, ...]) Assigns enumerable own properties of `source` objects to the `target` object and returns the `target` object. Additional `source` objects will overwrite previous ones. diff --git a/tools/eslint/node_modules/path-parse/README.md b/tools/eslint/node_modules/path-parse/README.md new file mode 100644 index 00000000000000..c6af02c6c31610 --- /dev/null +++ b/tools/eslint/node_modules/path-parse/README.md @@ -0,0 +1,44 @@ +# path-parse [![Build Status](https://travis-ci.org/jbgutierrez/path-parse.svg?branch=master)](https://travis-ci.org/jbgutierrez/path-parse) + +> Node.js [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) ponyfill. + +> Ponyfill: A polyfill that doesn't overwrite the native method + +## Install + +``` +$ npm install --save path-parse +``` + +## Usage + +```js +var pathParse = require('path-parse'); + +pathParse('/home/user/dir/file.txt'); +//=> { +// root : "/", +// dir : "/home/user/dir", +// base : "file.txt", +// ext : ".txt", +// name : "file" +// } +``` + +## API + +See [`path.parse(pathString)`](https://nodejs.org/api/path.html#path_path_parse_pathstring) docs. + +### pathParse(path) + +### pathParse.posix(path) + +The Posix specific version. + +### pathParse.win32(path) + +The Windows specific version. + +## License + +MIT © [Javier Blanco](http://jbgutierrez.info) diff --git a/tools/eslint/node_modules/path-parse/index.js b/tools/eslint/node_modules/path-parse/index.js new file mode 100644 index 00000000000000..3b7601fe494eed --- /dev/null +++ b/tools/eslint/node_modules/path-parse/index.js @@ -0,0 +1,93 @@ +'use strict'; + +var isWindows = process.platform === 'win32'; + +// Regex to split a windows path into three parts: [*, device, slash, +// tail] windows-only +var splitDeviceRe = + /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/; + +// Regex to split the tail part of the above into [*, dir, basename, ext] +var splitTailRe = + /^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/; + +var win32 = {}; + +// Function to split a filename into [root, dir, basename, ext] +function win32SplitPath(filename) { + // Separate device+slash from tail + var result = splitDeviceRe.exec(filename), + device = (result[1] || '') + (result[2] || ''), + tail = result[3] || ''; + // Split the tail into dir, basename and extension + var result2 = splitTailRe.exec(tail), + dir = result2[1], + basename = result2[2], + ext = result2[3]; + return [device, dir, basename, ext]; +} + +win32.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = win32SplitPath(pathString); + if (!allParts || allParts.length !== 4) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + return { + root: allParts[0], + dir: allParts[0] + allParts[1].slice(0, -1), + base: allParts[2], + ext: allParts[3], + name: allParts[2].slice(0, allParts[2].length - allParts[3].length) + }; +}; + + + +// Split a filename into [root, dir, basename, ext], unix version +// 'root' is just a slash, or nothing. +var splitPathRe = + /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/; +var posix = {}; + + +function posixSplitPath(filename) { + return splitPathRe.exec(filename).slice(1); +} + + +posix.parse = function(pathString) { + if (typeof pathString !== 'string') { + throw new TypeError( + "Parameter 'pathString' must be a string, not " + typeof pathString + ); + } + var allParts = posixSplitPath(pathString); + if (!allParts || allParts.length !== 4) { + throw new TypeError("Invalid path '" + pathString + "'"); + } + allParts[1] = allParts[1] || ''; + allParts[2] = allParts[2] || ''; + allParts[3] = allParts[3] || ''; + + return { + root: allParts[0], + dir: allParts[0] + allParts[1].slice(0, -1), + base: allParts[2], + ext: allParts[3], + name: allParts[2].slice(0, allParts[2].length - allParts[3].length) + }; +}; + + +if (isWindows) + module.exports = win32.parse; +else /* posix */ + module.exports = posix.parse; + +module.exports.posix = posix.parse; +module.exports.win32 = win32.parse; diff --git a/tools/eslint/node_modules/path-parse/index.min.js b/tools/eslint/node_modules/path-parse/index.min.js new file mode 100644 index 00000000000000..027da511df33cf --- /dev/null +++ b/tools/eslint/node_modules/path-parse/index.min.js @@ -0,0 +1 @@ +"use strict";var isWindows=process.platform==="win32";var splitDeviceRe=/^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;var splitTailRe=/^([\s\S]*?)((?:\.{1,2}|[^\\\/]+?|)(\.[^.\/\\]*|))(?:[\\\/]*)$/;var win32={};function win32SplitPath(b){var a=splitDeviceRe.exec(b),g=(a[1]||"")+(a[2]||""),e=a[3]||"";var d=splitTailRe.exec(e),c=d[1],h=d[2],f=d[3];return[g,c,h,f]}win32.parse=function(b){if(typeof b!=="string"){throw new TypeError("Parameter 'pathString' must be a string, not "+typeof b)}var a=win32SplitPath(b);if(!a||a.length!==4){throw new TypeError("Invalid path '"+b+"'")}return{root:a[0],dir:a[0]+a[1].slice(0,-1),base:a[2],ext:a[3],name:a[2].slice(0,a[2].length-a[3].length)}};var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;var posix={};function posixSplitPath(a){return splitPathRe.exec(a).slice(1)}posix.parse=function(b){if(typeof b!=="string"){throw new TypeError("Parameter 'pathString' must be a string, not "+typeof b)}var a=posixSplitPath(b);if(!a||a.length!==4){throw new TypeError("Invalid path '"+b+"'")}a[1]=a[1]||"";a[2]=a[2]||"";a[3]=a[3]||"";return{root:a[0],dir:a[0]+a[1].slice(0,-1),base:a[2],ext:a[3],name:a[2].slice(0,a[2].length-a[3].length)}};if(isWindows){module.exports=win32.parse}else{module.exports=posix.parse}module.exports.posix=posix.parse;module.exports.win32=win32.parse; \ No newline at end of file diff --git a/tools/eslint/node_modules/path-parse/package.json b/tools/eslint/node_modules/path-parse/package.json new file mode 100644 index 00000000000000..2ba7ae0f07e996 --- /dev/null +++ b/tools/eslint/node_modules/path-parse/package.json @@ -0,0 +1,92 @@ +{ + "_args": [ + [ + { + "raw": "path-parse@^1.0.5", + "scope": null, + "escapedName": "path-parse", + "name": "path-parse", + "rawSpec": "^1.0.5", + "spec": ">=1.0.5 <2.0.0", + "type": "range" + }, + "/Users/trott/io.js/tools/node_modules/resolve" + ] + ], + "_from": "path-parse@>=1.0.5 <2.0.0", + "_id": "path-parse@1.0.5", + "_inCache": true, + "_location": "/path-parse", + "_npmUser": { + "name": "jbgutierrez", + "email": "jbgutierrez@gmail.com" + }, + "_npmVersion": "1.4.9", + "_phantomChildren": {}, + "_requested": { + "raw": "path-parse@^1.0.5", + "scope": null, + "escapedName": "path-parse", + "name": "path-parse", + "rawSpec": "^1.0.5", + "spec": ">=1.0.5 <2.0.0", + "type": "range" + }, + "_requiredBy": [ + "/resolve" + ], + "_resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz", + "_shasum": "3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1", + "_shrinkwrap": null, + "_spec": "path-parse@^1.0.5", + "_where": "/Users/trott/io.js/tools/node_modules/resolve", + "author": { + "name": "Javier Blanco", + "email": "http://jbgutierrez.info" + }, + "bugs": { + "url": "https://github.com/jbgutierrez/path-parse/issues" + }, + "dependencies": {}, + "description": "Node.js path.parse() ponyfill", + "devDependencies": {}, + "directories": {}, + "dist": { + "shasum": "3c1adf871ea9cd6c9431b6ea2bd74a0ff055c4c1", + "tarball": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.5.tgz" + }, + "homepage": "https://github.com/jbgutierrez/path-parse#readme", + "keywords": [ + "path", + "paths", + "file", + "dir", + "parse", + "built-in", + "util", + "utils", + "core", + "ponyfill", + "polyfill", + "shim" + ], + "license": "MIT", + "main": "index.js", + "maintainers": [ + { + "name": "jbgutierrez", + "email": "jbgutierrez@gmail.com" + } + ], + "name": "path-parse", + "optionalDependencies": {}, + "readme": "ERROR: No README data found!", + "repository": { + "type": "git", + "url": "git+https://github.com/jbgutierrez/path-parse.git" + }, + "scripts": { + "test": "node test.js" + }, + "version": "1.0.5" +} diff --git a/tools/eslint/node_modules/path-parse/test.min.js b/tools/eslint/node_modules/path-parse/test.min.js new file mode 100644 index 00000000000000..90cc2b85a48876 --- /dev/null +++ b/tools/eslint/node_modules/path-parse/test.min.js @@ -0,0 +1 @@ +var assert=require("assert");var pathParse=require("./index");var winParseTests=[[{root:"C:\\",dir:"C:\\path\\dir",base:"index.html",ext:".html",name:"index"},"C:\\path\\dir\\index.html"],[{root:"C:\\",dir:"C:\\another_path\\DIR\\1\\2\\33",base:"index",ext:"",name:"index"},"C:\\another_path\\DIR\\1\\2\\33\\index"],[{root:"",dir:"another_path\\DIR with spaces\\1\\2\\33",base:"index",ext:"",name:"index"},"another_path\\DIR with spaces\\1\\2\\33\\index"],[{root:"\\",dir:"\\foo",base:"C:",ext:"",name:"C:"},"\\foo\\C:"],[{root:"",dir:"",base:"file",ext:"",name:"file"},"file"],[{root:"",dir:".",base:"file",ext:"",name:"file"},".\\file"],[{root:"\\\\server\\share\\",dir:"\\\\server\\share\\",base:"file_path",ext:"",name:"file_path"},"\\\\server\\share\\file_path"],[{root:"\\\\server two\\shared folder\\",dir:"\\\\server two\\shared folder\\",base:"file path.zip",ext:".zip",name:"file path"},"\\\\server two\\shared folder\\file path.zip"],[{root:"\\\\teela\\admin$\\",dir:"\\\\teela\\admin$\\",base:"system32",ext:"",name:"system32"},"\\\\teela\\admin$\\system32"],[{root:"\\\\?\\UNC\\",dir:"\\\\?\\UNC\\server",base:"share",ext:"",name:"share"},"\\\\?\\UNC\\server\\share"]];var winSpecialCaseFormatTests=[[{dir:"some\\dir"},"some\\dir\\"],[{base:"index.html"},"index.html"],[{},""]];var unixParseTests=[[{root:"/",dir:"/home/user/dir",base:"file.txt",ext:".txt",name:"file"},"/home/user/dir/file.txt"],[{root:"/",dir:"/home/user/a dir",base:"another File.zip",ext:".zip",name:"another File"},"/home/user/a dir/another File.zip"],[{root:"/",dir:"/home/user/a dir/",base:"another&File.",ext:".",name:"another&File"},"/home/user/a dir//another&File."],[{root:"/",dir:"/home/user/a$$$dir/",base:"another File.zip",ext:".zip",name:"another File"},"/home/user/a$$$dir//another File.zip"],[{root:"",dir:"user/dir",base:"another File.zip",ext:".zip",name:"another File"},"user/dir/another File.zip"],[{root:"",dir:"",base:"file",ext:"",name:"file"},"file"],[{root:"",dir:"",base:".\\file",ext:"",name:".\\file"},".\\file"],[{root:"",dir:".",base:"file",ext:"",name:"file"},"./file"],[{root:"",dir:"",base:"C:\\foo",ext:"",name:"C:\\foo"},"C:\\foo"]];var unixSpecialCaseFormatTests=[[{dir:"some/dir"},"some/dir/"],[{base:"index.html"},"index.html"],[{},""]];var errors=[{input:null,message:/Parameter 'pathString' must be a string, not/},{input:{},message:/Parameter 'pathString' must be a string, not object/},{input:true,message:/Parameter 'pathString' must be a string, not boolean/},{input:1,message:/Parameter 'pathString' must be a string, not number/},{input:undefined,message:/Parameter 'pathString' must be a string, not undefined/},];checkParseFormat(pathParse.win32,winParseTests);checkParseFormat(pathParse.posix,unixParseTests);checkErrors(pathParse.win32);checkErrors(pathParse.posix);function checkErrors(a){errors.forEach(function(c){try{a(c.input)}catch(b){assert.ok(b instanceof TypeError);assert.ok(c.message.test(b.message),"expected "+c.message+" to match "+b.message);return}assert.fail("should have thrown")})}function checkParseFormat(b,a){a.forEach(function(c){assert.deepEqual(b(c[1]),c[0])})}; \ No newline at end of file diff --git a/tools/eslint/node_modules/readable-stream/GOVERNANCE.md b/tools/eslint/node_modules/readable-stream/GOVERNANCE.md new file mode 100644 index 00000000000000..16ffb93f24bece --- /dev/null +++ b/tools/eslint/node_modules/readable-stream/GOVERNANCE.md @@ -0,0 +1,136 @@ +### Streams Working Group + +The Node.js Streams is jointly governed by a Working Group +(WG) +that is responsible for high-level guidance of the project. + +The WG has final authority over this project including: + +* Technical direction +* Project governance and process (including this policy) +* Contribution policy +* GitHub repository hosting +* Conduct guidelines +* Maintaining the list of additional Collaborators + +For the current list of WG members, see the project +[README.md](./README.md#current-project-team-members). + +### Collaborators + +The readable-stream GitHub repository is +maintained by the WG and additional Collaborators who are added by the +WG on an ongoing basis. + +Individuals making significant and valuable contributions are made +Collaborators and given commit-access to the project. These +individuals are identified by the WG and their addition as +Collaborators is discussed during the WG meeting. + +_Note:_ If you make a significant contribution and are not considered +for commit-access log an issue or contact a WG member directly and it +will be brought up in the next WG meeting. + +Modifications of the contents of the readable-stream repository are +made on +a collaborative basis. Anybody with a GitHub account may propose a +modification via pull request and it will be considered by the project +Collaborators. All pull requests must be reviewed and accepted by a +Collaborator with sufficient expertise who is able to take full +responsibility for the change. In the case of pull requests proposed +by an existing Collaborator, an additional Collaborator is required +for sign-off. Consensus should be sought if additional Collaborators +participate and there is disagreement around a particular +modification. See _Consensus Seeking Process_ below for further detail +on the consensus model used for governance. + +Collaborators may opt to elevate significant or controversial +modifications, or modifications that have not found consensus to the +WG for discussion by assigning the ***WG-agenda*** tag to a pull +request or issue. The WG should serve as the final arbiter where +required. + +For the current list of Collaborators, see the project +[README.md](./README.md#members). + +### WG Membership + +WG seats are not time-limited. There is no fixed size of the WG. +However, the expected target is between 6 and 12, to ensure adequate +coverage of important areas of expertise, balanced with the ability to +make decisions efficiently. + +There is no specific set of requirements or qualifications for WG +membership beyond these rules. + +The WG may add additional members to the WG by unanimous consensus. + +A WG member may be removed from the WG by voluntary resignation, or by +unanimous consensus of all other WG members. + +Changes to WG membership should be posted in the agenda, and may be +suggested as any other agenda item (see "WG Meetings" below). + +If an addition or removal is proposed during a meeting, and the full +WG is not in attendance to participate, then the addition or removal +is added to the agenda for the subsequent meeting. This is to ensure +that all members are given the opportunity to participate in all +membership decisions. If a WG member is unable to attend a meeting +where a planned membership decision is being made, then their consent +is assumed. + +No more than 1/3 of the WG members may be affiliated with the same +employer. If removal or resignation of a WG member, or a change of +employment by a WG member, creates a situation where more than 1/3 of +the WG membership shares an employer, then the situation must be +immediately remedied by the resignation or removal of one or more WG +members affiliated with the over-represented employer(s). + +### WG Meetings + +The WG meets occasionally on a Google Hangout On Air. A designated moderator +approved by the WG runs the meeting. Each meeting should be +published to YouTube. + +Items are added to the WG agenda that are considered contentious or +are modifications of governance, contribution policy, WG membership, +or release process. + +The intention of the agenda is not to approve or review all patches; +that should happen continuously on GitHub and be handled by the larger +group of Collaborators. + +Any community member or contributor can ask that something be added to +the next meeting's agenda by logging a GitHub Issue. Any Collaborator, +WG member or the moderator can add the item to the agenda by adding +the ***WG-agenda*** tag to the issue. + +Prior to each WG meeting the moderator will share the Agenda with +members of the WG. WG members can add any items they like to the +agenda at the beginning of each meeting. The moderator and the WG +cannot veto or remove items. + +The WG may invite persons or representatives from certain projects to +participate in a non-voting capacity. + +The moderator is responsible for summarizing the discussion of each +agenda item and sends it as a pull request after the meeting. + +### Consensus Seeking Process + +The WG follows a +[Consensus +Seeking](http://en.wikipedia.org/wiki/Consensus-seeking_decision-making) +decision-making model. + +When an agenda item has appeared to reach a consensus the moderator +will ask "Does anyone object?" as a final call for dissent from the +consensus. + +If an agenda item cannot reach a consensus a WG member can call for +either a closing vote or a vote to table the issue to the next +meeting. The call for a vote must be seconded by a majority of the WG +or else the discussion will continue. Simple majority wins. + +Note that changes to WG membership require a majority consensus. See +"WG Membership" above. diff --git a/tools/eslint/node_modules/readable-stream/LICENSE b/tools/eslint/node_modules/readable-stream/LICENSE index e3d4e695a4cff2..2873b3b2e59507 100644 --- a/tools/eslint/node_modules/readable-stream/LICENSE +++ b/tools/eslint/node_modules/readable-stream/LICENSE @@ -1,3 +1,31 @@ +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. 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. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" Copyright Joyent, Inc. and other Node contributors. 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 @@ -16,3 +44,4 @@ 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. +""" diff --git a/tools/eslint/node_modules/readable-stream/README.md b/tools/eslint/node_modules/readable-stream/README.md index 9be2adb1582512..ff75b0d792cdb4 100644 --- a/tools/eslint/node_modules/readable-stream/README.md +++ b/tools/eslint/node_modules/readable-stream/README.md @@ -18,14 +18,31 @@ npm install --save readable-stream This package is a mirror of the Streams2 and Streams3 implementations in Node-core. -Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v7.1.0/docs/api/). +Full documentation may be found on the [Node.js website](https://nodejs.org/dist/v7.7.3/docs/api/). If you want to guarantee a stable streams base, regardless of what version of Node you, or the users of your libraries are using, use **readable-stream** *only* and avoid the *"stream"* module in Node-core, for background see [this blogpost](http://r.va.gg/2014/06/why-i-dont-use-nodes-core-stream-module.html). -As of version 2.0.0 **readable-stream** uses semantic versioning. +As of version 2.0.0 **readable-stream** uses semantic versioning. -# Streams WG Team Members +# Streams Working Group + +`readable-stream` is maintained by the Streams Working Group, which +oversees the development and maintenance of the Streams API within +Node.js. The responsibilities of the Streams Working Group include: + +* Addressing stream issues on the Node.js issue tracker. +* Authoring and editing stream documentation within the Node.js project. +* Reviewing changes to stream subclasses within the Node.js project. +* Redirecting changes to streams from the Node.js project to this + project. +* Assisting in the implementation of stream providers within Node.js. +* Recommending versions of `readable-stream` to be included in Node.js. +* Messaging about the future of streams to give the community advance + notice of changes. + + +## Team Members * **Chris Dickinson** ([@chrisdickinson](https://github.com/chrisdickinson)) <christopher.s.dickinson@gmail.com> - Release GPG key: 9554F04D7259F04124DE6B476D5A82AC7E37093B diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_readable.js b/tools/eslint/node_modules/readable-stream/lib/_stream_readable.js index 3a7d42d62b86a3..13b5a7474da6b4 100644 --- a/tools/eslint/node_modules/readable-stream/lib/_stream_readable.js +++ b/tools/eslint/node_modules/readable-stream/lib/_stream_readable.js @@ -92,7 +92,7 @@ function ReadableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // A linked list is used to store data chunks instead of an array because the // linked list can remove elements from the beginning faster than diff --git a/tools/eslint/node_modules/readable-stream/lib/_stream_writable.js b/tools/eslint/node_modules/readable-stream/lib/_stream_writable.js index 4d9c62ba62ff2b..575beb3c467676 100644 --- a/tools/eslint/node_modules/readable-stream/lib/_stream_writable.js +++ b/tools/eslint/node_modules/readable-stream/lib/_stream_writable.js @@ -77,7 +77,7 @@ function WritableState(options, stream) { this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm; // cast to ints. - this.highWaterMark = ~ ~this.highWaterMark; + this.highWaterMark = ~~this.highWaterMark; // drain event flag. this.needDrain = false; @@ -232,20 +232,16 @@ function writeAfterEnd(stream, cb) { processNextTick(cb, er); } -// If we get something that is not a buffer, string, null, or undefined, -// and we're not in objectMode, then that's an error. -// Otherwise stream chunks are all considered to be of length=1, and the -// watermarks determine how many objects to keep in the buffer, rather than -// how many bytes or characters. +// Checks that a user-supplied chunk is valid, especially for the particular +// mode the stream is in. Currently this means that `null` is never accepted +// and undefined/non-string values are only allowed in object mode. function validChunk(stream, state, chunk, cb) { var valid = true; var er = false; - // Always throw error if a null is written - // if we are not in object mode then throw - // if it is not a buffer, string, or undefined. + if (chunk === null) { er = new TypeError('May not write null values to stream'); - } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { + } else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) { er = new TypeError('Invalid non-string/buffer chunk'); } if (er) { @@ -259,19 +255,20 @@ function validChunk(stream, state, chunk, cb) { Writable.prototype.write = function (chunk, encoding, cb) { var state = this._writableState; var ret = false; + var isBuf = Buffer.isBuffer(chunk); if (typeof encoding === 'function') { cb = encoding; encoding = null; } - if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; + if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding; if (typeof cb !== 'function') cb = nop; - if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) { + if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) { state.pendingcb++; - ret = writeOrBuffer(this, state, chunk, encoding, cb); + ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb); } return ret; @@ -311,10 +308,11 @@ function decodeChunk(state, chunk, encoding) { // if we're already writing something, then just put this // in the queue, and wait our turn. Otherwise, call _write // If we return false, then we need a drain event, so set that flag. -function writeOrBuffer(stream, state, chunk, encoding, cb) { - chunk = decodeChunk(state, chunk, encoding); - - if (Buffer.isBuffer(chunk)) encoding = 'buffer'; +function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) { + if (!isBuf) { + chunk = decodeChunk(state, chunk, encoding); + if (Buffer.isBuffer(chunk)) encoding = 'buffer'; + } var len = state.objectMode ? 1 : chunk.length; state.length += len; @@ -383,8 +381,8 @@ function onwrite(stream, er) { asyncWrite(afterWrite, stream, state, finished, cb); /**/ } else { - afterWrite(stream, state, finished, cb); - } + afterWrite(stream, state, finished, cb); + } } } @@ -535,7 +533,6 @@ function CorkedRequest(state) { this.next = null; this.entry = null; - this.finish = function (err) { var entry = _this.entry; _this.entry = null; diff --git a/tools/eslint/node_modules/readable-stream/package.json b/tools/eslint/node_modules/readable-stream/package.json index 66e162ee34272e..59bf5956ee8ab5 100644 --- a/tools/eslint/node_modules/readable-stream/package.json +++ b/tools/eslint/node_modules/readable-stream/package.json @@ -14,19 +14,19 @@ ] ], "_from": "readable-stream@>=2.2.2 <3.0.0", - "_id": "readable-stream@2.2.2", + "_id": "readable-stream@2.2.6", "_inCache": true, "_location": "/readable-stream", - "_nodeVersion": "7.1.0", + "_nodeVersion": "6.9.4", "_npmOperationalInternal": { - "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/readable-stream-2.2.2.tgz_1479128709230_0.5291099038440734" + "host": "packages-12-west.internal.npmjs.com", + "tmp": "tmp/readable-stream-2.2.6.tgz_1489651345676_0.6984770004637539" }, "_npmUser": { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" + "name": "matteo.collina", + "email": "hello@matteocollina.com" }, - "_npmVersion": "3.10.7", + "_npmVersion": "3.10.10", "_phantomChildren": {}, "_requested": { "raw": "readable-stream@^2.2.2", @@ -40,8 +40,8 @@ "_requiredBy": [ "/concat-stream" ], - "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz", - "_shasum": "a9e6fec3c7dda85f8bb1b3ba7028604556fc825e", + "_resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz", + "_shasum": "8b43aed76e71483938d12a8d46c6cf1a00b1f816", "_shrinkwrap": null, "_spec": "readable-stream@^2.2.2", "_where": "/Users/trott/io.js/tools/node_modules/concat-stream", @@ -72,10 +72,10 @@ }, "directories": {}, "dist": { - "shasum": "a9e6fec3c7dda85f8bb1b3ba7028604556fc825e", - "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.2.tgz" + "shasum": "8b43aed76e71483938d12a8d46c6cf1a00b1f816", + "tarball": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.2.6.tgz" }, - "gitHead": "f239454e183d2032c0eb7d79a1c08f674fdd8db4", + "gitHead": "f94eebc1c5b637e6575735e6923ec79ee3139284", "homepage": "https://github.com/nodejs/readable-stream#readme", "keywords": [ "readable", @@ -85,21 +85,25 @@ "license": "MIT", "main": "readable.js", "maintainers": [ + { + "name": "cwmma", + "email": "calvin.metcalf@gmail.com" + }, { "name": "isaacs", - "email": "isaacs@npmjs.com" + "email": "i@izs.me" }, { - "name": "tootallnate", - "email": "nathan@tootallnate.net" + "name": "matteo.collina", + "email": "hello@matteocollina.com" }, { "name": "rvagg", "email": "rod@vagg.org" }, { - "name": "cwmma", - "email": "calvin.metcalf@gmail.com" + "name": "tootallnate", + "email": "nathan@tootallnate.net" } ], "name": "readable-stream", @@ -109,6 +113,9 @@ ] }, "optionalDependencies": {}, + "react-native": { + "stream": false + }, "readme": "ERROR: No README data found!", "repository": { "type": "git", @@ -122,5 +129,5 @@ "test": "tap test/parallel/*.js test/ours/*.js", "write-zuul": "printf \"ui: tape\nbrowsers:\n - name: $BROWSER_NAME\n version: $BROWSER_VERSION\n\">.zuul.yml" }, - "version": "2.2.2" + "version": "2.2.6" } diff --git a/tools/eslint/node_modules/resolve/.eslintignore b/tools/eslint/node_modules/resolve/.eslintignore new file mode 100644 index 00000000000000..3c3629e647f5dd --- /dev/null +++ b/tools/eslint/node_modules/resolve/.eslintignore @@ -0,0 +1 @@ +node_modules diff --git a/tools/eslint/node_modules/resolve/appveyor.yml b/tools/eslint/node_modules/resolve/appveyor.yml new file mode 100644 index 00000000000000..f54a1b6092f104 --- /dev/null +++ b/tools/eslint/node_modules/resolve/appveyor.yml @@ -0,0 +1,44 @@ +version: 1.0.{build} +skip_branch_with_pr: true +build: off + +environment: + matrix: + - nodejs_version: "7" + - nodejs_version: "6" + - nodejs_version: "5" + - nodejs_version: "4" + - nodejs_version: "3" + - nodejs_version: "2" + - nodejs_version: "1" + - nodejs_version: "0.12" + - nodejs_version: "0.10" + - nodejs_version: "0.8" + - nodejs_version: "0.6" +matrix: + # fast_finish: true + allow_failures: + - nodejs_version: "0.6" + +platform: + - x86 + - x64 + +# Install scripts. (runs after repo cloning) +install: + # Get the latest stable version of Node.js or io.js + - ps: Install-Product node $env:nodejs_version $env:platform + - IF %nodejs_version% EQU 0.6 npm -g install npm@1.3 + - IF %nodejs_version% EQU 0.8 npm -g install npm@2 + - set PATH=%APPDATA%\npm;%PATH% + #- IF %nodejs_version% NEQ 0.6 AND %nodejs_version% NEQ 0.8 npm -g install npm + # install modules + - npm install + +# Post-install test scripts. +test_script: + # Output useful info for debugging. + - node --version + - npm --version + # run tests + - npm run tests-only diff --git a/tools/eslint/node_modules/resolve/index.js b/tools/eslint/node_modules/resolve/index.js index 51f194b4ca7adb..bfbd7cd83d831e 100644 --- a/tools/eslint/node_modules/resolve/index.js +++ b/tools/eslint/node_modules/resolve/index.js @@ -1,5 +1,5 @@ var core = require('./lib/core'); exports = module.exports = require('./lib/async'); exports.core = core; -exports.isCore = function (x) { return core[x] }; +exports.isCore = function isCore(x) { return core[x]; }; exports.sync = require('./lib/sync'); diff --git a/tools/eslint/node_modules/resolve/lib/async.js b/tools/eslint/node_modules/resolve/lib/async.js index ef99946f000f52..dcf867d23c4ff2 100644 --- a/tools/eslint/node_modules/resolve/lib/async.js +++ b/tools/eslint/node_modules/resolve/lib/async.js @@ -3,79 +3,86 @@ var fs = require('fs'); var path = require('path'); var caller = require('./caller.js'); var nodeModulesPaths = require('./node-modules-paths.js'); -var splitRe = process.platform === 'win32' ? /[\/\\]/ : /\//; -module.exports = function resolve (x, opts, cb) { +module.exports = function resolve(x, options, callback) { + var cb = callback; + var opts = options || {}; if (typeof opts === 'function') { cb = opts; opts = {}; } - if (!opts) opts = {}; if (typeof x !== 'string') { var err = new TypeError('path must be a string'); return process.nextTick(function () { cb(err); }); } - + var isFile = opts.isFile || function (file, cb) { fs.stat(file, function (err, stat) { - if (err && err.code === 'ENOENT') cb(null, false) - else if (err) cb(err) - else cb(null, stat.isFile() || stat.isFIFO()) + if (err && err.code === 'ENOENT') cb(null, false); + else if (err) cb(err); + else cb(null, stat.isFile() || stat.isFIFO()); }); }; var readFile = opts.readFile || fs.readFile; - - var extensions = opts.extensions || [ '.js' ]; + + var extensions = opts.extensions || ['.js']; var y = opts.basedir || path.dirname(caller()); - + opts.paths = opts.paths || []; - + if (/^(?:\.\.?(?:\/|$)|\/|([A-Za-z]:)?[\\\/])/.test(x)) { var res = path.resolve(y, x); if (x === '..') res += '/'; if (/\/$/.test(x) && res === y) { loadAsDirectory(res, opts.package, onfile); - } - else loadAsFile(res, opts.package, onfile); - } - else loadNodeModules(x, y, function (err, n, pkg) { - if (err) cb(err) - else if (n) cb(null, n, pkg) + } else loadAsFile(res, opts.package, onfile); + } else loadNodeModules(x, y, function (err, n, pkg) { + if (err) cb(err); + else if (n) cb(null, n, pkg); else if (core[x]) return cb(null, x); - else cb(new Error("Cannot find module '" + x + "' from '" + y + "'")) + else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + y + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } }); - - function onfile (err, m, pkg) { - if (err) cb(err) - else if (m) cb(null, m, pkg) + + function onfile(err, m, pkg) { + if (err) cb(err); + else if (m) cb(null, m, pkg); else loadAsDirectory(res, function (err, d, pkg) { - if (err) cb(err) - else if (d) cb(null, d, pkg) - else cb(new Error("Cannot find module '" + x + "' from '" + y + "'")) - }) + if (err) cb(err); + else if (d) cb(null, d, pkg); + else { + var moduleError = new Error("Cannot find module '" + x + "' from '" + y + "'"); + moduleError.code = 'MODULE_NOT_FOUND'; + cb(moduleError); + } + }); } - - function loadAsFile (x, pkg, cb) { + + function loadAsFile(x, pkg, callback) { + var cb = callback; if (typeof pkg === 'function') { cb = pkg; pkg = undefined; } - + var exts = [''].concat(extensions); - load(exts, x, pkg) + load(exts, x, pkg); - function load (exts, x, pkg) { + function load(exts, x, pkg) { if (exts.length === 0) return cb(null, undefined, pkg); var file = x + exts[0]; - - if (pkg) onpkg(null, pkg) + + if (pkg) onpkg(null, pkg); else loadpkg(path.dirname(file), onpkg); - - function onpkg (err, pkg_, dir) { + + function onpkg(err, pkg_, dir) { pkg = pkg_; - if (err) return cb(err) + if (err) return cb(err); if (dir && pkg && opts.pathFilter) { var rfile = path.relative(dir, file); var rel = rfile.slice(0, rfile.length - exts[0].length); @@ -88,33 +95,30 @@ module.exports = function resolve (x, opts, cb) { } isFile(file, onex); } - function onex (err, ex) { - if (err) cb(err) - else if (!ex) load(exts.slice(1), x, pkg) - else cb(null, file, pkg) + function onex(err, ex) { + if (err) cb(err); + else if (!ex) load(exts.slice(1), x, pkg); + else cb(null, file, pkg); } } } - - function loadpkg (dir, cb) { + + function loadpkg(dir, cb) { if (dir === '' || dir === '/') return cb(null); - if (process.platform === 'win32' && /^\w:[\\\/]*$/.test(dir)) { + if (process.platform === 'win32' && (/^\w:[\\\/]*$/).test(dir)) { return cb(null); } if (/[\\\/]node_modules[\\\/]*$/.test(dir)) return cb(null); - + var pkgfile = path.join(dir, 'package.json'); isFile(pkgfile, function (err, ex) { // on err, ex is false - if (!ex) return loadpkg( - path.dirname(dir), cb - ); - + if (!ex) return loadpkg(path.dirname(dir), cb); + readFile(pkgfile, function (err, body) { if (err) cb(err); - try { var pkg = JSON.parse(body) } - catch (err) {} - + try { var pkg = JSON.parse(body); } catch (jsonErr) {} + if (pkg && opts.packageFilter) { pkg = opts.packageFilter(pkg, pkgfile); } @@ -122,72 +126,73 @@ module.exports = function resolve (x, opts, cb) { }); }); } - - function loadAsDirectory (x, fpkg, cb) { + + function loadAsDirectory(x, fpkg, callback) { + var cb = callback; if (typeof fpkg === 'function') { cb = fpkg; fpkg = opts.package; } - - var pkgfile = path.join(x, '/package.json'); + + var pkgfile = path.join(x, 'package.json'); isFile(pkgfile, function (err, ex) { if (err) return cb(err); - if (!ex) return loadAsFile(path.join(x, '/index'), fpkg, cb); - + if (!ex) return loadAsFile(path.join(x, 'index'), fpkg, cb); + readFile(pkgfile, function (err, body) { if (err) return cb(err); try { var pkg = JSON.parse(body); - } - catch (err) {} - + } catch (jsonErr) {} + if (opts.packageFilter) { pkg = opts.packageFilter(pkg, pkgfile); } - + if (pkg.main) { - if (pkg.main === '.' || pkg.main === './'){ - pkg.main = 'index' + if (pkg.main === '.' || pkg.main === './') { + pkg.main = 'index'; } loadAsFile(path.resolve(x, pkg.main), pkg, function (err, m, pkg) { if (err) return cb(err); if (m) return cb(null, m, pkg); - if (!pkg) return loadAsFile(path.join(x, '/index'), pkg, cb); + if (!pkg) return loadAsFile(path.join(x, 'index'), pkg, cb); var dir = path.resolve(x, pkg.main); loadAsDirectory(dir, pkg, function (err, n, pkg) { if (err) return cb(err); if (n) return cb(null, n, pkg); - loadAsFile(path.join(x, '/index'), pkg, cb); + loadAsFile(path.join(x, 'index'), pkg, cb); }); }); return; } - + loadAsFile(path.join(x, '/index'), pkg, cb); }); }); } - - function loadNodeModules (x, start, cb) { - (function process (dirs) { - if (dirs.length === 0) return cb(null, undefined); - var dir = dirs[0]; - - var file = path.join(dir, '/', x); - loadAsFile(file, undefined, onfile); - - function onfile (err, m, pkg) { - if (err) return cb(err); - if (m) return cb(null, m, pkg); - loadAsDirectory(path.join(dir, '/', x), undefined, ondir); - } - - function ondir (err, n, pkg) { - if (err) return cb(err); - if (n) return cb(null, n, pkg); - process(dirs.slice(1)); - } - })(nodeModulesPaths(start, opts)); + + function processDirs(cb, dirs) { + if (dirs.length === 0) return cb(null, undefined); + var dir = dirs[0]; + + var file = path.join(dir, x); + loadAsFile(file, undefined, onfile); + + function onfile(err, m, pkg) { + if (err) return cb(err); + if (m) return cb(null, m, pkg); + loadAsDirectory(path.join(dir, x), undefined, ondir); + } + + function ondir(err, n, pkg) { + if (err) return cb(err); + if (n) return cb(null, n, pkg); + processDirs(cb, dirs.slice(1)); + } + } + function loadNodeModules(x, start, cb) { + processDirs(cb, nodeModulesPaths(start, opts)); } }; diff --git a/tools/eslint/node_modules/resolve/lib/caller.js b/tools/eslint/node_modules/resolve/lib/caller.js index 5536549b046d3c..b14a2804ae828a 100644 --- a/tools/eslint/node_modules/resolve/lib/caller.js +++ b/tools/eslint/node_modules/resolve/lib/caller.js @@ -1,7 +1,7 @@ module.exports = function () { // see https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi var origPrepareStackTrace = Error.prepareStackTrace; - Error.prepareStackTrace = function (_, stack) { return stack }; + Error.prepareStackTrace = function (_, stack) { return stack; }; var stack = (new Error()).stack; Error.prepareStackTrace = origPrepareStackTrace; return stack[2].getFileName(); diff --git a/tools/eslint/node_modules/resolve/lib/core.js b/tools/eslint/node_modules/resolve/lib/core.js index 6adbbce9ea4333..b963d265ba9690 100644 --- a/tools/eslint/node_modules/resolve/lib/core.js +++ b/tools/eslint/node_modules/resolve/lib/core.js @@ -1,10 +1,10 @@ -var current = process.versions.node.split('.'); +var current = process.versions && process.versions.node && process.versions.node.split('.') || []; function versionIncluded(version) { if (version === '*') return true; var versionParts = version.split('.'); for (var i = 0; i < 3; ++i) { - if ((current[i] || 0) >= (versionParts[i] || 0)) return true; + if ((current[i] || 0) >= (versionParts[i] || 0)) return true; } return false; } diff --git a/tools/eslint/node_modules/resolve/lib/node-modules-paths.js b/tools/eslint/node_modules/resolve/lib/node-modules-paths.js index ce0a0d9f2fb104..1d172494871474 100644 --- a/tools/eslint/node_modules/resolve/lib/node-modules-paths.js +++ b/tools/eslint/node_modules/resolve/lib/node-modules-paths.js @@ -1,7 +1,8 @@ var path = require('path'); +var parse = path.parse || require('path-parse'); -module.exports = function (start, opts) { - var modules = opts.moduleDirectory +module.exports = function nodeModulesPaths(start, opts) { + var modules = opts && opts.moduleDirectory ? [].concat(opts.moduleDirectory) : ['node_modules'] ; @@ -17,22 +18,18 @@ module.exports = function (start, opts) { prefix = '\\\\'; } - var splitRe = process.platform === 'win32' ? /[\/\\]/ : /\/+/; - - var parts = start.split(splitRe); + var paths = [start]; + var parsed = parse(start); + while (parsed.dir !== paths[paths.length - 1]) { + paths.push(parsed.dir); + parsed = parse(parsed.dir); + } - var dirs = []; - for (var i = parts.length - 1; i >= 0; i--) { - if (modules.indexOf(parts[i]) !== -1) continue; - dirs = dirs.concat(modules.map(function(module_dir) { - return prefix + path.join( - path.join.apply(path, parts.slice(0, i + 1)), - module_dir - ); + var dirs = paths.reduce(function (dirs, aPath) { + return dirs.concat(modules.map(function (moduleDir) { + return path.join(prefix, aPath, moduleDir); })); - } - if (process.platform === 'win32'){ - dirs[dirs.length-1] = dirs[dirs.length-1].replace(":", ":\\"); - } - return dirs.concat(opts.paths); -} + }, []); + + return opts && opts.paths ? dirs.concat(opts.paths) : dirs; +}; diff --git a/tools/eslint/node_modules/resolve/lib/sync.js b/tools/eslint/node_modules/resolve/lib/sync.js index 71ae939ccfc644..37066ed5b4d9a6 100644 --- a/tools/eslint/node_modules/resolve/lib/sync.js +++ b/tools/eslint/node_modules/resolve/lib/sync.js @@ -4,19 +4,20 @@ var path = require('path'); var caller = require('./caller.js'); var nodeModulesPaths = require('./node-modules-paths.js'); -module.exports = function (x, opts) { - if (!opts) opts = {}; +module.exports = function (x, options) { + var opts = options || {}; var isFile = opts.isFile || function (file) { - try { var stat = fs.statSync(file) } - catch (err) { - if (err && err.code === 'ENOENT') return false; - throw err; + try { + var stat = fs.statSync(file); + } catch (e) { + if (e && e.code === 'ENOENT') return false; + throw e; } return stat.isFile() || stat.isFIFO(); }; var readFileSync = opts.readFileSync || fs.readFileSync; - - var extensions = opts.extensions || [ '.js' ]; + + var extensions = opts.extensions || ['.js']; var y = opts.basedir || path.dirname(caller()); opts.paths = opts.paths || []; @@ -30,16 +31,18 @@ module.exports = function (x, opts) { var n = loadNodeModulesSync(x, y); if (n) return n; } - + if (core[x]) return x; - - throw new Error("Cannot find module '" + x + "' from '" + y + "'"); - - function loadAsFileSync (x) { + + var err = new Error("Cannot find module '" + x + "' from '" + y + "'"); + err.code = 'MODULE_NOT_FOUND'; + throw err; + + function loadAsFileSync(x) { if (isFile(x)) { return x; } - + for (var i = 0; i < extensions.length; i++) { var file = x + extensions[i]; if (isFile(file)) { @@ -47,8 +50,8 @@ module.exports = function (x, opts) { } } } - - function loadAsDirectorySync (x) { + + function loadAsDirectorySync(x) { var pkgfile = path.join(x, '/package.json'); if (isFile(pkgfile)) { var body = readFileSync(pkgfile, 'utf8'); @@ -57,27 +60,26 @@ module.exports = function (x, opts) { if (opts.packageFilter) { pkg = opts.packageFilter(pkg, x); } - + if (pkg.main) { var m = loadAsFileSync(path.resolve(x, pkg.main)); if (m) return m; var n = loadAsDirectorySync(path.resolve(x, pkg.main)); if (n) return n; } - } - catch (err) {} + } catch (e) {} } - - return loadAsFileSync(path.join( x, '/index')); + + return loadAsFileSync(path.join(x, '/index')); } - - function loadNodeModulesSync (x, start) { + + function loadNodeModulesSync(x, start) { var dirs = nodeModulesPaths(start, opts); for (var i = 0; i < dirs.length; i++) { var dir = dirs[i]; - var m = loadAsFileSync(path.join( dir, '/', x)); + var m = loadAsFileSync(path.join(dir, '/', x)); if (m) return m; - var n = loadAsDirectorySync(path.join( dir, '/', x )); + var n = loadAsDirectorySync(path.join(dir, '/', x)); if (n) return n; } } diff --git a/tools/eslint/node_modules/resolve/package.json b/tools/eslint/node_modules/resolve/package.json index 1497e7a15e3004..86fcdc346446f7 100644 --- a/tools/eslint/node_modules/resolve/package.json +++ b/tools/eslint/node_modules/resolve/package.json @@ -14,19 +14,19 @@ ] ], "_from": "resolve@>=1.1.6 <2.0.0", - "_id": "resolve@1.2.0", + "_id": "resolve@1.3.2", "_inCache": true, "_location": "/resolve", - "_nodeVersion": "7.2.0", + "_nodeVersion": "7.6.0", "_npmOperationalInternal": { "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/resolve-1.2.0.tgz_1481676943045_0.8319015400484204" + "tmp": "tmp/resolve-1.3.2.tgz_1488150101096_0.05632958956994116" }, "_npmUser": { "name": "ljharb", "email": "ljharb@gmail.com" }, - "_npmVersion": "3.10.9", + "_npmVersion": "4.1.2", "_phantomChildren": {}, "_requested": { "raw": "resolve@^1.1.6", @@ -40,8 +40,8 @@ "_requiredBy": [ "/rechoir" ], - "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz", - "_shasum": "9589c3f2f6149d1417a40becc1663db6ec6bc26c", + "_resolved": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz", + "_shasum": "1f0442c9e0cbb8136e87b9305f932f46c7f28235", "_shrinkwrap": null, "_spec": "resolve@^1.1.6", "_where": "/Users/trott/io.js/tools/node_modules/rechoir", @@ -53,19 +53,22 @@ "bugs": { "url": "https://github.com/substack/node-resolve/issues" }, - "dependencies": {}, + "dependencies": { + "path-parse": "^1.0.5" + }, "description": "resolve like require.resolve() on behalf of files asynchronously and synchronously", "devDependencies": { + "object-keys": "^1.0.11", "safe-publish-latest": "^1.1.1", "tap": "0.4.13", "tape": "^4.6.3" }, "directories": {}, "dist": { - "shasum": "9589c3f2f6149d1417a40becc1663db6ec6bc26c", - "tarball": "https://registry.npmjs.org/resolve/-/resolve-1.2.0.tgz" + "shasum": "1f0442c9e0cbb8136e87b9305f932f46c7f28235", + "tarball": "https://registry.npmjs.org/resolve/-/resolve-1.3.2.tgz" }, - "gitHead": "8e4a4659f4120c145e2f12bb01cf4ddad61730b3", + "gitHead": "781da847169b8ba43f65ed3d9dbc1283d5bde74c", "homepage": "https://github.com/substack/node-resolve#readme", "keywords": [ "resolve", @@ -93,9 +96,9 @@ "url": "git://github.com/substack/node-resolve.git" }, "scripts": { - "prepublish": "! type safe-publish-latest >/dev/null 2>&1 || safe-publish-latest", + "prepublish": "safe-publish-latest", "test": "npm run --silent tests-only", "tests-only": "tape test/*.js" }, - "version": "1.2.0" + "version": "1.3.2" } diff --git a/tools/eslint/node_modules/rimraf/bin.js b/tools/eslint/node_modules/rimraf/bin.js index 1bd5a0d16ac2bb..0d1e17be701ec3 100755 --- a/tools/eslint/node_modules/rimraf/bin.js +++ b/tools/eslint/node_modules/rimraf/bin.js @@ -4,16 +4,21 @@ var rimraf = require('./') var help = false var dashdash = false +var noglob = false var args = process.argv.slice(2).filter(function(arg) { if (dashdash) return !!arg else if (arg === '--') dashdash = true + else if (arg === '--no-glob' || arg === '-G') + noglob = true + else if (arg === '--glob' || arg === '-g') + noglob = false else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/)) help = true else return !!arg -}); +}) if (help || args.length === 0) { // If they didn't ask for help, then this is not a "success" @@ -24,7 +29,9 @@ if (help || args.length === 0) { log('') log('Options:') log('') - log(' -h, --help Display this usage info') + log(' -h, --help Display this usage info') + log(' -G, --no-glob Do not expand glob patterns in arguments') + log(' -g, --glob Expand glob patterns in arguments (default)') process.exit(help ? 0 : 1) } else go(0) @@ -32,7 +39,10 @@ if (help || args.length === 0) { function go (n) { if (n >= args.length) return - rimraf(args[n], function (er) { + var options = {} + if (noglob) + options = { glob: false } + rimraf(args[n], options, function (er) { if (er) throw er go(n+1) diff --git a/tools/eslint/node_modules/rimraf/package.json b/tools/eslint/node_modules/rimraf/package.json index 1d7b1ee29af6da..4fccfeed97f95a 100644 --- a/tools/eslint/node_modules/rimraf/package.json +++ b/tools/eslint/node_modules/rimraf/package.json @@ -14,19 +14,19 @@ ] ], "_from": "rimraf@>=2.2.8 <3.0.0", - "_id": "rimraf@2.5.4", + "_id": "rimraf@2.6.1", "_inCache": true, "_location": "/rimraf", - "_nodeVersion": "4.4.4", + "_nodeVersion": "8.0.0-pre", "_npmOperationalInternal": { - "host": "packages-16-east.internal.npmjs.com", - "tmp": "tmp/rimraf-2.5.4.tgz_1469206941888_0.8645927573088557" + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/rimraf-2.6.1.tgz_1487908074285_0.8205490333493799" }, "_npmUser": { "name": "isaacs", "email": "i@izs.me" }, - "_npmVersion": "3.10.6", + "_npmVersion": "4.3.0", "_phantomChildren": {}, "_requested": { "raw": "rimraf@^2.2.8", @@ -40,8 +40,8 @@ "_requiredBy": [ "/del" ], - "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", - "_shasum": "96800093cbf1a0c86bd95b4625467535c29dfa04", + "_resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz", + "_shasum": "c2338ec643df7a1b7fe5c54fa86f57428a55f33d", "_shrinkwrap": null, "_spec": "rimraf@^2.2.8", "_where": "/Users/trott/io.js/tools/node_modules/del", @@ -62,12 +62,12 @@ "description": "A deep deletion module for node (like `rm -rf`)", "devDependencies": { "mkdirp": "^0.5.1", - "tap": "^6.1.1" + "tap": "^10.1.2" }, "directories": {}, "dist": { - "shasum": "96800093cbf1a0c86bd95b4625467535c29dfa04", - "tarball": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz" + "shasum": "c2338ec643df7a1b7fe5c54fa86f57428a55f33d", + "tarball": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.1.tgz" }, "files": [ "LICENSE", @@ -75,7 +75,7 @@ "bin.js", "rimraf.js" ], - "gitHead": "2af08bbbd0a03549b278414309dc5d8097699443", + "gitHead": "d84fe2cc6646d30a401baadcee22ae105a2d4909", "homepage": "https://github.com/isaacs/rimraf#readme", "license": "ISC", "main": "rimraf.js", @@ -95,5 +95,5 @@ "scripts": { "test": "tap test/*.js" }, - "version": "2.5.4" + "version": "2.6.1" } diff --git a/tools/eslint/node_modules/rimraf/rimraf.js b/tools/eslint/node_modules/rimraf/rimraf.js index 5d9a5768a454dd..c26331265ab304 100644 --- a/tools/eslint/node_modules/rimraf/rimraf.js +++ b/tools/eslint/node_modules/rimraf/rimraf.js @@ -85,7 +85,7 @@ function rimraf (p, options, cb) { results.forEach(function (p) { rimraf_(p, options, function CB (er) { if (er) { - if (isWindows && (er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && + if ((er.code === "EBUSY" || er.code === "ENOTEMPTY" || er.code === "EPERM") && busyTries < options.maxBusyTries) { busyTries ++ var time = busyTries * 100 @@ -310,6 +310,7 @@ function rimrafSync (p, options) { return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) if (er.code !== "EISDIR") throw er + rmdirSync(p, options, er) } } @@ -339,5 +340,24 @@ function rmkidsSync (p, options) { options.readdirSync(p).forEach(function (f) { rimrafSync(path.join(p, f), options) }) - options.rmdirSync(p, options) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + var retries = isWindows ? 100 : 1 + var i = 0 + do { + var threw = true + try { + var ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) + continue + } + } while (true) } diff --git a/tools/eslint/node_modules/shelljs/.eslintrc.json b/tools/eslint/node_modules/shelljs/.eslintrc.json deleted file mode 100644 index 4f98ed05f6db2d..00000000000000 --- a/tools/eslint/node_modules/shelljs/.eslintrc.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "env": { - "node": true - }, - "extends": "airbnb-base/legacy", - "rules": { - "comma-dangle": 0, - "global-require": 0, - "vars-on-top": 0, - "spaced-comment": [2, "always", { "markers": ["@", "@include"], "exceptions": ["@"] }], - "no-param-reassign": 0, - "no-console": 0, - "curly": [2, "multi-line"], - "func-names": 0, - "quote-props": 0, - "no-underscore-dangle": 0, - "max-len": 0, - "no-use-before-define": 0, - "no-empty": 0, - "no-else-return": 0, - "no-throw-literal": 0, - "newline-per-chained-call": 0, - "consistent-return": 0, - "no-mixed-operators": 0, - "no-prototype-builtins": 0, - "new-cap": [2, { - "capIsNewExceptions": [ - "ShellString" - ]} - ] - } -} diff --git a/tools/eslint/node_modules/shelljs/MAINTAINERS b/tools/eslint/node_modules/shelljs/MAINTAINERS deleted file mode 100644 index 3f94761505a94b..00000000000000 --- a/tools/eslint/node_modules/shelljs/MAINTAINERS +++ /dev/null @@ -1,3 +0,0 @@ -Ari Porad (@ariporad) -Nate Fischer (@nfischer) -Artur Adib (@arturadib) diff --git a/tools/eslint/node_modules/shelljs/README.md b/tools/eslint/node_modules/shelljs/README.md index f18c41c2341a70..91f110ff4ce7c6 100644 --- a/tools/eslint/node_modules/shelljs/README.md +++ b/tools/eslint/node_modules/shelljs/README.md @@ -3,31 +3,33 @@ [![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square)](https://gitter.im/shelljs/shelljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Travis](https://img.shields.io/travis/shelljs/shelljs/master.svg?style=flat-square&label=unix)](https://travis-ci.org/shelljs/shelljs) [![AppVeyor](https://img.shields.io/appveyor/ci/shelljs/shelljs/master.svg?style=flat-square&label=windows)](https://ci.appveyor.com/project/shelljs/shelljs/branch/master) +[![Codecov](https://img.shields.io/codecov/c/github/shelljs/shelljs/master.svg?style=flat-square&label=coverage)](https://codecov.io/gh/shelljs/shelljs) [![npm version](https://img.shields.io/npm/v/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs) [![npm downloads](https://img.shields.io/npm/dm/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs) -ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the -Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping -its familiar and powerful commands. You can also install it globally so you can run it from outside -Node projects - say goodbye to those gnarly Bash scripts! +ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell +commands on top of the Node.js API. You can use it to eliminate your shell +script's dependency on Unix while still keeping its familiar and powerful +commands. You can also install it globally so you can run it from outside Node +projects - say goodbye to those gnarly Bash scripts! -ShellJS supports node `v0.11`, `v0.12`, `v4`, `v5`, `v6`, and all releases of iojs. +ShellJS is proudly tested on every node release since `v0.11`! -The project is [unit-tested](http://travis-ci.org/shelljs/shelljs) and battled-tested in projects like: +The project is [unit-tested](http://travis-ci.org/shelljs/shelljs) and battle-tested in projects like: + [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader + [Firebug](http://getfirebug.com/) - Firefox's infamous debugger -+ [JSHint](http://jshint.com) - Most popular JavaScript linter ++ [JSHint](http://jshint.com) & [ESLint](http://eslint.org/) - popular JavaScript linters + [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers + [Yeoman](http://yeoman.io/) - Web application stack and development tool + [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation + And [many more](https://npmjs.org/browse/depended/shelljs). -If you have feedback, suggestions, or need help, feel free to post in our [issue tracker](https://github.com/shelljs/shelljs/issues). +If you have feedback, suggestions, or need help, feel free to post in our [issue +tracker](https://github.com/shelljs/shelljs/issues). -Think ShellJS is cool? Check out some related projects (like -[cash](https://github.com/dthree/cash)--a javascript-based POSIX shell) -in our [Wiki page](https://github.com/shelljs/shelljs/wiki)! +Think ShellJS is cool? Check out some related projects in our [Wiki +page](https://github.com/shelljs/shelljs/wiki)! Upgrading from an older version? Check out our [breaking changes](https://github.com/shelljs/shelljs/wiki/Breaking-Changes) page to see @@ -63,79 +65,43 @@ Via npm: $ npm install [-g] shelljs ``` -If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to -run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder: - -```bash -$ shjs my_script -``` - ## Examples -### JavaScript - ```javascript -require('shelljs/global'); +var shell = require('shelljs'); -if (!which('git')) { - echo('Sorry, this script requires git'); - exit(1); +if (!shell.which('git')) { + shell.echo('Sorry, this script requires git'); + shell.exit(1); } // Copy files to release dir -rm('-rf', 'out/Release'); -cp('-R', 'stuff/', 'out/Release'); +shell.rm('-rf', 'out/Release'); +shell.cp('-R', 'stuff/', 'out/Release'); // Replace macros in each .js file -cd('lib'); -ls('*.js').forEach(function(file) { - sed('-i', 'BUILD_VERSION', 'v0.1.2', file); - sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file); - sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); +shell.cd('lib'); +shell.ls('*.js').forEach(function (file) { + shell.sed('-i', 'BUILD_VERSION', 'v0.1.2', file); + shell.sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file); + shell.sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, shell.cat('macro.js'), file); }); -cd('..'); +shell.cd('..'); // Run external tool synchronously -if (exec('git commit -am "Auto-commit"').code !== 0) { - echo('Error: Git commit failed'); - exit(1); +if (shell.exec('git commit -am "Auto-commit"').code !== 0) { + shell.echo('Error: Git commit failed'); + shell.exit(1); } ``` -### CoffeeScript - -CoffeeScript is also supported automatically: - -```coffeescript -require 'shelljs/global' - -if not which 'git' - echo 'Sorry, this script requires git' - exit 1 - -# Copy files to release dir -rm '-rf', 'out/Release' -cp '-R', 'stuff/', 'out/Release' - -# Replace macros in each .js file -cd 'lib' -for file in ls '*.js' - sed '-i', 'BUILD_VERSION', 'v0.1.2', file - sed '-i', /^.*REMOVE_THIS_LINE.*$/, '', file - sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file -cd '..' - -# Run external tool synchronously -if (exec 'git commit -am "Auto-commit"').code != 0 - echo 'Error: Git commit failed' - exit 1 -``` - ## Global vs. Local -The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`. +We no longer recommend using a global-import for ShellJS (i.e. +`require('shelljs/global')`). While still supported for convenience, this +pollutes the global namespace, and should therefore only be used with caution. -Example: +Instead, we recommend a local import (standard for npm packages): ```javascript var shell = require('shelljs'); @@ -156,53 +122,53 @@ For less-commonly used commands and features, please check out our [wiki page](https://github.com/shelljs/shelljs/wiki). -### cd([dir]) -Changes to directory `dir` for the duration of the script. Changes to home -directory if no argument is supplied. +### cat(file [, file ...]) +### cat(file_array) +Examples: -### pwd() -Returns the current directory. +```javascript +var str = cat('file*.txt'); +var str = cat('file1', 'file2'); +var str = cat(['file1', 'file2']); // same as above +``` +Returns a string containing the given file, or a concatenated string +containing the files if more than one file is given (a new line character is +introduced between each file). -### ls([options,] [path, ...]) -### ls([options,] path_array) -Available options: -+ `-R`: recursive -+ `-A`: all files (include files beginning with `.`, except for `.` and `..`) -+ `-d`: list directories themselves, not their contents -+ `-l`: list objects representing each file, each with fields containing `ls - -l` output fields. See - [fs.Stats](https://nodejs.org/api/fs.html#fs_class_fs_stats) - for more info +### cd([dir]) +Changes to directory `dir` for the duration of the script. Changes to home +directory if no argument is supplied. -Examples: -```javascript -ls('projs/*.js'); -ls('-R', '/users/me', '/tmp'); -ls('-R', ['/users/me', '/tmp']); // same as above -ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...} -``` +### chmod([options,] octal_mode || octal_string, file) +### chmod([options,] symbolic_mode, file) -Returns array of files in the given path, or in current directory if no path provided. +Available options: ++ `-v`: output a diagnostic for every file processed ++ `-c`: like verbose but report only when a change is made ++ `-R`: change files and directories recursively -### find(path [, path ...]) -### find(path_array) Examples: ```javascript -find('src', 'lib'); -find(['src', 'lib']); // same as above -find('.').filter(function(file) { return file.match(/\.js$/); }); +chmod(755, '/Users/brandon'); +chmod('755', '/Users/brandon'); // same as above +chmod('u+x', '/Users/brandon'); +chmod('-R', 'a-w', '/Users/brandon'); ``` -Returns array of all files (however deep) in the given paths. +Alters the permissions of a file or directory by either specifying the +absolute permissions in octal form or expressing the changes in symbols. +This command tries to mimic the POSIX behavior as much as possible. +Notable exceptions: -The main difference from `ls('-R', path)` is that the resulting file names -include the base directories, e.g. `lib/resources/file1` instead of just `file1`. ++ In symbolic modes, 'a-r' and '-r' are identical. No consideration is + given to the umask. ++ There is no "quiet" option since default behavior is to run silent. ### cp([options,] source [, source ...], dest) @@ -228,403 +194,406 @@ cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above Copies files. -### rm([options,] file [, file ...]) -### rm([options,] file_array) +### pushd([options,] [dir | '-N' | '+N']) + Available options: -+ `-f`: force -+ `-r, -R`: recursive ++ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. + +Arguments: + ++ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. ++ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. ++ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. Examples: ```javascript -rm('-rf', '/tmp/*'); -rm('some_file.txt', 'another_file.txt'); -rm(['some_file.txt', 'another_file.txt']); // same as above +// process.cwd() === '/usr' +pushd('/etc'); // Returns /etc /usr +pushd('+1'); // Returns /usr /etc ``` -Removes files. +Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. +### popd([options,] ['-N' | '+N']) -### mv([options ,] source [, source ...], dest') -### mv([options ,] source_array, dest') Available options: -+ `-f`: force (default behavior) -+ `-n`: no-clobber ++ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. + +Arguments: + ++ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. ++ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. Examples: ```javascript -mv('-n', 'file', 'dir/'); -mv('file1', 'file2', 'dir/'); -mv(['file1', 'file2'], 'dir/'); // same as above +echo(process.cwd()); // '/usr' +pushd('/etc'); // '/etc /usr' +echo(process.cwd()); // '/etc' +popd(); // '/usr' +echo(process.cwd()); // '/usr' ``` -Moves files. +When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. +### dirs([options | '+N' | '-N']) -### mkdir([options,] dir [, dir ...]) -### mkdir([options,] dir_array) Available options: -+ `-p`: full path (will create intermediate dirs if necessary) ++ `-c`: Clears the directory stack by deleting all of the elements. -Examples: +Arguments: -```javascript -mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); -mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above -``` ++ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. ++ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. -Creates directories. +Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. +See also: pushd, popd -### test(expression) -Available expression primaries: -+ `'-b', 'path'`: true if path is a block device -+ `'-c', 'path'`: true if path is a character device -+ `'-d', 'path'`: true if path is a directory -+ `'-e', 'path'`: true if path exists -+ `'-f', 'path'`: true if path is a regular file -+ `'-L', 'path'`: true if path is a symbolic link -+ `'-p', 'path'`: true if path is a pipe (FIFO) -+ `'-S', 'path'`: true if path is a socket +### echo([options,] string [, string ...]) +Available options: + ++ `-e`: interpret backslash escapes (default) Examples: ```javascript -if (test('-d', path)) { /* do something with dir */ }; -if (!test('-f', path)) continue; // skip if it's a regular file +echo('hello world'); +var str = echo('hello world'); ``` -Evaluates expression using the available primaries and returns corresponding value. +Prints string to stdout, and returns string with additional utility methods +like `.to()`. -### cat(file [, file ...]) -### cat(file_array) +### exec(command [, options] [, callback]) +Available options (all `false` by default): + ++ `async`: Asynchronous execution. If a callback is provided, it will be set to + `true`, regardless of the passed value. ++ `silent`: Do not echo program output to console. ++ and any option available to Node.js's + [child_process.exec()](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) Examples: ```javascript -var str = cat('file*.txt'); -var str = cat('file1', 'file2'); -var str = cat(['file1', 'file2']); // same as above +var version = exec('node --version', {silent:true}).stdout; + +var child = exec('some_long_running_process', {async:true}); +child.stdout.on('data', function(data) { + /* ... do something with data ... */ +}); + +exec('some_long_running_process', function(code, stdout, stderr) { + console.log('Exit code:', code); + console.log('Program output:', stdout); + console.log('Program stderr:', stderr); +}); ``` -Returns a string containing the given file, or a concatenated string -containing the files if more than one file is given (a new line character is -introduced between each file). +Executes the given `command` _synchronously_, unless otherwise specified. When in synchronous +mode, this returns a ShellString (compatible with ShellJS v0.6.x, which returns an object +of the form `{ code:..., stdout:... , stderr:... }`). Otherwise, this returns the child process +object, and the `callback` gets the arguments `(code, stdout, stderr)`. +Not seeing the behavior you want? `exec()` runs everything through `sh` +by default (or `cmd.exe` on Windows), which differs from `bash`. If you +need bash-specific behavior, try out the `{shell: 'path/to/bash'}` option. -### head([{'-n': \},] file [, file ...]) -### head([{'-n': \},] file_array) -Available options: +**Note:** For long-lived processes, it's best to run `exec()` asynchronously as +the current synchronous implementation uses a lot of CPU. This should be getting +fixed soon. -+ `-n `: Show the first `` lines of the files +### find(path [, path ...]) +### find(path_array) Examples: ```javascript -var str = head({'-n': 1}, 'file*.txt'); -var str = head('file1', 'file2'); -var str = head(['file1', 'file2']); // same as above +find('src', 'lib'); +find(['src', 'lib']); // same as above +find('.').filter(function(file) { return file.match(/\.js$/); }); ``` -Read the start of a file. +Returns array of all files (however deep) in the given paths. + +The main difference from `ls('-R', path)` is that the resulting file names +include the base directories, e.g. `lib/resources/file1` instead of just `file1`. -### tail([{'-n': \},] file [, file ...]) -### tail([{'-n': \},] file_array) +### grep([options,] regex_filter, file [, file ...]) +### grep([options,] regex_filter, file_array) Available options: -+ `-n `: Show the last `` lines of the files ++ `-v`: Inverse the sense of the regex and print the lines not matching the criteria. ++ `-l`: Print only filenames of matching files Examples: ```javascript -var str = tail({'-n': 1}, 'file*.txt'); -var str = tail('file1', 'file2'); -var str = tail(['file1', 'file2']); // same as above +grep('-v', 'GLOBAL_VARIABLE', '*.js'); +grep('GLOBAL_VARIABLE', '*.js'); ``` -Read the end of a file. - - -### ShellString.prototype.to(file) - -Examples: - -```javascript -cat('input.txt').to('output.txt'); -``` +Reads input string from given files and returns a string containing all lines of the +file that match the given `regex_filter`. -Analogous to the redirection operator `>` in Unix, but works with -ShellStrings (such as those returned by `cat`, `grep`, etc). _Like Unix -redirections, `to()` will overwrite any existing file!_ +### head([{'-n': \},] file [, file ...]) +### head([{'-n': \},] file_array) +Available options: -### ShellString.prototype.toEnd(file) ++ `-n `: Show the first `` lines of the files Examples: ```javascript -cat('input.txt').toEnd('output.txt'); +var str = head({'-n': 1}, 'file*.txt'); +var str = head('file1', 'file2'); +var str = head(['file1', 'file2']); // same as above ``` -Analogous to the redirect-and-append operator `>>` in Unix, but works with -ShellStrings (such as those returned by `cat`, `grep`, etc). +Read the start of a file. -### sed([options,] search_regex, replacement, file [, file ...]) -### sed([options,] search_regex, replacement, file_array) +### ln([options,] source, dest) Available options: -+ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ ++ `-s`: symlink ++ `-f`: force Examples: ```javascript -sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); -sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); +ln('file', 'newlink'); +ln('-sf', 'file', 'existing'); ``` -Reads an input string from `files` and performs a JavaScript `replace()` on the input -using the given search regex and replacement string or function. Returns the new string after replacement. +Links source to dest. Use -f to force the link, should dest already exist. -### sort([options,] file [, file ...]) -### sort([options,] file_array) +### ls([options,] [path, ...]) +### ls([options,] path_array) Available options: -+ `-r`: Reverse the result of comparisons -+ `-n`: Compare according to numerical value ++ `-R`: recursive ++ `-A`: all files (include files beginning with `.`, except for `.` and `..`) ++ `-L`: follow symlinks ++ `-d`: list directories themselves, not their contents ++ `-l`: list objects representing each file, each with fields containing `ls + -l` output fields. See + [fs.Stats](https://nodejs.org/api/fs.html#fs_class_fs_stats) + for more info Examples: ```javascript -sort('foo.txt', 'bar.txt'); -sort('-r', 'foo.txt'); +ls('projs/*.js'); +ls('-R', '/users/me', '/tmp'); +ls('-R', ['/users/me', '/tmp']); // same as above +ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...} ``` -Return the contents of the files, sorted line-by-line. Sorting multiple -files mixes their content, just like unix sort does. +Returns array of files in the given path, or in current directory if no path provided. -### uniq([options,] [input, [output]]) +### mkdir([options,] dir [, dir ...]) +### mkdir([options,] dir_array) Available options: -+ `-i`: Ignore case while comparing -+ `-c`: Prefix lines by the number of occurrences -+ `-d`: Only print duplicate lines, one for each group of identical lines ++ `-p`: full path (will create intermediate dirs if necessary) Examples: ```javascript -uniq('foo.txt'); -uniq('-i', 'foo.txt'); -uniq('-cd', 'foo.txt', 'bar.txt'); +mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); +mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above ``` -Filter adjacent matching lines from input +Creates directories. -### grep([options,] regex_filter, file [, file ...]) -### grep([options,] regex_filter, file_array) +### mv([options ,] source [, source ...], dest') +### mv([options ,] source_array, dest') Available options: -+ `-v`: Inverse the sense of the regex and print the lines not matching the criteria. -+ `-l`: Print only filenames of matching files ++ `-f`: force (default behavior) ++ `-n`: no-clobber Examples: ```javascript -grep('-v', 'GLOBAL_VARIABLE', '*.js'); -grep('GLOBAL_VARIABLE', '*.js'); +mv('-n', 'file', 'dir/'); +mv('file1', 'file2', 'dir/'); +mv(['file1', 'file2'], 'dir/'); // same as above ``` -Reads input string from given files and returns a string containing all lines of the -file that match the given `regex_filter`. +Moves files. -### which(command) +### pwd() +Returns the current directory. + + +### rm([options,] file [, file ...]) +### rm([options,] file_array) +Available options: + ++ `-f`: force ++ `-r, -R`: recursive Examples: ```javascript -var nodeExec = which('node'); +rm('-rf', '/tmp/*'); +rm('some_file.txt', 'another_file.txt'); +rm(['some_file.txt', 'another_file.txt']); // same as above ``` -Searches for `command` in the system's PATH. On Windows, this uses the -`PATHEXT` variable to append the extension if it's not already executable. -Returns string containing the absolute path to the command. +Removes files. -### echo([options,] string [, string ...]) +### sed([options,] search_regex, replacement, file [, file ...]) +### sed([options,] search_regex, replacement, file_array) Available options: -+ `-e`: interpret backslash escapes (default) ++ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ Examples: ```javascript -echo('hello world'); -var str = echo('hello world'); +sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); +sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); ``` -Prints string to stdout, and returns string with additional utility methods -like `.to()`. +Reads an input string from `files` and performs a JavaScript `replace()` on the input +using the given search regex and replacement string or function. Returns the new string after replacement. +Note: -### pushd([options,] [dir | '-N' | '+N']) +Like unix `sed`, ShellJS `sed` supports capture groups. Capture groups are specified +using the `$n` syntax: -Available options: +```javascript +sed(/(\w+)\s(\w+)/, '$2, $1', 'file.txt'); +``` -+ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. -Arguments: +### set(options) +Available options: -+ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. -+ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. -+ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. ++ `+/-e`: exit upon error (`config.fatal`) ++ `+/-v`: verbose: show all commands (`config.verbose`) ++ `+/-f`: disable filename expansion (globbing) Examples: ```javascript -// process.cwd() === '/usr' -pushd('/etc'); // Returns /etc /usr -pushd('+1'); // Returns /usr /etc +set('-e'); // exit upon first error +set('+e'); // this undoes a "set('-e')" ``` -Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. +Sets global configuration variables -### popd([options,] ['-N' | '+N']) +### sort([options,] file [, file ...]) +### sort([options,] file_array) Available options: -+ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. - -Arguments: - -+ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. -+ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. ++ `-r`: Reverse the result of comparisons ++ `-n`: Compare according to numerical value Examples: ```javascript -echo(process.cwd()); // '/usr' -pushd('/etc'); // '/etc /usr' -echo(process.cwd()); // '/etc' -popd(); // '/usr' -echo(process.cwd()); // '/usr' +sort('foo.txt', 'bar.txt'); +sort('-r', 'foo.txt'); ``` -When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. +Return the contents of the files, sorted line-by-line. Sorting multiple +files mixes their content, just like unix sort does. -### dirs([options | '+N' | '-N']) +### tail([{'-n': \},] file [, file ...]) +### tail([{'-n': \},] file_array) Available options: -+ `-c`: Clears the directory stack by deleting all of the elements. - -Arguments: - -+ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. -+ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. ++ `-n `: Show the last `` lines of the files -Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. +Examples: -See also: pushd, popd +```javascript +var str = tail({'-n': 1}, 'file*.txt'); +var str = tail('file1', 'file2'); +var str = tail(['file1', 'file2']); // same as above +``` +Read the end of a file. -### ln([options,] source, dest) -Available options: -+ `-s`: symlink -+ `-f`: force +### tempdir() Examples: ```javascript -ln('file', 'newlink'); -ln('-sf', 'file', 'existing'); +var tmp = tempdir(); // "/tmp" for most *nix platforms ``` -Links source to dest. Use -f to force the link, should dest already exist. - - -### exit(code) -Exits the current process with the given exit code. +Searches and returns string containing a writeable, platform-dependent temporary directory. +Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). -### env['VAR_NAME'] -Object containing environment variables (both getter and setter). Shortcut to process.env. -### exec(command [, options] [, callback]) -Available options (all `false` by default): +### test(expression) +Available expression primaries: -+ `async`: Asynchronous execution. If a callback is provided, it will be set to - `true`, regardless of the passed value. -+ `silent`: Do not echo program output to console. -+ and any option available to NodeJS's - [child_process.exec()](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) ++ `'-b', 'path'`: true if path is a block device ++ `'-c', 'path'`: true if path is a character device ++ `'-d', 'path'`: true if path is a directory ++ `'-e', 'path'`: true if path exists ++ `'-f', 'path'`: true if path is a regular file ++ `'-L', 'path'`: true if path is a symbolic link ++ `'-p', 'path'`: true if path is a pipe (FIFO) ++ `'-S', 'path'`: true if path is a socket Examples: ```javascript -var version = exec('node --version', {silent:true}).stdout; - -var child = exec('some_long_running_process', {async:true}); -child.stdout.on('data', function(data) { - /* ... do something with data ... */ -}); - -exec('some_long_running_process', function(code, stdout, stderr) { - console.log('Exit code:', code); - console.log('Program output:', stdout); - console.log('Program stderr:', stderr); -}); +if (test('-d', path)) { /* do something with dir */ }; +if (!test('-f', path)) continue; // skip if it's a regular file ``` -Executes the given `command` _synchronously_, unless otherwise specified. When in synchronous -mode, this returns a ShellString (compatible with ShellJS v0.6.x, which returns an object -of the form `{ code:..., stdout:... , stderr:... }`). Otherwise, this returns the child process -object, and the `callback` gets the arguments `(code, stdout, stderr)`. +Evaluates expression using the available primaries and returns corresponding value. -Not seeing the behavior you want? `exec()` runs everything through `sh` -by default (or `cmd.exe` on Windows), which differs from `bash`. If you -need bash-specific behavior, try out the `{shell: 'path/to/bash'}` option. -**Note:** For long-lived processes, it's best to run `exec()` asynchronously as -the current synchronous implementation uses a lot of CPU. This should be getting -fixed soon. +### ShellString.prototype.to(file) +Examples: -### chmod(octal_mode || octal_string, file) -### chmod(symbolic_mode, file) +```javascript +cat('input.txt').to('output.txt'); +``` -Available options: +Analogous to the redirection operator `>` in Unix, but works with +ShellStrings (such as those returned by `cat`, `grep`, etc). _Like Unix +redirections, `to()` will overwrite any existing file!_ -+ `-v`: output a diagnostic for every file processed -+ `-c`: like verbose but report only when a change is made -+ `-R`: change files and directories recursively + +### ShellString.prototype.toEnd(file) Examples: ```javascript -chmod(755, '/Users/brandon'); -chmod('755', '/Users/brandon'); // same as above -chmod('u+x', '/Users/brandon'); +cat('input.txt').toEnd('output.txt'); ``` -Alters the permissions of a file or directory by either specifying the -absolute permissions in octal form or expressing the changes in symbols. -This command tries to mimic the POSIX behavior as much as possible. -Notable exceptions: - -+ In symbolic modes, 'a-r' and '-r' are identical. No consideration is - given to the umask. -+ There is no "quiet" option since default behavior is to run silent. +Analogous to the redirect-and-append operator `>>` in Unix, but works with +ShellStrings (such as those returned by `cat`, `grep`, etc). ### touch([options,] file [, file ...]) @@ -650,37 +619,39 @@ A FILE argument that does not exist is created empty, unless -c is supplied. This is a partial implementation of *[touch(1)](http://linux.die.net/man/1/touch)*. -### set(options) +### uniq([options,] [input, [output]]) Available options: -+ `+/-e`: exit upon error (`config.fatal`) -+ `+/-v`: verbose: show all commands (`config.verbose`) -+ `+/-f`: disable filename expansion (globbing) ++ `-i`: Ignore case while comparing ++ `-c`: Prefix lines by the number of occurrences ++ `-d`: Only print duplicate lines, one for each group of identical lines Examples: ```javascript -set('-e'); // exit upon first error -set('+e'); // this undoes a "set('-e')" +uniq('foo.txt'); +uniq('-i', 'foo.txt'); +uniq('-cd', 'foo.txt', 'bar.txt'); ``` -Sets global configuration variables - - -## Non-Unix commands +Filter adjacent matching lines from input -### tempdir() +### which(command) Examples: ```javascript -var tmp = tempdir(); // "/tmp" for most *nix platforms +var nodeExec = which('node'); ``` -Searches and returns string containing a writeable, platform-dependent temporary directory. -Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). +Searches for `command` in the system's PATH. On Windows, this uses the +`PATHEXT` variable to append the extension if it's not already executable. +Returns string containing the absolute path to the command. + +### exit(code) +Exits the current process with the given exit code. ### error() Tests if error occurred in the last command. Returns a truthy value if an @@ -703,6 +674,10 @@ Turns a regular string into a string-like object similar to what each command returns. This has special methods, like `.to()` and `.toEnd()` +### env['VAR_NAME'] +Object containing environment variables (both getter and setter). Shortcut +to process.env. + ### Pipes Examples: @@ -777,8 +752,34 @@ config.globOptions = {nodir: true}; Use this value for calls to `glob.sync()` instead of the default options. +### config.reset() + +Example: + +```javascript +var shell = require('shelljs'); +// Make changes to shell.config, and do stuff... +/* ... */ +shell.config.reset(); // reset to original state +// Do more stuff, but with original settings +/* ... */ +``` + +Reset shell.config to the defaults: + +```javascript +{ + fatal: false, + globOptions: {}, + maxdepth: 255, + noglob: false, + silent: false, + verbose: false, +} +``` + ## Team -| [![Nate Fischer](https://avatars.githubusercontent.com/u/5801521?s=130)](https://github.com/nfischer) | [![Ari Porad](https://avatars1.githubusercontent.com/u/1817508?v=3&s=130)](http://github.com/ariporad) | +| [![Nate Fischer](https://avatars.githubusercontent.com/u/5801521?s=130)](https://github.com/nfischer) | [![Brandon Freitag](https://avatars1.githubusercontent.com/u/5988055?v=3&s=130)](http://github.com/freitagbr) | |:---:|:---:| -| [Nate Fischer](https://github.com/nfischer) | [Ari Porad](http://github.com/ariporad) | +| [Nate Fischer](https://github.com/nfischer) | [Brandon Freitag](http://github.com/freitagbr) | diff --git a/tools/eslint/node_modules/shelljs/README.md~ b/tools/eslint/node_modules/shelljs/README.md~ new file mode 100644 index 00000000000000..cf5a0dd77782f8 --- /dev/null +++ b/tools/eslint/node_modules/shelljs/README.md~ @@ -0,0 +1,817 @@ +# ShellJS - Unix shell commands for Node.js + +[![Gitter](https://img.shields.io/gitter/room/nwjs/nw.js.svg?style=flat-square)](https://gitter.im/shelljs/shelljs?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) +[![Travis](https://img.shields.io/travis/shelljs/shelljs/master.svg?style=flat-square&label=unix)](https://travis-ci.org/shelljs/shelljs) +[![AppVeyor](https://img.shields.io/appveyor/ci/shelljs/shelljs/master.svg?style=flat-square&label=windows)](https://ci.appveyor.com/project/shelljs/shelljs/branch/master) +[![npm version](https://img.shields.io/npm/v/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs) +[![npm downloads](https://img.shields.io/npm/dm/shelljs.svg?style=flat-square)](https://www.npmjs.com/package/shelljs) + +ShellJS is a portable **(Windows/Linux/OS X)** implementation of Unix shell commands on top of the +Node.js API. You can use it to eliminate your shell script's dependency on Unix while still keeping +its familiar and powerful commands. You can also install it globally so you can run it from outside +Node projects - say goodbye to those gnarly Bash scripts! + +ShellJS is proudly tested on every node release since `v0.11`! + +The project is [unit-tested](http://travis-ci.org/shelljs/shelljs) and battled-tested in projects like: + ++ [PDF.js](http://github.com/mozilla/pdf.js) - Firefox's next-gen PDF reader ++ [Firebug](http://getfirebug.com/) - Firefox's infamous debugger ++ [JSHint](http://jshint.com) - Most popular JavaScript linter ++ [Zepto](http://zeptojs.com) - jQuery-compatible JavaScript library for modern browsers ++ [Yeoman](http://yeoman.io/) - Web application stack and development tool ++ [Deployd.com](http://deployd.com) - Open source PaaS for quick API backend generation ++ And [many more](https://npmjs.org/browse/depended/shelljs). + +If you have feedback, suggestions, or need help, feel free to post in our [issue tracker](https://github.com/shelljs/shelljs/issues). + +Think ShellJS is cool? Check out some related projects (like +[cash](https://github.com/dthree/cash)--a javascript-based POSIX shell) +in our [Wiki page](https://github.com/shelljs/shelljs/wiki)! + +Upgrading from an older version? Check out our [breaking +changes](https://github.com/shelljs/shelljs/wiki/Breaking-Changes) page to see +what changes to watch out for while upgrading. + +## Command line use + +If you just want cross platform UNIX commands, checkout our new project +[shelljs/shx](https://github.com/shelljs/shx), a utility to expose `shelljs` to +the command line. + +For example: + +``` +$ shx mkdir -p foo +$ shx touch foo/bar.txt +$ shx rm -rf foo +``` + +## A quick note about the docs + +For documentation on all the latest features, check out our +[README](https://github.com/shelljs/shelljs). To read docs that are consistent +with the latest release, check out [the npm +page](https://www.npmjs.com/package/shelljs) or +[shelljs.org](http://documentup.com/shelljs/shelljs). + +## Installing + +Via npm: + +```bash +$ npm install [-g] shelljs +``` + +If the global option `-g` is specified, the binary `shjs` will be installed. This makes it possible to +run ShellJS scripts much like any shell script from the command line, i.e. without requiring a `node_modules` folder: + +```bash +$ shjs my_script +``` + +## Examples + +### JavaScript + +```javascript +require('shelljs/global'); + +if (!which('git')) { + echo('Sorry, this script requires git'); + exit(1); +} + +// Copy files to release dir +rm('-rf', 'out/Release'); +cp('-R', 'stuff/', 'out/Release'); + +// Replace macros in each .js file +cd('lib'); +ls('*.js').forEach(function(file) { + sed('-i', 'BUILD_VERSION', 'v0.1.2', file); + sed('-i', /^.*REMOVE_THIS_LINE.*$/, '', file); + sed('-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file); +}); +cd('..'); + +// Run external tool synchronously +if (exec('git commit -am "Auto-commit"').code !== 0) { + echo('Error: Git commit failed'); + exit(1); +} +``` + +### CoffeeScript + +CoffeeScript is also supported automatically: + +```coffeescript +require 'shelljs/global' + +if not which 'git' + echo 'Sorry, this script requires git' + exit 1 + +# Copy files to release dir +rm '-rf', 'out/Release' +cp '-R', 'stuff/', 'out/Release' + +# Replace macros in each .js file +cd 'lib' +for file in ls '*.js' + sed '-i', 'BUILD_VERSION', 'v0.1.2', file + sed '-i', /^.*REMOVE_THIS_LINE.*$/, '', file + sed '-i', /.*REPLACE_LINE_WITH_MACRO.*\n/, cat('macro.js'), file +cd '..' + +# Run external tool synchronously +if (exec 'git commit -am "Auto-commit"').code != 0 + echo 'Error: Git commit failed' + exit 1 +``` + +## Global vs. Local + +The example above uses the convenience script `shelljs/global` to reduce verbosity. If polluting your global namespace is not desirable, simply require `shelljs`. + +Example: + +```javascript +var shell = require('shelljs'); +shell.echo('hello world'); +``` + + + + +## Command reference + + +All commands run synchronously, unless otherwise stated. +All commands accept standard bash globbing characters (`*`, `?`, etc.), +compatible with the [node glob module](https://github.com/isaacs/node-glob). + +For less-commonly used commands and features, please check out our [wiki +page](https://github.com/shelljs/shelljs/wiki). + + +### cat(file [, file ...]) +### cat(file_array) + +Examples: + +```javascript +var str = cat('file*.txt'); +var str = cat('file1', 'file2'); +var str = cat(['file1', 'file2']); // same as above +``` + +Returns a string containing the given file, or a concatenated string +containing the files if more than one file is given (a new line character is +introduced between each file). + + +### cd([dir]) +Changes to directory `dir` for the duration of the script. Changes to home +directory if no argument is supplied. + + +### chmod(octal_mode || octal_string, file) +### chmod(symbolic_mode, file) + +Available options: + ++ `-v`: output a diagnostic for every file processed ++ `-c`: like verbose but report only when a change is made ++ `-R`: change files and directories recursively + +Examples: + +```javascript +chmod(755, '/Users/brandon'); +chmod('755', '/Users/brandon'); // same as above +chmod('u+x', '/Users/brandon'); +``` + +Alters the permissions of a file or directory by either specifying the +absolute permissions in octal form or expressing the changes in symbols. +This command tries to mimic the POSIX behavior as much as possible. +Notable exceptions: + ++ In symbolic modes, 'a-r' and '-r' are identical. No consideration is + given to the umask. ++ There is no "quiet" option since default behavior is to run silent. + + +### cp([options,] source [, source ...], dest) +### cp([options,] source_array, dest) +Available options: + ++ `-f`: force (default behavior) ++ `-n`: no-clobber ++ `-u`: only copy if source is newer than dest ++ `-r`, `-R`: recursive ++ `-L`: follow symlinks ++ `-P`: don't follow symlinks + +Examples: + +```javascript +cp('file1', 'dir1'); +cp('-R', 'path/to/dir/', '~/newCopy/'); +cp('-Rf', '/tmp/*', '/usr/local/*', '/home/tmp'); +cp('-Rf', ['/tmp/*', '/usr/local/*'], '/home/tmp'); // same as above +``` + +Copies files. + + +### pushd([options,] [dir | '-N' | '+N']) + +Available options: + ++ `-n`: Suppresses the normal change of directory when adding directories to the stack, so that only the stack is manipulated. + +Arguments: + ++ `dir`: Makes the current working directory be the top of the stack, and then executes the equivalent of `cd dir`. ++ `+N`: Brings the Nth directory (counting from the left of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. ++ `-N`: Brings the Nth directory (counting from the right of the list printed by dirs, starting with zero) to the top of the list by rotating the stack. + +Examples: + +```javascript +// process.cwd() === '/usr' +pushd('/etc'); // Returns /etc /usr +pushd('+1'); // Returns /usr /etc +``` + +Save the current directory on the top of the directory stack and then cd to `dir`. With no arguments, pushd exchanges the top two directories. Returns an array of paths in the stack. + +### popd([options,] ['-N' | '+N']) + +Available options: + ++ `-n`: Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. + +Arguments: + ++ `+N`: Removes the Nth directory (counting from the left of the list printed by dirs), starting with zero. ++ `-N`: Removes the Nth directory (counting from the right of the list printed by dirs), starting with zero. + +Examples: + +```javascript +echo(process.cwd()); // '/usr' +pushd('/etc'); // '/etc /usr' +echo(process.cwd()); // '/etc' +popd(); // '/usr' +echo(process.cwd()); // '/usr' +``` + +When no arguments are given, popd removes the top directory from the stack and performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory listed with dirs; i.e., popd is equivalent to popd +0. Returns an array of paths in the stack. + +### dirs([options | '+N' | '-N']) + +Available options: + ++ `-c`: Clears the directory stack by deleting all of the elements. + +Arguments: + ++ `+N`: Displays the Nth directory (counting from the left of the list printed by dirs when invoked without options), starting with zero. ++ `-N`: Displays the Nth directory (counting from the right of the list printed by dirs when invoked without options), starting with zero. + +Display the list of currently remembered directories. Returns an array of paths in the stack, or a single path if +N or -N was specified. + +See also: pushd, popd + + +### echo([options,] string [, string ...]) +Available options: + ++ `-e`: interpret backslash escapes (default) + +Examples: + +```javascript +echo('hello world'); +var str = echo('hello world'); +``` + +Prints string to stdout, and returns string with additional utility methods +like `.to()`. + + +### exec(command [, options] [, callback]) +Available options (all `false` by default): + ++ `async`: Asynchronous execution. If a callback is provided, it will be set to + `true`, regardless of the passed value. ++ `silent`: Do not echo program output to console. ++ and any option available to NodeJS's + [child_process.exec()](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) + +Examples: + +```javascript +var version = exec('node --version', {silent:true}).stdout; + +var child = exec('some_long_running_process', {async:true}); +child.stdout.on('data', function(data) { + /* ... do something with data ... */ +}); + +exec('some_long_running_process', function(code, stdout, stderr) { + console.log('Exit code:', code); + console.log('Program output:', stdout); + console.log('Program stderr:', stderr); +}); +``` + +Executes the given `command` _synchronously_, unless otherwise specified. When in synchronous +mode, this returns a ShellString (compatible with ShellJS v0.6.x, which returns an object +of the form `{ code:..., stdout:... , stderr:... }`). Otherwise, this returns the child process +object, and the `callback` gets the arguments `(code, stdout, stderr)`. + +Not seeing the behavior you want? `exec()` runs everything through `sh` +by default (or `cmd.exe` on Windows), which differs from `bash`. If you +need bash-specific behavior, try out the `{shell: 'path/to/bash'}` option. + +**Note:** For long-lived processes, it's best to run `exec()` asynchronously as +the current synchronous implementation uses a lot of CPU. This should be getting +fixed soon. + + +### find(path [, path ...]) +### find(path_array) +Examples: + +```javascript +find('src', 'lib'); +find(['src', 'lib']); // same as above +find('.').filter(function(file) { return file.match(/\.js$/); }); +``` + +Returns array of all files (however deep) in the given paths. + +The main difference from `ls('-R', path)` is that the resulting file names +include the base directories, e.g. `lib/resources/file1` instead of just `file1`. + + +### grep([options,] regex_filter, file [, file ...]) +### grep([options,] regex_filter, file_array) +Available options: + ++ `-v`: Inverse the sense of the regex and print the lines not matching the criteria. ++ `-l`: Print only filenames of matching files + +Examples: + +```javascript +grep('-v', 'GLOBAL_VARIABLE', '*.js'); +grep('GLOBAL_VARIABLE', '*.js'); +``` + +Reads input string from given files and returns a string containing all lines of the +file that match the given `regex_filter`. + + +### head([{'-n': \},] file [, file ...]) +### head([{'-n': \},] file_array) +Available options: + ++ `-n `: Show the first `` lines of the files + +Examples: + +```javascript +var str = head({'-n': 1}, 'file*.txt'); +var str = head('file1', 'file2'); +var str = head(['file1', 'file2']); // same as above +``` + +Read the start of a file. + + +### ln([options,] source, dest) +Available options: + ++ `-s`: symlink ++ `-f`: force + +Examples: + +```javascript +ln('file', 'newlink'); +ln('-sf', 'file', 'existing'); +``` + +Links source to dest. Use -f to force the link, should dest already exist. + + +### ls([options,] [path, ...]) +### ls([options,] path_array) +Available options: + ++ `-R`: recursive ++ `-A`: all files (include files beginning with `.`, except for `.` and `..`) ++ `-d`: list directories themselves, not their contents ++ `-l`: list objects representing each file, each with fields containing `ls + -l` output fields. See + [fs.Stats](https://nodejs.org/api/fs.html#fs_class_fs_stats) + for more info + +Examples: + +```javascript +ls('projs/*.js'); +ls('-R', '/users/me', '/tmp'); +ls('-R', ['/users/me', '/tmp']); // same as above +ls('-l', 'file.txt'); // { name: 'file.txt', mode: 33188, nlink: 1, ...} +``` + +Returns array of files in the given path, or in current directory if no path provided. + + +### mkdir([options,] dir [, dir ...]) +### mkdir([options,] dir_array) +Available options: + ++ `-p`: full path (will create intermediate dirs if necessary) + +Examples: + +```javascript +mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g'); +mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above +``` + +Creates directories. + + +### mv([options ,] source [, source ...], dest') +### mv([options ,] source_array, dest') +Available options: + ++ `-f`: force (default behavior) ++ `-n`: no-clobber + +Examples: + +```javascript +mv('-n', 'file', 'dir/'); +mv('file1', 'file2', 'dir/'); +mv(['file1', 'file2'], 'dir/'); // same as above +``` + +Moves files. + + +### pwd() +Returns the current directory. + + +### rm([options,] file [, file ...]) +### rm([options,] file_array) +Available options: + ++ `-f`: force ++ `-r, -R`: recursive + +Examples: + +```javascript +rm('-rf', '/tmp/*'); +rm('some_file.txt', 'another_file.txt'); +rm(['some_file.txt', 'another_file.txt']); // same as above +``` + +Removes files. + + +### sed([options,] search_regex, replacement, file [, file ...]) +### sed([options,] search_regex, replacement, file_array) +Available options: + ++ `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_ + +Examples: + +```javascript +sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js'); +sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js'); +``` + +Reads an input string from `files` and performs a JavaScript `replace()` on the input +using the given search regex and replacement string or function. Returns the new string after replacement. + +Note: + +Like unix `sed`, ShellJS `sed` supports capture groups. Capture groups are specified +using the `$n` syntax: + +```javascript +sed(/(\w+)\s(\w+)/, '$2, $1', 'file.txt'); +``` + + +### set(options) +Available options: + ++ `+/-e`: exit upon error (`config.fatal`) ++ `+/-v`: verbose: show all commands (`config.verbose`) ++ `+/-f`: disable filename expansion (globbing) + +Examples: + +```javascript +set('-e'); // exit upon first error +set('+e'); // this undoes a "set('-e')" +``` + +Sets global configuration variables + + +### sort([options,] file [, file ...]) +### sort([options,] file_array) +Available options: + ++ `-r`: Reverse the result of comparisons ++ `-n`: Compare according to numerical value + +Examples: + +```javascript +sort('foo.txt', 'bar.txt'); +sort('-r', 'foo.txt'); +``` + +Return the contents of the files, sorted line-by-line. Sorting multiple +files mixes their content, just like unix sort does. + + +### tail([{'-n': \},] file [, file ...]) +### tail([{'-n': \},] file_array) +Available options: + ++ `-n `: Show the last `` lines of the files + +Examples: + +```javascript +var str = tail({'-n': 1}, 'file*.txt'); +var str = tail('file1', 'file2'); +var str = tail(['file1', 'file2']); // same as above +``` + +Read the end of a file. + + +### tempdir() + +Examples: + +```javascript +var tmp = tempdir(); // "/tmp" for most *nix platforms +``` + +Searches and returns string containing a writeable, platform-dependent temporary directory. +Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir). + + +### test(expression) +Available expression primaries: + ++ `'-b', 'path'`: true if path is a block device ++ `'-c', 'path'`: true if path is a character device ++ `'-d', 'path'`: true if path is a directory ++ `'-e', 'path'`: true if path exists ++ `'-f', 'path'`: true if path is a regular file ++ `'-L', 'path'`: true if path is a symbolic link ++ `'-p', 'path'`: true if path is a pipe (FIFO) ++ `'-S', 'path'`: true if path is a socket + +Examples: + +```javascript +if (test('-d', path)) { /* do something with dir */ }; +if (!test('-f', path)) continue; // skip if it's a regular file +``` + +Evaluates expression using the available primaries and returns corresponding value. + + +### ShellString.prototype.to(file) + +Examples: + +```javascript +cat('input.txt').to('output.txt'); +``` + +Analogous to the redirection operator `>` in Unix, but works with +ShellStrings (such as those returned by `cat`, `grep`, etc). _Like Unix +redirections, `to()` will overwrite any existing file!_ + + +### ShellString.prototype.toEnd(file) + +Examples: + +```javascript +cat('input.txt').toEnd('output.txt'); +``` + +Analogous to the redirect-and-append operator `>>` in Unix, but works with +ShellStrings (such as those returned by `cat`, `grep`, etc). + + +### touch([options,] file [, file ...]) +### touch([options,] file_array) +Available options: + ++ `-a`: Change only the access time ++ `-c`: Do not create any files ++ `-m`: Change only the modification time ++ `-d DATE`: Parse DATE and use it instead of current time ++ `-r FILE`: Use FILE's times instead of current time + +Examples: + +```javascript +touch('source.js'); +touch('-c', '/path/to/some/dir/source.js'); +touch({ '-r': FILE }, '/path/to/some/dir/source.js'); +``` + +Update the access and modification times of each FILE to the current time. +A FILE argument that does not exist is created empty, unless -c is supplied. +This is a partial implementation of *[touch(1)](http://linux.die.net/man/1/touch)*. + + +### uniq([options,] [input, [output]]) +Available options: + ++ `-i`: Ignore case while comparing ++ `-c`: Prefix lines by the number of occurrences ++ `-d`: Only print duplicate lines, one for each group of identical lines + +Examples: + +```javascript +uniq('foo.txt'); +uniq('-i', 'foo.txt'); +uniq('-cd', 'foo.txt', 'bar.txt'); +``` + +Filter adjacent matching lines from input + + +### which(command) + +Examples: + +```javascript +var nodeExec = which('node'); +``` + +Searches for `command` in the system's PATH. On Windows, this uses the +`PATHEXT` variable to append the extension if it's not already executable. +Returns string containing the absolute path to the command. + + +### exit(code) +Exits the current process with the given exit code. + +### error() +Tests if error occurred in the last command. Returns a truthy value if an +error returned and a falsy value otherwise. + +**Note**: do not rely on the +return value to be an error message. If you need the last error message, use +the `.stderr` attribute from the last command's return value instead. + + +### ShellString(str) + +Examples: + +```javascript +var foo = ShellString('hello world'); +``` + +Turns a regular string into a string-like object similar to what each +command returns. This has special methods, like `.to()` and `.toEnd()` + + +### env['VAR_NAME'] +Object containing environment variables (both getter and setter). Shortcut +to process.env. + +### Pipes + +Examples: + +```javascript +grep('foo', 'file1.txt', 'file2.txt').sed(/o/g, 'a').to('output.txt'); +echo('files with o\'s in the name:\n' + ls().grep('o')); +cat('test.js').exec('node'); // pipe to exec() call +``` + +Commands can send their output to another command in a pipe-like fashion. +`sed`, `grep`, `cat`, `exec`, `to`, and `toEnd` can appear on the right-hand +side of a pipe. Pipes can be chained. + +## Configuration + + +### config.silent + +Example: + +```javascript +var sh = require('shelljs'); +var silentState = sh.config.silent; // save old silent state +sh.config.silent = true; +/* ... */ +sh.config.silent = silentState; // restore old silent state +``` + +Suppresses all command output if `true`, except for `echo()` calls. +Default is `false`. + +### config.fatal + +Example: + +```javascript +require('shelljs/global'); +config.fatal = true; // or set('-e'); +cp('this_file_does_not_exist', '/dev/null'); // throws Error here +/* more commands... */ +``` + +If `true` the script will throw a Javascript error when any shell.js +command encounters an error. Default is `false`. This is analogous to +Bash's `set -e` + +### config.verbose + +Example: + +```javascript +config.verbose = true; // or set('-v'); +cd('dir/'); +ls('subdir/'); +``` + +Will print each command as follows: + +``` +cd dir/ +ls subdir/ +``` + +### config.globOptions + +Example: + +```javascript +config.globOptions = {nodir: true}; +``` + +Use this value for calls to `glob.sync()` instead of the default options. + +### config.reset() + +Example: + +```javascript +var shell = require('shelljs'); +// Make changes to shell.config, and do stuff... +/* ... */ +shell.config.reset(); // reset to original state +// Do more stuff, but with original settings +/* ... */ +``` + +Reset shell.config to the defaults: + +```javascript +{ + fatal: false, + globOptions: {}, + maxdepth: 255, + noglob: false, + silent: false, + verbose: false, +} +``` + +## Team + +| [![Nate Fischer](https://avatars.githubusercontent.com/u/5801521?s=130)](https://github.com/nfischer) | [![Ari Porad](https://avatars1.githubusercontent.com/u/1817508?v=3&s=130)](http://github.com/ariporad) | +|:---:|:---:| +| [Nate Fischer](https://github.com/nfischer) | [Ari Porad](http://github.com/ariporad) | diff --git a/tools/eslint/node_modules/shelljs/commands.js b/tools/eslint/node_modules/shelljs/commands.js new file mode 100644 index 00000000000000..f31adb2142f5ae --- /dev/null +++ b/tools/eslint/node_modules/shelljs/commands.js @@ -0,0 +1,29 @@ +module.exports = [ + 'cat', + 'cd', + 'chmod', + 'cp', + 'dirs', + 'echo', + 'exec', + 'find', + 'grep', + 'head', + 'ln', + 'ls', + 'mkdir', + 'mv', + 'pwd', + 'rm', + 'sed', + 'set', + 'sort', + 'tail', + 'tempdir', + 'test', + 'to', + 'toEnd', + 'touch', + 'uniq', + 'which', +]; diff --git a/tools/eslint/node_modules/shelljs/package.json b/tools/eslint/node_modules/shelljs/package.json index b6cfe9545d9ac0..3a07898ccd48aa 100644 --- a/tools/eslint/node_modules/shelljs/package.json +++ b/tools/eslint/node_modules/shelljs/package.json @@ -14,13 +14,13 @@ ] ], "_from": "shelljs@>=0.7.5 <0.8.0", - "_id": "shelljs@0.7.5", + "_id": "shelljs@0.7.7", "_inCache": true, "_location": "/shelljs", "_nodeVersion": "6.7.0", "_npmOperationalInternal": { "host": "packages-18-east.internal.npmjs.com", - "tmp": "tmp/shelljs-0.7.5.tgz_1477547417527_0.3151172921061516" + "tmp": "tmp/shelljs-0.7.7.tgz_1489041432003_0.056656441651284695" }, "_npmUser": { "name": "nfischer", @@ -40,8 +40,8 @@ "_requiredBy": [ "/eslint" ], - "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.5.tgz", - "_shasum": "2eef7a50a21e1ccf37da00df767ec69e30ad0675", + "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz", + "_shasum": "b2f5c77ef97148f4b4f6e22682e10bba8667cff1", "_shrinkwrap": null, "_spec": "shelljs@^0.7.5", "_where": "/Users/trott/io.js/tools/node_modules/eslint", @@ -52,15 +52,15 @@ "url": "https://github.com/shelljs/shelljs/issues" }, "contributors": [ - { - "name": "Ari Porad", - "email": "ari@ariporad.com", - "url": "http://ariporad.com/" - }, { "name": "Nate Fischer", "email": "ntfschr@gmail.com", "url": "https://github.com/nfischer" + }, + { + "name": "Brandon Freitag", + "email": "freitagbr@gmail.com", + "url": "https://github.com/freitagbr" } ], "dependencies": { @@ -70,24 +70,37 @@ }, "description": "Portable Unix shell commands for Node.js", "devDependencies": { + "ava": "^0.16.0", + "codecov": "^1.0.1", "coffee-script": "^1.10.0", "eslint": "^2.0.0", "eslint-config-airbnb-base": "^3.0.0", "eslint-plugin-import": "^1.11.1", + "nyc": "^10.0.0", "shelljs-changelog": "^0.2.0", "shelljs-release": "^0.2.0", + "shx": "^0.2.0", "travis-check-changes": "^0.2.0" }, "directories": {}, "dist": { - "shasum": "2eef7a50a21e1ccf37da00df767ec69e30ad0675", - "tarball": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.5.tgz" + "shasum": "b2f5c77ef97148f4b4f6e22682e10bba8667cff1", + "tarball": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.7.tgz" }, "engines": { "iojs": "*", "node": ">=0.11.0" }, - "gitHead": "1a15022f2747d322d771dd7ae0c00840e469a52a", + "files": [ + "commands.js", + "global.js", + "make.js", + "plugin.js", + "shell.js", + "bin", + "src" + ], + "gitHead": "95638cc773390920a446e383c40ed8104c7d211d", "homepage": "http://github.com/shelljs/shelljs", "keywords": [ "shelljs", @@ -102,14 +115,14 @@ "license": "BSD-3-Clause", "main": "./shell.js", "maintainers": [ - { - "name": "ariporad", - "email": "ari@ariporad.com" - }, { "name": "artur", "email": "arturadib@gmail.com" }, + { + "name": "freitagbr", + "email": "freitagbr@gmail.com" + }, { "name": "nfischer", "email": "ntfschr@gmail.com" @@ -125,13 +138,15 @@ "scripts": { "after-travis": "travis-check-changes", "changelog": "shelljs-changelog", + "codecov": "codecov", "gendocs": "node scripts/generate-docs", "lint": "eslint .", "posttest": "npm run lint", "release:major": "shelljs-release major", "release:minor": "shelljs-release minor", "release:patch": "shelljs-release patch", - "test": "node scripts/run-tests" + "test": "nyc --reporter=text --reporter=lcov ava --serial test/*.js", + "test-no-coverage": "ava --serial test/*.js" }, - "version": "0.7.5" + "version": "0.7.7" } diff --git a/tools/eslint/node_modules/shelljs/scripts/generate-docs.js b/tools/eslint/node_modules/shelljs/scripts/generate-docs.js deleted file mode 100755 index f777c8ad263612..00000000000000 --- a/tools/eslint/node_modules/shelljs/scripts/generate-docs.js +++ /dev/null @@ -1,27 +0,0 @@ -#!/usr/bin/env node -/* globals cat, cd, echo, grep, sed, ShellString */ -require('../global'); - -echo('Appending docs to README.md'); - -cd(__dirname + '/..'); - -// Extract docs from shell.js -var docs = grep('^//@', 'shell.js'); - -// Now extract docs from the appropriate src/*.js files -docs = docs.replace(/\/\/@include (.+)/g, function (match, path) { - var file = path.match('.js$') ? path : path + '.js'; - return grep('^//@', file); -}); - -// Remove '//@' -docs = docs.replace(/\/\/@ ?/g, ''); - -// Wipe out the old docs -ShellString(cat('README.md').replace(/## Command reference(.|\n)*\n## Team/, '## Command reference\n## Team')).to('README.md'); - -// Append new docs to README -sed('-i', /## Command reference/, '## Command reference\n\n' + docs, 'README.md'); - -echo('All done.'); diff --git a/tools/eslint/node_modules/shelljs/scripts/run-tests.js b/tools/eslint/node_modules/shelljs/scripts/run-tests.js deleted file mode 100755 index 99205623f9ed6b..00000000000000 --- a/tools/eslint/node_modules/shelljs/scripts/run-tests.js +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env node -/* globals cd, echo, exec, exit, ls */ -require('../global'); - -var failed = false; - -// -// Unit tests -// -cd(__dirname + '/../test'); -ls('*.js').forEach(function (file) { - echo('Running test:', file); - if (exec(JSON.stringify(process.execPath) + ' ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit) - failed = true; - echo('*** TEST FAILED! (missing exit code "123")'); - echo(); - } -}); - -echo(); - -if (failed) { - echo('*******************************************************'); - echo('WARNING: Some tests did not pass!'); - echo('*******************************************************'); - exit(1); -} else { - echo('All tests passed.'); -} diff --git a/tools/eslint/node_modules/shelljs/shell.js b/tools/eslint/node_modules/shelljs/shell.js index 9e49ef5e799cdb..f155f3d3ad4c20 100644 --- a/tools/eslint/node_modules/shelljs/shell.js +++ b/tools/eslint/node_modules/shelljs/shell.js @@ -3,7 +3,7 @@ // Unix shell commands on top of Node's API // // Copyright (c) 2012 Artur Adib -// http://github.com/arturadib/shelljs +// http://github.com/shelljs/shelljs // var common = require('./src/common'); @@ -17,124 +17,31 @@ var common = require('./src/common'); //@ page](https://github.com/shelljs/shelljs/wiki). //@ -// Boilerplate -// ----------- -// Copy the code block below here & replace variables with appropiate values -// ``` -// //@include ./src/fileName -// var functionName = require('./src/fileName'); -// exports.nameOfCommand = common.wrap(nameOfCommand, functionName, {globStart: firstIndexToExpand}); -// ``` -// -// The //@include includes the docs for that command -// -// firstIndexToExpand should usually be 1 (so, put {globStart: 1}) -// Increase this value if the command takes arguments that shouldn't be expanded -// with wildcards, such as with the regexes for sed & grep - -//@include ./src/cd -require('./src/cd'); - -//@include ./src/pwd -require('./src/pwd'); - -//@include ./src/ls -require('./src/ls'); - -//@include ./src/find -require('./src/find'); - -//@include ./src/cp -require('./src/cp'); - -//@include ./src/rm -require('./src/rm'); - -//@include ./src/mv -require('./src/mv'); - -//@include ./src/mkdir -require('./src/mkdir'); - -//@include ./src/test -require('./src/test'); - -//@include ./src/cat -require('./src/cat'); - -//@include ./src/head -require('./src/head'); - -//@include ./src/tail -require('./src/tail'); +// Include the docs for all the default commands +//@commands -//@include ./src/to -require('./src/to'); - -//@include ./src/toEnd -require('./src/toEnd'); - -//@include ./src/sed -require('./src/sed'); - -//@include ./src/sort -require('./src/sort'); - -//@include ./src/uniq -require('./src/uniq'); - -//@include ./src/grep -require('./src/grep'); - -//@include ./src/which -require('./src/which'); - -//@include ./src/echo -require('./src/echo'); - -//@include ./src/dirs -require('./src/dirs'); - -//@include ./src/ln -require('./src/ln'); +// Load all default commands +require('./commands').forEach(function (command) { + require('./src/' + command); +}); //@ //@ ### exit(code) //@ Exits the current process with the given exit code. exports.exit = process.exit; -//@ -//@ ### env['VAR_NAME'] -//@ Object containing environment variables (both getter and setter). Shortcut to process.env. -exports.env = process.env; - -//@include ./src/exec -require('./src/exec'); - -//@include ./src/chmod -require('./src/chmod'); - -//@include ./src/touch -require('./src/touch'); - -//@include ./src/set -require('./src/set'); - - -//@ -//@ ## Non-Unix commands -//@ - -//@include ./src/tempdir -require('./src/tempdir'); - //@include ./src/error - exports.error = require('./src/error'); //@include ./src/common exports.ShellString = common.ShellString; +//@ +//@ ### env['VAR_NAME'] +//@ Object containing environment variables (both getter and setter). Shortcut +//@ to process.env. +exports.env = process.env; + //@ //@ ### Pipes //@ @@ -216,3 +123,30 @@ exports.config = common.config; //@ ``` //@ //@ Use this value for calls to `glob.sync()` instead of the default options. + +//@ +//@ ### config.reset() +//@ +//@ Example: +//@ +//@ ```javascript +//@ var shell = require('shelljs'); +//@ // Make changes to shell.config, and do stuff... +//@ /* ... */ +//@ shell.config.reset(); // reset to original state +//@ // Do more stuff, but with original settings +//@ /* ... */ +//@ ``` +//@ +//@ Reset shell.config to the defaults: +//@ +//@ ```javascript +//@ { +//@ fatal: false, +//@ globOptions: {}, +//@ maxdepth: 255, +//@ noglob: false, +//@ silent: false, +//@ verbose: false, +//@ } +//@ ``` diff --git a/tools/eslint/node_modules/shelljs/src/chmod.js b/tools/eslint/node_modules/shelljs/src/chmod.js index a1afd90e75684f..ce5659e3500b4b 100644 --- a/tools/eslint/node_modules/shelljs/src/chmod.js +++ b/tools/eslint/node_modules/shelljs/src/chmod.js @@ -21,20 +21,20 @@ var PERMS = (function (base) { SETGID: parseInt('02000', 8), SETUID: parseInt('04000', 8), - TYPE_MASK: parseInt('0770000', 8) + TYPE_MASK: parseInt('0770000', 8), }; }({ EXEC: 1, WRITE: 2, - READ: 4 + READ: 4, })); common.register('chmod', _chmod, { }); //@ -//@ ### chmod(octal_mode || octal_string, file) -//@ ### chmod(symbolic_mode, file) +//@ ### chmod([options,] octal_mode || octal_string, file) +//@ ### chmod([options,] symbolic_mode, file) //@ //@ Available options: //@ @@ -48,6 +48,7 @@ common.register('chmod', _chmod, { //@ chmod(755, '/Users/brandon'); //@ chmod('755', '/Users/brandon'); // same as above //@ chmod('u+x', '/Users/brandon'); +//@ chmod('-R', 'a-w', '/Users/brandon'); //@ ``` //@ //@ Alters the permissions of a file or directory by either specifying the @@ -73,7 +74,7 @@ function _chmod(options, mode, filePattern) { options = common.parseOptions(options, { 'R': 'recursive', 'c': 'changes', - 'v': 'verbose' + 'v': 'verbose', }); filePattern = [].slice.call(arguments, 2); diff --git a/tools/eslint/node_modules/shelljs/src/common.js b/tools/eslint/node_modules/shelljs/src/common.js index 8211feff4e4d29..f5197d8ec3cf45 100644 --- a/tools/eslint/node_modules/shelljs/src/common.js +++ b/tools/eslint/node_modules/shelljs/src/common.js @@ -9,22 +9,58 @@ var shell = require('..'); var shellMethods = Object.create(shell); -// Module globals -var config = { - silent: false, +// objectAssign(target_obj, source_obj1 [, source_obj2 ...]) +// "Ponyfill" for Object.assign +// objectAssign({A:1}, {b:2}, {c:3}) returns {A:1, b:2, c:3} +var objectAssign = typeof Object.assign === 'function' ? + Object.assign : + function objectAssign(target) { + var sources = [].slice.call(arguments, 1); + sources.forEach(function (source) { + Object.keys(source).forEach(function (key) { + target[key] = source[key]; + }); + }); + + return target; + }; +exports.extend = objectAssign; + +// Check if we're running under electron +var isElectron = Boolean(process.versions.electron); + +// Module globals (assume no execPath by default) +var DEFAULT_CONFIG = { fatal: false, - verbose: false, - noglob: false, globOptions: {}, - maxdepth: 255 + maxdepth: 255, + noglob: false, + silent: false, + verbose: false, + execPath: null, +}; + +var config = { + reset: function () { + objectAssign(this, DEFAULT_CONFIG); + if (!isElectron) { + this.execPath = process.execPath; + } + }, + resetForTesting: function () { + this.reset(); + this.silent = true; + }, }; + +config.reset(); exports.config = config; var state = { error: null, errorCode: 0, currentCmd: 'shell.js', - tempDir: null + tempDir: null, }; exports.state = state; @@ -36,13 +72,31 @@ exports.platform = platform; // This is populated by calls to commonl.wrap() var pipeMethods = []; +// Reliably test if something is any sort of javascript object +function isObject(a) { + return typeof a === 'object' && a !== null; +} +exports.isObject = isObject; + function log() { + /* istanbul ignore next */ if (!config.silent) { console.error.apply(console, arguments); } } exports.log = log; +// Converts strings to be equivalent across all platforms. Primarily responsible +// for making sure we use '/' instead of '\' as path separators, but this may be +// expanded in the future if necessary +function convertErrorOutput(msg) { + if (typeof msg !== 'string') { + throw new TypeError('input must be a string'); + } + return msg.replace(/\\/g, '/'); +} +exports.convertErrorOutput = convertErrorOutput; + // Shows error message. Throws if config.fatal is true function error(msg, _code, options) { // Validate input @@ -55,9 +109,9 @@ function error(msg, _code, options) { silent: false, }; - if (typeof _code === 'number' && typeof options === 'object') { + if (typeof _code === 'number' && isObject(options)) { options.code = _code; - } else if (typeof _code === 'object') { // no 'code' + } else if (isObject(_code)) { // no 'code' options = _code; } else if (typeof _code === 'number') { // no 'options' options = { code: _code }; @@ -68,7 +122,7 @@ function error(msg, _code, options) { if (!state.errorCode) state.errorCode = options.code; - var logEntry = options.prefix + msg; + var logEntry = convertErrorOutput(options.prefix + msg); state.error = state.error ? state.error + '\n' : ''; state.error += logEntry; @@ -79,7 +133,7 @@ function error(msg, _code, options) { if (!options.continue) { throw { msg: 'earlyExit', - retValue: (new ShellString('', state.error, state.errorCode)) + retValue: (new ShellString('', state.error, state.errorCode)), }; } } @@ -135,23 +189,30 @@ exports.getUserHome = getUserHome; // parseOptions('-a', {'a':'alice', 'b':'bob'}); // Returns {'reference': 'string-value', 'bob': false} when passed two dictionaries of the form: // parseOptions({'-r': 'string-value'}, {'r':'reference', 'b':'bob'}); -function parseOptions(opt, map) { - if (!map) error('parseOptions() internal error: no map given'); +function parseOptions(opt, map, errorOptions) { + // Validate input + if (typeof opt !== 'string' && !isObject(opt)) { + throw new Error('options must be strings or key-value pairs'); + } else if (!isObject(map)) { + throw new Error('parseOptions() internal error: map must be an object'); + } else if (errorOptions && !isObject(errorOptions)) { + throw new Error('parseOptions() internal error: errorOptions must be object'); + } // All options are false by default var options = {}; Object.keys(map).forEach(function (letter) { - if (map[letter][0] !== '!') { - options[map[letter]] = false; + var optName = map[letter]; + if (optName[0] !== '!') { + options[optName] = false; } }); - if (!opt) return options; // defaults + if (opt === '') return options; // defaults - var optionName; if (typeof opt === 'string') { if (opt[0] !== '-') { - return options; + error("Options string must start with a '-'", errorOptions || {}); } // e.g. chars = ['R', 'f'] @@ -159,29 +220,27 @@ function parseOptions(opt, map) { chars.forEach(function (c) { if (c in map) { - optionName = map[c]; + var optionName = map[c]; if (optionName[0] === '!') { options[optionName.slice(1)] = false; } else { options[optionName] = true; } } else { - error('option not recognized: ' + c); + error('option not recognized: ' + c, errorOptions || {}); } }); - } else if (typeof opt === 'object') { + } else { // opt is an Object Object.keys(opt).forEach(function (key) { // key is a string of the form '-r', '-d', etc. var c = key[1]; if (c in map) { - optionName = map[c]; + var optionName = map[c]; options[optionName] = opt[key]; // assign the given value } else { - error('option not recognized: ' + c); + error('option not recognized: ' + c, errorOptions || {}); } }); - } else { - error('options must be strings or key-value pairs'); } return options; } @@ -217,6 +276,7 @@ function unlinkSync(file) { fs.unlinkSync(file); } catch (e) { // Try to override file permission + /* istanbul ignore next */ if (e.code === 'EPERM') { fs.chmodSync(file, '0666'); fs.unlinkSync(file); @@ -244,21 +304,6 @@ function randomFileName() { } exports.randomFileName = randomFileName; -// objectAssign(target_obj, source_obj1 [, source_obj2 ...]) -// Ponyfill for Object.assign -// objectAssign({A:1}, {b:2}, {c:3}) returns {A:1, b:2, c:3} -function objectAssign(target) { - var sources = [].slice.call(arguments, 1); - sources.forEach(function (source) { - Object.keys(source).forEach(function (key) { - target[key] = source[key]; - }); - }); - - return target; -} -exports.extend = Object.assign || objectAssign; - // Common wrapper for all Unix-like commands that performs glob expansion, // command-logging, and other nice things function wrap(cmd, fn, options) { @@ -288,7 +333,7 @@ function wrap(cmd, fn, options) { if (options.unix === false) { // this branch is for exec() retValue = fn.apply(this, args); } else { // and this branch is for everything else - if (args[0] instanceof Object && args[0].constructor.name === 'Object') { + if (isObject(args[0]) && args[0].constructor.name === 'Object') { // a no-op, allowing the syntax `touch({'-r': file}, ...)` } else if (args.length === 0 || typeof args[0] !== 'string' || args[0].length <= 1 || args[0][0] !== '-') { args.unshift(''); // only add dummy option if '-option' not already present @@ -308,7 +353,7 @@ function wrap(cmd, fn, options) { // Convert ShellStrings (basically just String objects) to regular strings args = args.map(function (arg) { - if (arg instanceof Object && arg.constructor.name === 'String') { + if (isObject(arg) && arg.constructor.name === 'String') { return arg.toString(); } return arg; @@ -331,12 +376,13 @@ function wrap(cmd, fn, options) { try { // parse options if options are provided - if (typeof options.cmdOptions === 'object') { + if (isObject(options.cmdOptions)) { args[0] = parseOptions(args[0], options.cmdOptions); } retValue = fn.apply(this, args); } catch (e) { + /* istanbul ignore else */ if (e.msg === 'earlyExit') { retValue = e.retValue; } else { @@ -345,6 +391,7 @@ function wrap(cmd, fn, options) { } } } catch (e) { + /* istanbul ignore next */ if (!state.error) { // If state.error hasn't been set it's an error thrown by Node, not us - probably a bug... console.error('ShellJS: internal error'); diff --git a/tools/eslint/node_modules/shelljs/src/cp.js b/tools/eslint/node_modules/shelljs/src/cp.js index 487c4f7172bf9e..04c4e57ef96e5f 100644 --- a/tools/eslint/node_modules/shelljs/src/cp.js +++ b/tools/eslint/node_modules/shelljs/src/cp.js @@ -54,12 +54,14 @@ function copyFileSync(srcFile, destFile, options) { try { fdr = fs.openSync(srcFile, 'r'); } catch (e) { + /* istanbul ignore next */ common.error('copyFileSync: could not read src file (' + srcFile + ')'); } try { fdw = fs.openSync(destFile, 'w'); } catch (e) { + /* istanbul ignore next */ common.error('copyFileSync: could not write to dest file (code=' + e.code + '):' + destFile); } @@ -84,18 +86,12 @@ function copyFileSync(srcFile, destFile, options) { // // Licensed under the MIT License // http://www.opensource.org/licenses/mit-license.php -function cpdirSyncRecursive(sourceDir, destDir, opts) { +function cpdirSyncRecursive(sourceDir, destDir, currentDepth, opts) { if (!opts) opts = {}; - /* Ensure there is not a run away recursive copy. */ - if (typeof opts.depth === 'undefined') { - opts.depth = 0; - } - if (opts.depth >= common.config.maxdepth) { - // Max depth has been reached, end copy. - return; - } - opts.depth++; + // Ensure there is not a run away recursive copy + if (currentDepth >= common.config.maxdepth) return; + currentDepth++; // Create the directory where all our junk is moving to; read the mode of the // source directory and mirror it @@ -126,7 +122,7 @@ function cpdirSyncRecursive(sourceDir, destDir, opts) { } if (srcFileStat.isDirectory()) { /* recursion this thing right on back. */ - cpdirSyncRecursive(srcFile, destFile, opts); + cpdirSyncRecursive(srcFile, destFile, currentDepth, opts); } else if (srcFileStat.isSymbolicLink() && !opts.followsymlink) { symlinkFull = fs.readlinkSync(srcFile); try { @@ -139,7 +135,7 @@ function cpdirSyncRecursive(sourceDir, destDir, opts) { } else if (srcFileStat.isSymbolicLink() && opts.followsymlink) { srcFileStat = fs.statSync(srcFile); if (srcFileStat.isDirectory()) { - cpdirSyncRecursive(srcFile, destFile, opts); + cpdirSyncRecursive(srcFile, destFile, currentDepth, opts); } else { copyFileSync(srcFile, destFile, opts); } @@ -247,8 +243,9 @@ function _cp(options, sources, dest) { try { fs.statSync(path.dirname(dest)); - cpdirSyncRecursive(src, newDest, { no_force: options.no_force, followsymlink: options.followsymlink }); + cpdirSyncRecursive(src, newDest, 0, { no_force: options.no_force, followsymlink: options.followsymlink }); } catch (e) { + /* istanbul ignore next */ common.error("cannot create directory '" + dest + "': No such file or directory"); } } @@ -266,9 +263,16 @@ function _cp(options, sources, dest) { return; // skip file } + if (path.relative(src, thisDest) === '') { + // a file cannot be copied to itself, but we want to continue copying other files + common.error("'" + thisDest + "' and '" + src + "' are the same file", { continue: true }); + return; + } + copyFileSync(src, thisDest, options); } }); // forEach(src) + return new common.ShellString('', common.state.error, common.state.errorCode); } module.exports = _cp; diff --git a/tools/eslint/node_modules/shelljs/src/dirs.js b/tools/eslint/node_modules/shelljs/src/dirs.js index cf5fe02f50c593..3806c14f736432 100644 --- a/tools/eslint/node_modules/shelljs/src/dirs.js +++ b/tools/eslint/node_modules/shelljs/src/dirs.js @@ -63,7 +63,7 @@ function _pushd(options, dir) { } options = common.parseOptions(options, { - 'n': 'no-cd' + 'n': 'no-cd', }); var dirs = _actualDirStack(); @@ -129,7 +129,7 @@ function _popd(options, index) { } options = common.parseOptions(options, { - 'n': 'no-cd' + 'n': 'no-cd', }); if (!_dirStack.length) { @@ -172,7 +172,7 @@ function _dirs(options, index) { } options = common.parseOptions(options, { - 'c': 'clear' + 'c': 'clear', }); if (options.clear) { diff --git a/tools/eslint/node_modules/shelljs/src/exec.js b/tools/eslint/node_modules/shelljs/src/exec.js index f6875b1e5fc4ae..5d360e8684e978 100644 --- a/tools/eslint/node_modules/shelljs/src/exec.js +++ b/tools/eslint/node_modules/shelljs/src/exec.js @@ -19,6 +19,10 @@ common.register('exec', _exec, { // Node is single-threaded; callbacks and other internal state changes are done in the // event loop). function execSync(cmd, opts, pipe) { + if (!common.config.execPath) { + common.error('Unable to find a path to the node binary. Please manually set config.execPath'); + } + var tempDir = _tempDir(); var stdoutFile = path.resolve(tempDir + '/' + common.randomFileName()); var stderrFile = path.resolve(tempDir + '/' + common.randomFileName()); @@ -30,7 +34,7 @@ function execSync(cmd, opts, pipe) { silent: common.config.silent, cwd: _pwd().toString(), env: process.env, - maxBuffer: DEFAULT_MAXBUFFER_SIZE + maxBuffer: DEFAULT_MAXBUFFER_SIZE, }, opts); var previousStdoutContent = ''; @@ -66,7 +70,7 @@ function execSync(cmd, opts, pipe) { if (fs.existsSync(stderrFile)) common.unlinkSync(stderrFile); if (fs.existsSync(codeFile)) common.unlinkSync(codeFile); - var execCommand = JSON.stringify(process.execPath) + ' ' + JSON.stringify(scriptFile); + var execCommand = JSON.stringify(common.config.execPath) + ' ' + JSON.stringify(scriptFile); var script; opts.cwd = path.resolve(opts.cwd); @@ -77,14 +81,21 @@ function execSync(cmd, opts, pipe) { "var child = require('child_process')", " , fs = require('fs');", 'var childProcess = child.exec(' + JSON.stringify(cmd) + ', ' + optString + ', function(err) {', - ' fs.writeFileSync(' + JSON.stringify(codeFile) + ", err ? err.code.toString() : '0');", + ' var fname = ' + JSON.stringify(codeFile) + ';', + ' if (!err) {', + ' fs.writeFileSync(fname, "0");', + ' } else if (err.code === undefined) {', + ' fs.writeFileSync(fname, "1");', + ' } else {', + ' fs.writeFileSync(fname, err.code.toString());', + ' }', '});', 'var stdoutStream = fs.createWriteStream(' + JSON.stringify(stdoutFile) + ');', 'var stderrStream = fs.createWriteStream(' + JSON.stringify(stderrFile) + ');', 'childProcess.stdout.pipe(stdoutStream, {end: false});', 'childProcess.stderr.pipe(stderrStream, {end: false});', 'childProcess.stdout.pipe(process.stdout);', - 'childProcess.stderr.pipe(process.stderr);' + 'childProcess.stderr.pipe(process.stderr);', ].join('\n') + (pipe ? '\nchildProcess.stdin.end(' + JSON.stringify(pipe) + ');\n' : '\n') + [ @@ -92,7 +103,7 @@ function execSync(cmd, opts, pipe) { 'function tryClosingStdout(){ if(stdoutEnded){ stdoutStream.end(); } }', 'function tryClosingStderr(){ if(stderrEnded){ stderrStream.end(); } }', "childProcess.stdout.on('end', function(){ stdoutEnded = true; tryClosingStdout(); });", - "childProcess.stderr.on('end', function(){ stderrEnded = true; tryClosingStderr(); });" + "childProcess.stderr.on('end', function(){ stderrEnded = true; tryClosingStderr(); });", ].join('\n'); fs.writeFileSync(scriptFile, script); @@ -121,8 +132,15 @@ function execSync(cmd, opts, pipe) { "var child = require('child_process')", " , fs = require('fs');", 'var childProcess = child.exec(' + JSON.stringify(cmd) + ', ' + optString + ', function(err) {', - ' fs.writeFileSync(' + JSON.stringify(codeFile) + ", err ? err.code.toString() : '0');", - '});' + ' var fname = ' + JSON.stringify(codeFile) + ';', + ' if (!err) {', + ' fs.writeFileSync(fname, "0");', + ' } else if (err.code === undefined) {', + ' fs.writeFileSync(fname, "1");', + ' } else {', + ' fs.writeFileSync(fname, err.code.toString());', + ' }', + '});', ].join('\n') + (pipe ? '\nchildProcess.stdin.end(' + JSON.stringify(pipe) + ');\n' : '\n'); @@ -172,12 +190,19 @@ function execAsync(cmd, opts, pipe, callback) { silent: common.config.silent, cwd: _pwd().toString(), env: process.env, - maxBuffer: DEFAULT_MAXBUFFER_SIZE + maxBuffer: DEFAULT_MAXBUFFER_SIZE, }, opts); var c = child.exec(cmd, opts, function (err) { if (callback) { - callback(err ? err.code : 0, stdout, stderr); + if (!err) { + callback(0, stdout, stderr); + } else if (err.code === undefined) { + // See issue #536 + callback(1, stdout, stderr); + } else { + callback(err.code, stdout, stderr); + } } }); @@ -203,7 +228,7 @@ function execAsync(cmd, opts, pipe, callback) { //@ + `async`: Asynchronous execution. If a callback is provided, it will be set to //@ `true`, regardless of the passed value. //@ + `silent`: Do not echo program output to console. -//@ + and any option available to NodeJS's +//@ + and any option available to Node.js's //@ [child_process.exec()](https://nodejs.org/api/child_process.html#child_process_child_process_exec_command_options_callback) //@ //@ Examples: @@ -254,7 +279,7 @@ function _exec(command, options, callback) { options = common.extend({ silent: common.config.silent, - async: false + async: false, }, options); try { diff --git a/tools/eslint/node_modules/shelljs/src/find.js b/tools/eslint/node_modules/shelljs/src/find.js index f96a51e7830a62..625aa2972e4eec 100644 --- a/tools/eslint/node_modules/shelljs/src/find.js +++ b/tools/eslint/node_modules/shelljs/src/find.js @@ -40,9 +40,16 @@ function _find(options, paths) { // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory paths.forEach(function (file) { + var stat; + try { + stat = fs.statSync(file); + } catch (e) { + common.error('no such file or directory: ' + file); + } + pushFile(file); - if (fs.statSync(file).isDirectory()) { + if (stat.isDirectory()) { _ls({ recursive: true, all: true }, file).forEach(function (subfile) { pushFile(path.join(file, subfile)); }); diff --git a/tools/eslint/node_modules/shelljs/src/ls.js b/tools/eslint/node_modules/shelljs/src/ls.js index 7f25056cd34d7a..bb1b6a7bdb9d53 100644 --- a/tools/eslint/node_modules/shelljs/src/ls.js +++ b/tools/eslint/node_modules/shelljs/src/ls.js @@ -3,12 +3,13 @@ var fs = require('fs'); var common = require('./common'); var glob = require('glob'); -var globPatternRecursive = path.sep + '**' + path.sep + '*'; +var globPatternRecursive = path.sep + '**'; common.register('ls', _ls, { cmdOptions: { 'R': 'recursive', 'A': 'all', + 'L': 'link', 'a': 'all_deprecated', 'd': 'directory', 'l': 'long', @@ -22,6 +23,7 @@ common.register('ls', _ls, { //@ //@ + `-R`: recursive //@ + `-A`: all files (include files beginning with `.`, except for `.` and `..`) +//@ + `-L`: follow symlinks //@ + `-d`: list directories themselves, not their contents //@ + `-l`: list objects representing each file, each with fields containing `ls //@ -l` output fields. See @@ -60,7 +62,7 @@ function _ls(options, paths) { relName = relName.replace(/\\/g, '/'); } if (options.long) { - stat = stat || fs.lstatSync(abs); + stat = stat || (options.link ? fs.statSync(abs) : fs.lstatSync(abs)); list.push(addLsAttributes(relName, stat)); } else { // list.push(path.relative(rel || '.', file)); @@ -72,7 +74,7 @@ function _ls(options, paths) { var stat; try { - stat = fs.lstatSync(p); + stat = options.link ? fs.statSync(p) : fs.lstatSync(p); } catch (e) { common.error('no such file or directory: ' + p, 2, { continue: true }); return; @@ -82,9 +84,12 @@ function _ls(options, paths) { if (stat.isDirectory() && !options.directory) { if (options.recursive) { // use glob, because it's simple - glob.sync(p + globPatternRecursive, { dot: options.all }) + glob.sync(p + globPatternRecursive, { dot: options.all, follow: options.link }) .forEach(function (item) { - pushFile(item, path.relative(p, item)); + // Glob pattern returns the directory itself and needs to be filtered out. + if (path.relative(p, item)) { + pushFile(item, path.relative(p, item)); + } }); } else if (options.all) { // use fs.readdirSync, because it's fast diff --git a/tools/eslint/node_modules/shelljs/src/mkdir.js b/tools/eslint/node_modules/shelljs/src/mkdir.js index f211bc89b3fbaf..115f75ca48fb22 100644 --- a/tools/eslint/node_modules/shelljs/src/mkdir.js +++ b/tools/eslint/node_modules/shelljs/src/mkdir.js @@ -75,7 +75,7 @@ function _mkdir(options, dirs) { try { if (options.fullpath) { - mkdirSyncRecursive(dir); + mkdirSyncRecursive(path.resolve(dir)); } else { fs.mkdirSync(dir, parseInt('0777', 8)); } @@ -83,6 +83,7 @@ function _mkdir(options, dirs) { if (e.code === 'EACCES') { common.error('cannot create directory ' + dir + ': Permission denied'); } else { + /* istanbul ignore next */ throw e; } } diff --git a/tools/eslint/node_modules/shelljs/src/mv.js b/tools/eslint/node_modules/shelljs/src/mv.js index c09bbbc76903c6..7fc7cf04c438f2 100644 --- a/tools/eslint/node_modules/shelljs/src/mv.js +++ b/tools/eslint/node_modules/shelljs/src/mv.js @@ -38,6 +38,7 @@ function _mv(options, sources, dest) { } else if (typeof sources === 'string') { sources = [sources]; } else { + // TODO(nate): figure out if we actually need this line common.error('invalid arguments'); } @@ -82,9 +83,12 @@ function _mv(options, sources, dest) { try { fs.renameSync(src, thisDest); } catch (e) { - if (e.code === 'EXDEV') { // external partition - // if either of these fails, the appropriate error message will bubble - // up to the top level automatically + /* istanbul ignore next */ + if (e.code === 'EXDEV') { + // If we're trying to `mv` to an external partition, we'll actually need + // to perform a copy and then clean up the original file. If either the + // copy or the rm fails with an exception, we should allow this + // exception to pass up to the top level. cp('-r', src, thisDest); rm('-rf', src); } diff --git a/tools/eslint/node_modules/shelljs/src/rm.js b/tools/eslint/node_modules/shelljs/src/rm.js index d6e484a085cfee..5953681143bce4 100644 --- a/tools/eslint/node_modules/shelljs/src/rm.js +++ b/tools/eslint/node_modules/shelljs/src/rm.js @@ -34,7 +34,10 @@ function rmdirSyncRecursive(dir, force) { try { common.unlinkSync(file); } catch (e) { - common.error('could not remove file (code ' + e.code + '): ' + file, { continue: true }); + /* istanbul ignore next */ + common.error('could not remove file (code ' + e.code + '): ' + file, { + continue: true, + }); } } } @@ -47,12 +50,15 @@ function rmdirSyncRecursive(dir, force) { try { // Retry on windows, sometimes it takes a little time before all the files in the directory are gone var start = Date.now(); - while (true) { + + // TODO: replace this with a finite loop + for (;;) { try { result = fs.rmdirSync(dir); if (fs.existsSync(dir)) throw { code: 'EAGAIN' }; break; } catch (er) { + /* istanbul ignore next */ // In addition to error codes, also check if the directory still exists and loop again if true if (process.platform === 'win32' && (er.code === 'ENOTEMPTY' || er.code === 'EBUSY' || er.code === 'EPERM' || er.code === 'EAGAIN')) { if (Date.now() - start > 1000) throw er; @@ -121,31 +127,22 @@ function _rm(options, files) { } // If here, path exists - if (stats.isFile() || stats.isSymbolicLink()) { - // Do not check for file writing permissions - if (options.force) { - common.unlinkSync(file); - return; - } - - if (isWriteable(file)) { + if (stats.isFile()) { + if (options.force || isWriteable(file)) { + // -f was passed, or file is writable, so it can be removed common.unlinkSync(file); } else { common.error('permission denied: ' + file, { continue: true }); } - - return; - } // simple file - - // Path is an existing directory, but no -r flag given - if (stats.isDirectory() && !options.recursive) { - common.error('path is a directory', { continue: true }); - return; // skip path - } - - // Recursively remove existing directory - if (stats.isDirectory() && options.recursive) { - rmdirSyncRecursive(file, options.force); + } else if (stats.isDirectory()) { + if (options.recursive) { + // -r was passed, so directory can be removed + rmdirSyncRecursive(file, options.force); + } else { + common.error('path is a directory', { continue: true }); + } + } else if (stats.isSymbolicLink() || stats.isFIFO()) { + common.unlinkSync(file); } }); // forEach(file) return ''; diff --git a/tools/eslint/node_modules/shelljs/src/sed.js b/tools/eslint/node_modules/shelljs/src/sed.js index 590ba74ffca2f7..dfdc0a74728991 100644 --- a/tools/eslint/node_modules/shelljs/src/sed.js +++ b/tools/eslint/node_modules/shelljs/src/sed.js @@ -25,6 +25,15 @@ common.register('sed', _sed, { //@ //@ Reads an input string from `files` and performs a JavaScript `replace()` on the input //@ using the given search regex and replacement string or function. Returns the new string after replacement. +//@ +//@ Note: +//@ +//@ Like unix `sed`, ShellJS `sed` supports capture groups. Capture groups are specified +//@ using the `$n` syntax: +//@ +//@ ```javascript +//@ sed(/(\w+)\s(\w+)/, '$2, $1', 'file.txt'); +//@ ``` function _sed(options, regex, replacement, files) { // Check if this is coming from a pipe var pipe = common.readFromPipe(); diff --git a/tools/eslint/node_modules/shelljs/src/set.js b/tools/eslint/node_modules/shelljs/src/set.js index 3402cd6609b06f..238e23e4ab8d54 100644 --- a/tools/eslint/node_modules/shelljs/src/set.js +++ b/tools/eslint/node_modules/shelljs/src/set.js @@ -34,7 +34,7 @@ function _set(options) { options = common.parseOptions(options, { 'e': 'fatal', 'v': 'verbose', - 'f': 'noglob' + 'f': 'noglob', }); if (negate) { diff --git a/tools/eslint/node_modules/shelljs/src/tempdir.js b/tools/eslint/node_modules/shelljs/src/tempdir.js index cfd56b3792e427..a2d15be36e0c97 100644 --- a/tools/eslint/node_modules/shelljs/src/tempdir.js +++ b/tools/eslint/node_modules/shelljs/src/tempdir.js @@ -19,6 +19,7 @@ function writeableDir(dir) { common.unlinkSync(testFile); return dir; } catch (e) { + /* istanbul ignore next */ return false; } } diff --git a/tools/eslint/node_modules/shelljs/src/test.js b/tools/eslint/node_modules/shelljs/src/test.js index 3fb38aec43992d..d3d9c07a0cd0c2 100644 --- a/tools/eslint/node_modules/shelljs/src/test.js +++ b/tools/eslint/node_modules/shelljs/src/test.js @@ -72,10 +72,13 @@ function _test(options, path) { if (options.file) return stats.isFile(); + /* istanbul ignore next */ if (options.pipe) return stats.isFIFO(); + /* istanbul ignore next */ if (options.socket) return stats.isSocket(); + /* istanbul ignore next */ return false; // fallback } // test module.exports = _test; diff --git a/tools/eslint/node_modules/shelljs/src/to.js b/tools/eslint/node_modules/shelljs/src/to.js index 99f194e687b460..d3d9e37be79eeb 100644 --- a/tools/eslint/node_modules/shelljs/src/to.js +++ b/tools/eslint/node_modules/shelljs/src/to.js @@ -30,6 +30,7 @@ function _to(options, file) { fs.writeFileSync(file, this.stdout || this.toString(), 'utf8'); return this; } catch (e) { + /* istanbul ignore next */ common.error('could not write to file (code ' + e.code + '): ' + file, { continue: true }); } } diff --git a/tools/eslint/node_modules/shelljs/src/toEnd.js b/tools/eslint/node_modules/shelljs/src/toEnd.js index cf91c9401c4ced..dc165fe8d8f9c6 100644 --- a/tools/eslint/node_modules/shelljs/src/toEnd.js +++ b/tools/eslint/node_modules/shelljs/src/toEnd.js @@ -29,6 +29,7 @@ function _toEnd(options, file) { fs.appendFileSync(file, this.stdout || this.toString(), 'utf8'); return this; } catch (e) { + /* istanbul ignore next */ common.error('could not append to file (code ' + e.code + '): ' + file, { continue: true }); } } diff --git a/tools/eslint/node_modules/shelljs/src/which.js b/tools/eslint/node_modules/shelljs/src/which.js index ef5d185eb0e462..03db57bcd96303 100644 --- a/tools/eslint/node_modules/shelljs/src/which.js +++ b/tools/eslint/node_modules/shelljs/src/which.js @@ -4,6 +4,9 @@ var path = require('path'); common.register('which', _which, { allowGlobbing: false, + cmdOptions: { + 'a': 'all', + }, }); // XP's system default value for PATHEXT system variable, just in case it's not @@ -12,13 +15,7 @@ var XP_DEFAULT_PATHEXT = '.com;.exe;.bat;.cmd;.vbs;.vbe;.js;.jse;.wsf;.wsh'; // Cross-platform method for splitting environment PATH variables function splitPath(p) { - if (!p) return []; - - if (common.platform === 'win') { - return p.split(';'); - } else { - return p.split(':'); - } + return p ? p.split(path.delimiter) : []; } function checkPath(pathName) { @@ -42,58 +39,60 @@ function _which(options, cmd) { var pathEnv = process.env.path || process.env.Path || process.env.PATH; var pathArray = splitPath(pathEnv); - var where = null; + + var queryMatches = []; // No relative/absolute paths provided? - if (cmd.search(/\//) === -1) { + if (cmd.indexOf('/') === -1) { + // Assume that there are no extensions to append to queries (this is the + // case for unix) + var pathExtArray = ['']; + if (common.platform === 'win') { + // In case the PATHEXT variable is somehow not set (e.g. + // child_process.spawn with an empty environment), use the XP default. + var pathExtEnv = process.env.PATHEXT || XP_DEFAULT_PATHEXT; + pathExtArray = splitPath(pathExtEnv.toUpperCase()); + } + // Search for command in PATH - pathArray.forEach(function (dir) { - if (where) return; // already found it + for (var k = 0; k < pathArray.length; k++) { + // already found it + if (queryMatches.length > 0 && !options.all) break; - var attempt = path.resolve(dir, cmd); + var attempt = path.resolve(pathArray[k], cmd); if (common.platform === 'win') { attempt = attempt.toUpperCase(); + } - // In case the PATHEXT variable is somehow not set (e.g. - // child_process.spawn with an empty environment), use the XP default. - var pathExtEnv = process.env.PATHEXT || XP_DEFAULT_PATHEXT; - var pathExtArray = splitPath(pathExtEnv.toUpperCase()); - var i; - - // If the extension is already in PATHEXT, just return that. - for (i = 0; i < pathExtArray.length; i++) { - var ext = pathExtArray[i]; - if (attempt.slice(-ext.length) === ext && checkPath(attempt)) { - where = attempt; - return; - } + var match = attempt.match(/\.[^<>:"/\|?*.]+$/); + if (match && pathExtArray.indexOf(match[0]) >= 0) { // this is Windows-only + // The user typed a query with the file extension, like + // `which('node.exe')` + if (checkPath(attempt)) { + queryMatches.push(attempt); + break; } - - // Cycle through the PATHEXT variable - var baseAttempt = attempt; - for (i = 0; i < pathExtArray.length; i++) { - attempt = baseAttempt + pathExtArray[i]; - if (checkPath(attempt)) { - where = attempt; - return; + } else { // All-platforms + // Cycle through the PATHEXT array, and check each extension + // Note: the array is always [''] on Unix + for (var i = 0; i < pathExtArray.length; i++) { + var ext = pathExtArray[i]; + var newAttempt = attempt + ext; + if (checkPath(newAttempt)) { + queryMatches.push(newAttempt); + break; } } - } else { - // Assume it's Unix-like - if (checkPath(attempt)) { - where = attempt; - return; - } } - }); + } + } else if (checkPath(cmd)) { // a valid absolute or relative path + queryMatches.push(path.resolve(cmd)); } - // Command not found anywhere? - if (!checkPath(cmd) && !where) return null; - - where = where || path.resolve(cmd); - - return where; + if (queryMatches.length > 0) { + return options.all ? queryMatches : queryMatches[0]; + } + return options.all ? [] : null; } module.exports = _which; diff --git a/tools/eslint/package.json b/tools/eslint/package.json index d6c8d488cb5dfa..fdda056a970317 100644 --- a/tools/eslint/package.json +++ b/tools/eslint/package.json @@ -2,25 +2,25 @@ "_args": [ [ { - "raw": "eslint@3.13.0", + "raw": "eslint", "scope": null, "escapedName": "eslint", "name": "eslint", - "rawSpec": "3.13.0", - "spec": "3.13.0", - "type": "version" + "rawSpec": "", + "spec": "latest", + "type": "tag" }, "/Users/trott/io.js/tools" ] ], - "_from": "eslint@3.13.0", - "_id": "eslint@3.13.0", + "_from": "eslint@latest", + "_id": "eslint@3.19.0", "_inCache": true, "_location": "/eslint", "_nodeVersion": "4.4.7", "_npmOperationalInternal": { - "host": "packages-12-west.internal.npmjs.com", - "tmp": "tmp/eslint-3.13.0.tgz_1483735229408_0.023912116652354598" + "host": "packages-18-east.internal.npmjs.com", + "tmp": "tmp/eslint-3.19.0.tgz_1490990727935_0.47129299701191485" }, "_npmUser": { "name": "eslint", @@ -29,21 +29,21 @@ "_npmVersion": "2.15.8", "_phantomChildren": {}, "_requested": { - "raw": "eslint@3.13.0", + "raw": "eslint", "scope": null, "escapedName": "eslint", "name": "eslint", - "rawSpec": "3.13.0", - "spec": "3.13.0", - "type": "version" + "rawSpec": "", + "spec": "latest", + "type": "tag" }, "_requiredBy": [ "#USER" ], - "_resolved": "https://registry.npmjs.org/eslint/-/eslint-3.13.0.tgz", - "_shasum": "636925fd163c9babe2e8be7ae43caf518d469577", + "_resolved": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz", + "_shasum": "c8fc6201c7f40dd08941b87c085767386a679acc", "_shrinkwrap": null, - "_spec": "eslint@3.13.0", + "_spec": "eslint", "_where": "/Users/trott/io.js/tools", "author": { "name": "Nicholas C. Zakas", @@ -58,11 +58,12 @@ "dependencies": { "babel-code-frame": "^6.16.0", "chalk": "^1.1.3", - "concat-stream": "^1.4.6", + "concat-stream": "^1.5.2", "debug": "^2.1.1", - "doctrine": "^1.2.2", + "doctrine": "^2.0.0", "escope": "^3.6.0", - "espree": "^3.3.1", + "espree": "^3.4.0", + "esquery": "^1.0.0", "estraverse": "^4.2.0", "esutils": "^2.0.2", "file-entry-cache": "^2.0.0", @@ -93,48 +94,47 @@ }, "description": "An AST-based pattern checker for JavaScript.", "devDependencies": { - "babel-polyfill": "^6.9.1", - "babel-preset-es2015": "^6.9.0", + "babel-polyfill": "^6.23.0", + "babel-preset-es2015": "^6.24.0", "babelify": "^7.3.0", - "beefy": "^2.0.0", - "brfs": "0.0.9", - "browserify": "^12.0.1", + "beefy": "^2.1.8", + "brfs": "1.4.3", + "browserify": "^14.1.0", "chai": "^3.5.0", - "cheerio": "^0.19.0", - "coveralls": "2.11.4", - "dateformat": "^1.0.8", - "ejs": "^2.3.3", - "eslint-plugin-node": "^2.0.0", - "eslint-release": "^0.10.0", - "esprima": "^2.4.1", + "cheerio": "^0.22.0", + "coveralls": "^2.12.0", + "dateformat": "^2.0.0", + "ejs": "^2.5.6", + "eslint-plugin-eslint-plugin": "^0.7.1", + "eslint-plugin-node": "^4.2.1", + "eslint-release": "^0.10.1", + "esprima": "^3.1.3", "esprima-fb": "^15001.1001.0-dev-harmony-fb", - "gh-got": "^2.2.0", - "istanbul": "^0.4.0", - "jsdoc": "^3.3.0-beta1", - "karma": "^0.13.22", + "istanbul": "^0.4.5", + "jsdoc": "^3.4.3", + "karma": "^1.5.0", "karma-babel-preprocessor": "^6.0.1", - "karma-mocha": "^1.0.1", - "karma-mocha-reporter": "^2.0.3", - "karma-phantomjs-launcher": "^1.0.0", - "leche": "^2.1.1", - "linefix": "^0.1.1", + "karma-mocha": "^1.3.0", + "karma-mocha-reporter": "^2.2.2", + "karma-phantomjs-launcher": "^1.0.4", + "leche": "^2.1.2", "load-perf": "^0.2.0", - "markdownlint": "^0.3.1", - "mocha": "^2.4.5", - "mock-fs": "^3.12.1", - "npm-license": "^0.3.2", - "phantomjs-prebuilt": "^2.1.7", - "proxyquire": "^1.7.10", - "semver": "^5.0.3", - "shelljs-nodecli": "~0.1.0", - "sinon": "^1.17.2", + "markdownlint": "^0.4.0", + "mocha": "^3.2.0", + "mock-fs": "^4.2.0", + "npm-license": "^0.3.3", + "phantomjs-prebuilt": "^2.1.14", + "proxyquire": "^1.7.11", + "semver": "^5.3.0", + "shelljs-nodecli": "~0.1.1", + "sinon": "^2.0.0", "temp": "^0.8.3", - "through": "^2.3.6" + "through": "^2.3.8" }, "directories": {}, "dist": { - "shasum": "636925fd163c9babe2e8be7ae43caf518d469577", - "tarball": "https://registry.npmjs.org/eslint/-/eslint-3.13.0.tgz" + "shasum": "c8fc6201c7f40dd08941b87c085767386a679acc", + "tarball": "https://registry.npmjs.org/eslint/-/eslint-3.19.0.tgz" }, "engines": { "node": ">=4" @@ -147,7 +147,7 @@ "lib", "messages" ], - "gitHead": "8571ab82af1d86bf4aa6a9be79ece42493607c69", + "gitHead": "421aab44a9c167c82210bed52f68cf990b7edbea", "homepage": "http://eslint.org", "keywords": [ "ast", @@ -194,5 +194,5 @@ "release": "node Makefile.js release", "test": "node Makefile.js test" }, - "version": "3.13.0" + "version": "3.19.0" } diff --git a/tools/icu/icu-generic.gyp b/tools/icu/icu-generic.gyp index cf615717e8089a..b3231acd4a76fe 100644 --- a/tools/icu/icu-generic.gyp +++ b/tools/icu/icu-generic.gyp @@ -228,6 +228,7 @@ 'actions': [ { 'action_name': 'icudata', + 'msvs_quote_cmd': 0, 'inputs': [ '<(icu_data_in)' ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.obj' ], 'action': [ '<(PRODUCT_DIR)/genccode', @@ -247,11 +248,12 @@ { # trim down ICU 'action_name': 'icutrim', + 'msvs_quote_cmd': 0, 'inputs': [ '<(icu_data_in)', 'icu_small.json' ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icutmp/icudt<(icu_ver_major)<(icu_endianness).dat' ], 'action': [ 'python', 'icutrim.py', - '-P', '../../<(CONFIGURATION_NAME)', + '-P', '<(PRODUCT_DIR)/.', # '.' suffix is a workaround against GYP assumptions :( '-D', '<(icu_data_in)', '--delete-tmp', '-T', '<(SHARED_INTERMEDIATE_DIR)/icutmp', @@ -263,9 +265,10 @@ { # build final .dat -> .obj 'action_name': 'genccode', + 'msvs_quote_cmd': 0, 'inputs': [ '<(SHARED_INTERMEDIATE_DIR)/icutmp/icudt<(icu_ver_major)<(icu_endianness).dat' ], 'outputs': [ '<(SHARED_INTERMEDIATE_DIR)/icudt<(icu_ver_major)<(icu_endianness)_dat.obj' ], - 'action': [ '../../<(CONFIGURATION_NAME)/genccode', + 'action': [ '<(PRODUCT_DIR)/genccode', '-o', '-d', '<(SHARED_INTERMEDIATE_DIR)/', '-n', 'icudata', diff --git a/tools/icu/iculslocs.cc b/tools/icu/iculslocs.cc index 2471e3f8583011..05c1747a31e163 100644 --- a/tools/icu/iculslocs.cc +++ b/tools/icu/iculslocs.cc @@ -55,6 +55,7 @@ Japanese, it doesn't *claim* to have Japanese. #include #include #include +#include const char* PROG = "iculslocs"; const char* NAME = U_ICUDATA_NAME; // assume ICU data diff --git a/tools/install.py b/tools/install.py index d1100352c6a413..ea55c19ff41fe4 100755 --- a/tools/install.py +++ b/tools/install.py @@ -133,6 +133,8 @@ def files(action): action(['src/node.stp'], 'share/systemtap/tapset/') action(['deps/v8/tools/gdbinit'], 'share/doc/node/') + action(['deps/v8/tools/lldbinit'], 'share/doc/node/') + action(['deps/v8/tools/lldb_commands.py'], 'share/doc/node/') if 'freebsd' in sys.platform or 'openbsd' in sys.platform: action(['doc/node.1'], 'man/man1/') diff --git a/tools/test.py b/tools/test.py index d6715937b60da3..ff9ba7cbc49172 100755 --- a/tools/test.py +++ b/tools/test.py @@ -616,7 +616,6 @@ def RunProcess(context, timeout, args, **rest): pty_out = rest.pop('pty_out') process = subprocess.Popen( - shell = utils.IsWindows(), args = popen_args, **rest ) @@ -891,14 +890,12 @@ def GetVm(self, arch, mode): # http://code.google.com/p/gyp/issues/detail?id=40 # It will put the builds into Release/node.exe or Debug/node.exe if utils.IsWindows(): - out_dir = os.path.join(dirname(__file__), "..", "out") - if not exists(out_dir): - if mode == 'debug': - name = os.path.abspath('Debug/node.exe') - else: - name = os.path.abspath('Release/node.exe') - else: - name = os.path.abspath(name + '.exe') + if not exists(name + '.exe'): + name = name.replace('out/', '') + name = os.path.abspath(name + '.exe') + + if not exists(name): + raise ValueError('Could not find executable. Should be ' + name) return name